Re: [PATCH v2 00/15] PCI: endpoint: Cleanup EPC features

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2019/1/14 19:14, Kishon Vijay Abraham I wrote:
Hi Lorenzo,

The Endpoint controller driver uses features member in 'struct pci_epc'
to advertise the list of supported features to the endpoint function
driver.

There are a few shortcomings with this approach.
   *) Certain endpoint controllers support fixed size BAR (e.g. TI's
      AM654 uses Designware configuration with fixed size BAR). The
      size of each BARs cannot be passed to the endpoint function
      driver.
   *) Too many macros for handling EPC features.
      (EPC_FEATURE_NO_LINKUP_NOTIFIER, EPC_FEATURE_BAR_MASK,
       EPC_FEATURE_MSIX_AVAILABLE, EPC_FEATURE_SET_BAR,
       EPC_FEATURE_GET_BAR)
   *) Endpoint controllers are directly modifying struct pci_epc
      members. (I have plans to move struct pci_epc to
      drivers/pci/endpoint so that pci_epc members are referenced
      only by endpoint core).

To overcome the above shortcomings, introduced pci_epc_get_features()
API, pci_epc_features structure and a ->get_features() callback.

Also added a patch to set BAR flags in pci_epf_alloc_space and
remove it from pci-epf-test function driver.

Changes from v1:
*) Fixed helper function to return '0' (or BAR_0) for any incorrect
    values in reserved BAR.
*) Do not set_bar or alloc space for BARs if the BARs are reserved
*) Fix incorrect check of epc_features in pci_epf_test_bind

Tested on TI's DRA7xx platform and AM654 platform. Support for PCIe
in AM654 platform will be posted shortly.



----8<-----

  drivers/pci/controller/pcie-rockchip-ep.c     | 16 +++-

Acked-by: Shawn Lin <shawn.lin@xxxxxxxxxxxxxx>






[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux