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
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel