From: Stephen Warren <swarren@wwwdotorg.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 2/2] Tegra: MMC: Add DT support to MMC driver for all T20 boards
Date: Tue, 12 Feb 2013 13:13:35 -0700 [thread overview]
Message-ID: <511AA26F.8090904@wwwdotorg.org> (raw)
In-Reply-To: <CAPnjgZ3hpCA=k92qjmSVA=r-v48EM2CF-gnxiJgduuS6JA0AVA@mail.gmail.com>
On 02/12/2013 11:07 AM, Simon Glass wrote:
> Hi,
>
> On Tue, Feb 5, 2013 at 1:02 PM, Tom Warren <twarren.nvidia@gmail.com> wrote:
>> Stephen,
>>
>> On Tue, Feb 5, 2013 at 1:03 PM, Stephen Warren <swarren@wwwdotorg.org> wrote:
>>> On 02/04/2013 04:48 PM, Tom Warren wrote:
>>>> tegra_mmc_init() now uses DT info for bus width, WP/CD GPIOs, etc.
>>>> Tested on Seaboard, fully functional.
>>>
>>>> diff --git a/board/compal/paz00/paz00.c b/board/compal/paz00/paz00.c
>>>> index 1447f47..5cee91a 100644
>>>> --- a/board/compal/paz00/paz00.c
>>>> +++ b/board/compal/paz00/paz00.c
>>>> @@ -55,18 +55,18 @@ static void pin_mux_mmc(void)
>>>> /* this is a weak define that we are overriding */
>>>> int board_mmc_init(bd_t *bd)
>>>> {
>>>> - debug("board_mmc_init called\n");
>>>> + debug("%s called\n", __func__);
>>>>
>>>> /* Enable muxes, etc. for SDMMC controllers */
>>>> pin_mux_mmc();
>>>>
>>>> - debug("board_mmc_init: init eMMC\n");
>>>> - /* init dev 0, eMMC chip, with 8-bit bus */
>>>> - tegra_mmc_init(0, 8, -1, -1);
>>>> + debug("%s: init eMMC\n", __func__);
>>>> + /* init dev 0, eMMC chip */
>>>> + tegra_mmc_init(0);
>>>>
>>>> - debug("board_mmc_init: init SD slot\n");
>>>> - /* init dev 3, SD slot, with 4-bit bus */
>>>> - tegra_mmc_init(3, 4, GPIO_PV1, GPIO_PV5);
>>>> + debug("%s: init SD slot\n", __func__);
>>>> + /* init dev 3, SD slot */
>>>> + tegra_mmc_init(3);
>>>>
>>>> return 0;
>>>> }
>>>
>>> That doesn't look right. The board code still has knowledge of which
>>> SDHCI controllers are in use by the board. Instead, the board should
>>> just call tegra_mmc_init() with no parameters at all, and the MMC driver
>>> should scan the device tree for all present-and-enabled SDHCI nodes, and
>>> instantiate a U-Boot SDHCI device. Without this, the device tree isn't
>>> in control of the whole process, so there's little point doing the
>>> conversion; a new board couldn't be supported /just/ by creating a new
>>> device tree file.
>>>
>>>> diff --git a/drivers/mmc/tegra_mmc.c b/drivers/mmc/tegra_mmc.c
>>>
>>>> +#ifndef CONFIG_OF_CONTROL
>>>> +#error "Please enable device tree support to use this driver"
>>>> +#endif
>>>
>>> So CONFIG_OF_CONTROL must be enabled ...
>>>
>>>>
>>>> static void tegra_get_setup(struct mmc_host *host, int dev_index)
>>>> {
>>>> - debug("tegra_get_setup: dev_index = %d\n", dev_index);
>>>> + debug("%s: dev_index = %d\n", __func__, dev_index);
>>>> +
>>>> +#ifdef CONFIG_OF_CONTROL
>>>
>>> ... so there's no need for that ifdef
>>
>> I took Allen's recent SPI/SLINK driver(s) as an example, but as you
>> point out, if CONFIG_OF_CONTROL isn't enabled, you get build errors
>> anyway.
>>
>>>
>>>> + int count, node = 0;
>>>> + int node_list[MAX_HOSTS];
>>>> +
>>>> + count = fdtdec_find_aliases_for_id(gd->fdt_blob, "sdmmc",
>>>> + COMPAT_NVIDIA_TEGRA20_SDMMC, node_list, MAX_HOSTS);
>>>> + debug("%s: count of nodes is %d\n", __func__, count);
>>>> +
>>>> + if (count < dev_index) {
>>>> + printf("%s: device index %d exceeds node count (%d)!\n",
>>>> + __func__, dev_index, count);
>>>> + return;
>>>> + }
>>>
>>> This requires that an alias exist in order for the SDHCI node to be
>>> found/processed. This isn't correct; the SDHCI nodes must be enumerated
>>> themselves, and then the aliases (if any are present) provide a naming
>>> hint for them, but even without aliases, the SDHCI nodes must be processed.
>>
>> Again, I used Allen's SLINK driver for as a template here. In fact, it
>> looks like our I2C and SPI/SLINK drivers do this, as well as the
>> Exynos SPI and S3C24x0 I2C driver all do this. Can you point out a
>> U-Boot driver that does it the right way (preferably with more than 1
>> node, like MMC)? I can take a look at that code to use as an example
>> of what you're proposing above.
>
> You have it correct already. Stephen please take another look and let
> me know what problem you see with this approach. I'm very sorry that I
> am so late to this discussion.
Could you explain how this works then? The code I looked at (a) was
driven by board files not DT enumerationk (b) errored out if no alias ID
was present.
But given there's a V2, I'll go look at that and check again.
next prev parent reply other threads:[~2013-02-12 20:13 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-04 23:48 [U-Boot] [PATCH 0/2] Tegra: MMC: Add DT support for MMC to T20 boards Tom Warren
2013-02-04 23:48 ` [U-Boot] [PATCH 1/2] Tegra: fdt: Add/enhance sdhci (mmc) nodes for all T20 DT files Tom Warren
2013-02-05 19:54 ` Stephen Warren
2013-02-05 20:29 ` Tom Warren
2013-02-05 20:49 ` Stephen Warren
2013-02-06 4:56 ` Simon Glass
2013-02-11 19:48 ` Scott Wood
2013-02-04 23:48 ` [U-Boot] [PATCH 2/2] Tegra: MMC: Add DT support to MMC driver for all T20 boards Tom Warren
2013-02-05 9:28 ` [U-Boot] [PATCH 2/2] Tegra: MMC: Add DT support to MMC driver forall " Marc Dietrich
2013-02-05 15:31 ` Tom Warren
2013-02-05 20:06 ` [U-Boot] [PATCH 2/2] Tegra: MMC: Add DT support to MMC driverforall " Marc Dietrich
2013-02-05 20:41 ` Tom Warren
2013-02-05 20:51 ` Stephen Warren
2013-02-05 20:54 ` [U-Boot] [PATCH 2/2] Tegra: MMC: Add DT support to MMCdriverforall " Marc Dietrich
2013-02-05 21:26 ` Tom Warren
2013-02-05 20:03 ` [U-Boot] [PATCH 2/2] Tegra: MMC: Add DT support to MMC driver for all " Stephen Warren
2013-02-05 21:02 ` Tom Warren
2013-02-05 23:51 ` Stephen Warren
2013-02-12 18:07 ` Simon Glass
2013-02-12 19:05 ` Tom Warren
2013-02-12 19:08 ` Simon Glass
2013-02-12 20:13 ` Stephen Warren [this message]
2013-02-12 22:34 ` Simon Glass
2013-02-12 18:05 ` Simon Glass
2013-02-05 0:02 ` [U-Boot] [PATCH 0/2] Tegra: MMC: Add DT support for MMC to " Tom Warren
2013-02-05 10:21 ` Thierry Reding
2013-02-05 15:31 ` Tom Warren
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=511AA26F.8090904@wwwdotorg.org \
--to=swarren@wwwdotorg.org \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.