Hi, Haojian The vendor need to have an override or develop a brand new one if their SD/MMC HCs don't follow SD/MMC specs.
EDKII core drivers follow standard spec. Thanks Feng -----Original Message----- From: Haojian Zhuang [mailto:[email protected]] Sent: Friday, July 22, 2016 10:40 AM To: Tian, Feng <[email protected]>; Ard Biesheuvel <[email protected]>; Charles Garcia-Tobin <[email protected]> Cc: edk2-devel-01 <[email protected]> Subject: Re: [edk2] [PATCH] EmmcBlockIo: fix to get CSD data Hi Feng, I have to say that lots of SD controllers are not compatible to SDHC, too. Just look at $Linux/drivers/mmc/host. And too many vendors are using Designware eMMC/SD controller IP, like Samsung, ST, Hisilicon, ZTE, Rockchip, Altera, and so on. If the eMMC/SD stack only supports SDHC, it'll only benefit a few vendors. And it also means that vendors need to create different eMMC/SD stack to do the same thing. Best Regards Haojian 在 07/22/2016 08:56 AM, Tian, Feng 写道: > Hi, Haojian > > JEDEC org doesn't have a eMMC host controller spec. most of eMMC h/c vendors > just reuse the SD host controller spec defined by SD Association. Of course > there are also some variants on eMMC host controller IP which doesn't follow > SD host controller spec perfectly. > > The intention of EDKII SD/MMC stack is to cover those HCs/Devices following > standard SD/MMC specs. For your Designware case, You would have to have an > override version as it doesn't follow SD/MMC specs. > > Thanks > Feng > > -----Original Message----- > From: edk2-devel [mailto:[email protected]] On Behalf Of > Haojian Zhuang > Sent: Thursday, July 21, 2016 9:40 PM > To: Ard Biesheuvel <[email protected]>; Charles Garcia-Tobin > <[email protected]> > Cc: edk2-devel-01 <[email protected]> > Subject: Re: [edk2] [PATCH] EmmcBlockIo: fix to get CSD data > > On 2016/7/21 19:24, Ard Biesheuvel wrote: >> On 21 July 2016 at 13:17, Haojian Zhuang <[email protected]> wrote: >>> On 2016/7/21 9:52, Haojian Zhuang wrote: >>>> >>>> >>>> 在 07/21/2016 09:51 AM, Haojian Zhuang 写道: >>>>> Hi Feng, >>>>> >>>>> I think the main difference is who to handle the CRC bits. In the >>>>> designware emmc/sd controller, the whole 128-bit value is loaded >>>>> into the four response registers. There's no any shift on the >>>>> 128-bit value to remove CRC. (Refer to: drivers/mmc/host/dw_mmc.c). >>>> >>>> I mean the implementation in linux. >>>> $Linux/drivers/mmc/host/dw_mmc.c >>>> >>>>> In the eMMC spec, it only mentions R2 response in table. >>>>> >>>>> Bit position [127:1] >>>>> Width (bits) 127 >>>>> Value x >>>>> Description CID or CSD register incl. >>>>> internal CRC7 It also doesn't mention >>>>> that we need to shift response value for CSD register. >>>>> >>>>> So I did this fixing patch. I think that shifting isn't common to >>>>> support all eMMC/SD controller IP. Without this patch, the eMMC >>>>> stack will only get shifted CSD register value. >>>>> It results in parse error. >>> >>> As I checked the SDHC driver in linux, there's the same logic as you >>> implemented in EmmcDxe. >>> >>> Now the question is whether EmmcDxe is designed for common code of >>> all vendor's IP. If so, we need to provide a GetCsd() callback to >>> handle different implementations for different vendor. Do you mind >>> that I append the GetCsd() callback in EFI_SD_MMC_PASS_THRU_PROTOCOL to fix >>> this issue? >>> >> Unfortunately, you cannot simply add methods to protocols that are >> defined by the UEFI spec. If the passthru protocol is lacking in >> functionality, we should work with the UEFI forum to get it amended. > > OK. Maybe we can do the same thing by another way. Now only SDHC needs > to > > shift data for CSD register. We could parse EMMC_CID by EmmcGetCid() > in > EmmcGetCsd() > > function. What's your opinion? > > > Best Regards > > Haojian > > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

