Hi,


I was implementing "EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL" protocol for PCI 3.0 
controlller,

I have few more basic queries like:



(1)    In function:

EFI_STATUS

EFIAPI

RootBridgeIoMemWrite (

  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *This,

  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,

  IN     UINT64                                 Address,

  IN     UINTN                                  Count,

  IN     VOID                                   *Buffer

  );



The description says:

"Enables a PCI driver to access PCI controller registers in the PCI root bridge 
memory space.

   The Mem.Read(), and Mem.Write() functions enable a driver to access PCI 
controller

   registers in the PCI root bridge memory space."



What does this mean?



I thought that Mem.Read/Mem.Write means reading memory space that is 
kept/allocated to various memory devices.

But this description seems to say different.



(2)    Similarly

"Enables a PCI driver to access PCI controller registers in the PCI root bridge 
I/O space." For function:

EFI_STATUS

EFIAPI

RootBridgeIoIoRead (

  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *This,

  IN     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,

  IN     UINT64                                 UserAddress,

  IN     UINTN                                  Count,

  OUT    VOID                                   *UserBuffer

  );



What is this PCI root bridge I/O and Memory space?

As I have seen that these Mem.Read/mem.Write and Io.Read/Io.Write functions 
have been used by PCI Bus driver for reading "BarIndex" at various stages.
Aren't all BAR registers in PCI configuration space?

Kindly help in clearing these doubts.

Thanks and Regards,
Shaveta

------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to