[U-Boot] [PATCH] powerpc/esdhc: force the bus width to 4bit

Lukasz Majewski l.majewski at samsung.com
Wed Oct 31 09:20:42 CET 2012


Hi Jaehoon,

> Hi, Lukasz,
> >>>>>> For the current u-boot codes, only 4bit/1bit SD/SDHC bus width
> >>>>>> is
> >>>>>
> >>>>> support.
> >>>>>
> >>>>>> So for MMC card, we also support 4bit bus width, otherwiase, we
> >>>>>> will
> >>>>>
> >>>>>> get the 12bit bus width, which is not correct:
> >>>>> Andy ... can you please explain? I don't quite understand the
> >>>>> problem, I thought we had no problem supporting 8bit mmc (esp.
> >>>>> if the controller handles that for us mostly).
> >>>>
> >>>> Yes, the controller support 8bit MMC.
> >>>>
> >>>> FSL ESDHC driver set the host_caps = MMC_MODE_4BIT |
> >>>> MMC_MODE_8BIT; But, the current codes for MMC card has been
> >>>> changed to:
> >>>>
> >>>> } else {
> >>>> 	width = ((mmc->host_caps & MMC_MODE_MASK_WIDTH_BITS) >>
> >>>>                          MMC_MODE_WIDTH_BITS_SHIFT);
> > 
> > Hmm... looks like it is code done by me :-)
> > So little explanation shall be given.
> > 
> > This code is necessary for some targets (like Samsung's Goni) which
> > can only support 4 bit MMC mode.
> > 
> >>>> 	for (; width >= 0; width--) {
> >>>> 	....
> >>>>
> >>>> So for FSL ESDHC, the width = 3, after implement mmc_switch
> >>>> successfully, will set the bus to 4 * width. Therefore, I will
> >>>> get the 12bit (4 x 3) bus width.
> >> This problem is MMC subsystem's bug.
> >> I think good that will modify the code in mmc.c.
> >> If caps is set to MMC_MODE_4BIT | MMC_MODE_8BIT,
> >> we can see the 12bit support with using "mmcinfo" command
> >>
> > 
> > The mmc_set_bus_width(mmc, 4 * width) in conjunction to above code
> > causes the problem.
> then how about using the width[idx] like kernel?

I don't mind :-) if it works at kernel.

> 
> Best Regards,
> Jaehoon Chung
> > 
> > I agree, that this code shall be refactored.
> > Lei, what do you think?
> > 
> > 
> >> Best Regards,
> >> Jaehoon Chung
> >>
> >>>>
> >>>> Below is the old codes (width = 2):
> >>>> } else {
> >>>>                 for (width = EXT_CSD_BUS_WIDTH_8; width >= 0;
> >>>> width--) {
> >>> [...]
> >>>
> >>>
> >>> Uh, so it's a bug in the MMC subsystem?
> >>> Best regards,
> >>> Marek Vasut
> >>> _______________________________________________
> >>> U-Boot mailing list
> >>> U-Boot at lists.denx.de
> >>> http://lists.denx.de/mailman/listinfo/u-boot
> >>>
> >>
> >> _______________________________________________
> >> U-Boot mailing list
> >> U-Boot at lists.denx.de
> >> http://lists.denx.de/mailman/listinfo/u-boot
> > 
> > 
> > 
> 



-- 
Best regards,

Lukasz Majewski

Samsung Poland R&D Center | Linux Platform Group


More information about the U-Boot mailing list