[U-Boot] [PATCH] powerpc/esdhc: force the bus width to 4bit
Lukasz Majewski
l.majewski at samsung.com
Tue Oct 30 18:35:41 CET 2012
Hi Jaehoon,
> On 10/23/2012 06:50 PM, Marek Vasut wrote:
> > Dear Huang Changming-R66093,
> >
> >> Best Regards
> >> Jerry Huang
> >>
> >>> -----Original Message-----
> >>> From: Marek Vasut [mailto:marex at denx.de]
> >>> Sent: Tuesday, October 23, 2012 3:24 PM
> >>> To: Huang Changming-R66093
> >>> Cc: u-boot at lists.denx.de; Andy Fleming
> >>> Subject: Re: [PATCH] powerpc/esdhc: force the bus width to 4bit
> >>>
> >>> Dear Chang-Ming.Huang at freescale.com,
> >>>
> >>>> From: Jerry Huang <Chang-Ming.Huang at freescale.com>
> >>>>
> >>>> 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.
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