[U-Boot] [PATCH v7 02/19] nand: mxc: Add support for i.MX5

Benoît Thébaudeau
2013-02-26T16:49:20Z

Hi Fabio,

On Tuesday, February 26, 2013 5:35:28 PM, Fabio Estevam wrote:
> On Tue, Feb 26, 2013 at 1:08 PM, Beno?t Th?baudeau
> <benoit.thebaudeau@advansee.com> wrote:
>
> > This boot pin / fuse config has been used by this driver for all i.MX
> > platforms
> > from the beginning. I don't think that we really need one more software
> > config
> > here. This is hardware stuff, and the i.MX provides a dedicated hardware
> > configuration for it, so I think that we should use it, even if it's made
> > for
> > NAND boot, since it's just describing the present hardware, just like DT
> > would.
> >
> > In the particular case of the mx53ard, there is a DIP switch that you can
> > use to
> > fix this config to 8-bit NAND Flash. But if you have blown the fuses to
> > override
> > the boot pin config, then of course we're doomed because a wrong NAND Flash
> > config has been blow.
>
> The boot config jumpers are correctly set to boot from MMC card and
> this is what I am using as the boot media.

OK, then we don't have a choice.

> Why should we decide the NAND width via boot pins if I am not booting
> from NAND at all?
>
> I see that current mxc nand drivers are doing like this, but I don't
> think this makes sense if we use NAND and does not boot from it.

If the NAND boot config for bus width is not used by the actuel boot config to
mean something else (which is not your case), then it's a handy way of
describing the NAND hardware setup without involving software. But anyway we're
not in this case, so we need a software config.

> I agree with this comment from tt01.h:
>
> "/*
> * it's not 16 bit:
> * #define CONFIG_SYS_NAND_BUSWIDTH_16BIT
> * the current u-boot mxc_nand.c tries to auto-detect, but this only
> * reads the boot settings during reset (which might be wrong)
> */"
>
> and we can also see the a workaround at board/davedenx/qong/qong.c in
> order to tell the nand bus width is 8 bits:
>
> void qong_nand_plat_init(void *chip)
> {
> struct nand_chip *nand = (struct nand_chip *)chip;
> nand->chip_delay = 20;
> nand->select_chip = qong_nand_select_chip;
> nand->options &= ~NAND_BUSWIDTH_16;
> board_nand_setup();
> }

OK, then let's use something like CONFIG_SYS_NAND_BUSWIDTH_16BIT for all boards
with mxc_nand enabled.

Best regards,
Beno?t