From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jaehoon Chung Date: Thu, 06 Apr 2017 19:50:44 +0900 Subject: [U-Boot] [PATCH v1] mmc: sdhci: SDHCI controllers also need power In-Reply-To: <1491471989.24567.19.camel@linux.intel.com> References: <20170315182521.4359-1-andriy.shevchenko@linux.intel.com> <1490014266.19767.101.camel@linux.intel.com> <1491052273.708.95.camel@linux.intel.com> <1354bacc-4ad5-91c4-c3d1-0b28cdf09617@samsung.com> <1491471989.24567.19.camel@linux.intel.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 04/06/2017 06:46 PM, Andy Shevchenko wrote: > On Thu, 2017-04-06 at 18:24 +0900, Jaehoon Chung wrote: >> On 04/06/2017 05:51 PM, Andy Shevchenko wrote: >>> On Thu, Apr 6, 2017 at 6:44 AM, Simon Glass >>> wrote: >>>> On 1 April 2017 at 07:11, Andy Shevchenko >>>> wrote: >>>>> On Fri, 2017-03-31 at 22:24 -0600, Simon Glass wrote: >>>>>> On 20 March 2017 at 06:51, Andy Shevchenko >>>>>> wrote: >>>>>>> On Sun, 2017-03-19 at 20:30 -0600, Simon Glass wrote: >>>>>>>> On 15 March 2017 at 12:25, Andy Shevchenko >>>>>>>> wrote: >>>>>>>>> + board_mmc_power_init(); >>>>>>>> You should be using driver model for this >>>>>>>> (CONFIG_DM_MMC*). >>>>>>> >>>>>>> I didn't get this part. It's used by the driver >>>>>>> (tangier_sdhci) as >>>>>>> far >>>>>>> as I understand. >>>>> Oh, we are talking about host controller's power management >>>>> which is >>>>> done using PMU (power management unit) inside SoC. It's *not* a >>>>> power >>>>> regulator. >>>>> >>>>> Above is clearly about card power management, which we also have >>>>> (in >>>>> case of Wi-Fi), but it's not applicable for eMMC soldered on the >>>>> module. >>>> >>>> Still if the eMMC is soldered on, it needs power, right? What is >>>> the >>>> distinction? >>> >>> It's irrelevant to this patch and discussion. >>> >>>> In any case we cannot call board code from the driver with DM - >>>> it's >>>> just not how things work. So can you init it in your board_init() >>>> code >>>> perhaps, if you can't use a power driver? >>> >>> I didn't get this either. >>> >>> It means that PMU driver should *not* go with DM model then or what? >>> >>>>>>>> or do this in >>>>>>>> the board code. >>>>>>> >>>>>>> How? It's already board code that powers on the controller. >>>>>>> If you >>>>>>> look >>>>>>> at mmc_init() it does this. SDHCI on the other hand doesn't >>>>>>> which is >>>>>>> for >>>>>>> my opinion is a bug. Otherwise why is the difference between >>>>>>> initialization sequence of MMC and SHDCI controllers? >>>>>> >>>>>> There should not really be a different I think, except that >>>>>> with >>>>>> driver model we want to use drivers for power rather than >>>>>> hard-coding >>>>>> things in custom code. >>>>> >>>>> I totally agree with this, though since we have no clear PCI >>>>> implementation on that board (*) we can't have good described >>>>> PCI power >>>>> management for it. >>>>> >>>>> (*) It's called "fake PCI" meaning it mimics PCI programming >>>>> interface >>>>> while being not 100% compatible with PCI specification on >>>>> hardware and >>>>> firmware levels. >>>>> >>>>> So, for now I have been seeing no alternatives than my initial >>>>> approach, >>>>> though I'm all ears for better solution. >>>> Well you can create a regulator driver which has a single >>>> regulator to >>>> handle whatever needs doing to enable MMC power. >>> >>> No. It looks like you are mixing two power controls: card itself and >>> host controller. They are using quite different mechanisms to be >>> powered on. >>> We are talking here about *host* controller power flow. >>> >>> And still there is no clarification why MMC flow calls board code >>> and >>> on the other hand you made an objectiion to do the same for SDHCI. >>> >>> I still do not see better solution as mine initial one, otherwise >>> above question should be clarified first. >> >> how about mmc_power_init() is called in mmc_probe()? > > Yes, that's what I'm referring to. But the driver is pure SDHCI, it > doesn't call mmc_probe() IIRC. After converting to DM, it might have the dependent to probing sequence. I'm not sure that u-boot has the priority for probing. maybe not... hmm..need to consider this patch..but i will think about more generic solution.. Best Regards, Jaehoon Chung >