On 2016/7/21 11:23, Tian, Feng wrote:
Hi, Haojian

If there is no PCI bus, you could implement a fake one. Just like what we did 
at edk2\Omap35xxPkg\PciEmulation. Through this way, you can reuse SdMmcPciHc 
driver.

For your questions:
1. The EDKII SD/MMC stack (SdMmcPciHc plus SdDxe and EmmcDxe) is used to manage all SD & 
MMC host controllers & cards. Each SD & MMC host controller would be installed a 
EFI_SD_MMC_PASS_THRU_PROTOCOL instance. We distinguish the card types by identification process 
defined in SD & EMMC spec. after that, we will install different device paths through which 
upper layer could distinguish them.

For SD host controller, the device path is Pci(x, x)\Sd(x). for EMMC host controller, the 
device path is Pci(x, x)\EMMC(x)\Ctrl(x). why we appended a Ctrl(x) device node to EMMC device 
path is because EMMC device has many partitions (User Data Area, BOOT1&2, 
GP1&2&3&4, RPMB). We use Ctrl(x) to distinguish the partitions. But SD is different 
story, it has no partitions, so we just produce Pci(x, x)\Sd(x) to distinguish different SD HCs 
if they exist.

Hi Feng,

I think that we're talking about two different concepts on partitions.

In your eMMC device path, "Ctrl(z)" of "Pci(x,x)\Emmc(y)\Ctrl(z)" means the partition is one of RPMB, User Data Area, BOOT1&2, and so on. In my case, I use User Data Area. So the device node is "Emmc(0)\Ctrl(0)". My question is using partitions on the User Data Area. For example, we could either deploy MBR or GPT on the User Data Area. For this case, how to write the device path? If I set it "Emmc(0)\Ctrl(0)\HD(5,GPT,xxx)", is it valid?

Best Regards
Haojian
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to