From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukasz Majewski Date: Wed, 31 Oct 2012 09:20:42 +0100 Subject: [U-Boot] [PATCH] powerpc/esdhc: force the bus width to 4bit In-Reply-To: <5090AE63.2040807@samsung.com> References: <1350973580-31726-1-git-send-email-Chang-Ming.Huang@freescale.com> <201210230924.28042.marex@denx.de> <110EED8CC96DFC488B7E717A2027A27C1C69C2@039-SN1MPN1-003.039d.mgd.msft.net> <201210231150.49779.marex@denx.de> <508F934C.5020705@samsung.com> <20121030183541.06766bf7@amdc308.digital.local> <5090AE63.2040807@samsung.com> Message-ID: <20121031092042.3e32d878@amdc308.digital.local> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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