[U-Boot] [PATCH 2/2] Tegra: MMC: Add DT support to MMCdriverforall T20 boards

Marc Dietrich
2013-02-05T20:54:23Z

Tom,

On Tuesday 05 February 2013 13:41:21 Tom Warren wrote:
> Marc,
>
> On Tue, Feb 5, 2013 at 1:06 PM, Marc Dietrich <marvin24@gmx.de> wrote:
> > On Tuesday 05 February 2013 08:31:03 Tom Warren wrote:
> >> Marc,
> >>
> >> On Tue, Feb 5, 2013 at 2:28 AM, Marc Dietrich <marvin24@gmx.de> wrote:
> >> >> [...]
> >> >>
> >> >> 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);
> >> >
> >> > This looks wrong because the sd is on sdmmc0
> >> >
> >> >> - 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);
> >> >
> >> > and the emmc on sdmmc3. The DTS is correct.
> >> >
> >> > Not your fault as it seems to be wrong in the original code already.
> >> > I guess it didn't made large difference but may in the future. I wonder
> >> > how to test this though.
> >> >
> >> > Marc
> >>
> >> OK, so just the comments are wrong in paz00.c - I can fix that if I
> >> have to do a V2 patchset, or when I apply the patches to u-boot-tegra.
> >
> > ah no, this is weird!
> >
> > index 3 maps to sdmmc1
> > index 2 maps to sdmmc2
> > index 1 maps to sdmmc3
> > index 0 maps to sdmmc4
> >
> > so all is fine, nearly ...
> >
> >> As to testing, just stop at the command prompt and select each device
> >> (mmc dev 0, etc.) and run mmcinfo. You should be able to tell from the
> >> data displayed whether you are on an SD-card or eMMC chip. You can
> >> also eject the SD-card and you should get a warning about card
> >> presence due to the CD GPIO.
> >
> > the sd card is not detected because:
> >
> > TEGRA20
> > Board: Compal Paz00
> > DRAM: 512 MiB
> > MMC: tegra_get_setup: dev_index = 0
> > tegra_get_setup: count of nodes is 2
> > tegra_get_setup: found controller at c8000600, width = 8, periph_id = 15
> > tegra_mmc_init: index 0, bus width 8 pwr_gpio -1 cd_gpio -1
> > tegra_mmc_init: bus width = 8
> > tegra_get_setup: dev_index = 3
> > tegra_get_setup: count of nodes is 2
> > tegra_get_setup: device index 3 exceeds node count (2)!
> >
> > If I understand correctly, you are counting the aliases only, not the
> > controllers..., so index 3 (the sdcard) is not initialized at all. Arrr,
> > debugging stole all of my time, but I guess this needs fixing.
>
> Yep, I am checking the aliases to get a node count (just like the
> Tegra SPI, SLINK, and I2C drivers, and the Exynos SPI and S3C I2C
> drivers).
>
> I left the Paz00 tegra_mmc_init(3) call the same as originally (w/o
> the width and GPIO params, of course). The device numbering is kind of
> arbitrary - if there are only 2 MMC devices present, I'd expect dev 0
> to be eMMC and dev 1 to be SD (again, like my T20 reference board,
> Seaboard). I don't see that Paz uses mmc anywhere in its config files
> for a boot script - does it have to have mmc dev 3 be SD? or would dev
> 1 work? Note that the tegra20-common-post.h file that all T20 boards
> inherit uses dev 0 and dev 1.

U-boot scans all devices during boot, so no need to specify a specific one. I
think what Stephen is suggesting is the right way. Forget all this dev ids and
let the device tree control everything. The aliases can be used for enumbering
if someone really needs it.

> Let me look into it - wish I had a Paz00 board here to debug with.
> I'll try to simulate this on my Seaboard, maybe with all 4 MMC device
> addresses in the alias.

He, if you ever come to old Europe, there are still some shops selling
them ;-)

Marc