Hi Feng, > You may misunderstand what I meant. Sorry for that.
Indeed, we understood that introducing new PCD is a main problem. > > At first, the SD_MMC_PASS_THRU protocol is defined by UEFI spec, you couldn't > change its interfaces. > > Secondly, the transfer mode judgement should be done at SdMmcPciHcDxe driver. > This way could avoid introducing a new interface like you proposed. And we > have done this at SdMmcCreateTrb(). (You can search Trb->Mode key word to > find out the place). > > Thirdly, I suppose your PIO mode doesn't work as I didn't add PIO full > support. As we mentioned, we have our own pass_thru and dxe driver, based on generic ones and PIO mode works fine both for SD and EMMC. I thought DMA support is enough (of course now the assumption doesn't meet your requirement). I only force to do PIO for clock tuning cmd. So you would have to update the logic in SdMmcExecTrb() to support PIO mode. > 1. line 1272 to line 1276 of SdMmcCreateTrb() to assign PIO mode for your > cmds besides clock tuning cmd. > 2. line 1815 to line 1839 of SdMmcCheckTrbResult() to read data till all > blocks get read out. (see SD Host controller spec 3.0 figure 3-13) > > Last, I am not sure why SetBlockLen() and StopTransmission() are needed for > multiple block r/w. we always use 512 block size, and looks like we should > use CMD12 or CMD23 for SD card to stop transmission whatever it's in DMA or > PIO. Am I right? Thanks for the hints above, they will be checked. The best solution would be fixing dma support in our driver, so that PIO-related changes are not needed. We will try both and update. This won't be instant, but if the patches 1 and 2 are fine and could be accepted, how about doing it and keeping PIO-ones aside for now, until we find a solution? Best regards, Marcin _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

