forked from luck/tmp_suning_uos_patched
PCI: endpoint: Create configfs entry for EPC device and EPF driver
Invoke APIs provided by pci-ep-cfs to create configfs entry for every EPC device and EPF driver to help users in creating EPF device and binding the EPF device to the EPC device. Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
parent
bea37d3d31
commit
3a401a2ce1
|
@ -24,6 +24,7 @@
|
|||
|
||||
#include <linux/pci-epc.h>
|
||||
#include <linux/pci-epf.h>
|
||||
#include <linux/pci-ep-cfs.h>
|
||||
|
||||
static struct class *pci_epc_class;
|
||||
|
||||
|
@ -442,6 +443,7 @@ EXPORT_SYMBOL_GPL(pci_epc_linkup);
|
|||
*/
|
||||
void pci_epc_destroy(struct pci_epc *epc)
|
||||
{
|
||||
pci_ep_cfs_remove_epc_group(epc->group);
|
||||
device_unregister(&epc->dev);
|
||||
kfree(epc);
|
||||
}
|
||||
|
@ -508,6 +510,8 @@ __pci_epc_create(struct device *dev, const struct pci_epc_ops *ops,
|
|||
if (ret)
|
||||
goto put_dev;
|
||||
|
||||
epc->group = pci_ep_cfs_add_epc_group(dev_name(dev));
|
||||
|
||||
return epc;
|
||||
|
||||
put_dev:
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
#include <linux/pci-epc.h>
|
||||
#include <linux/pci-epf.h>
|
||||
#include <linux/pci-ep-cfs.h>
|
||||
|
||||
static struct bus_type pci_epf_bus_type;
|
||||
static struct device_type pci_epf_type;
|
||||
|
@ -149,6 +150,7 @@ EXPORT_SYMBOL_GPL(pci_epf_alloc_space);
|
|||
*/
|
||||
void pci_epf_unregister_driver(struct pci_epf_driver *driver)
|
||||
{
|
||||
pci_ep_cfs_remove_epf_group(driver->group);
|
||||
driver_unregister(&driver->driver);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pci_epf_unregister_driver);
|
||||
|
@ -178,6 +180,8 @@ int __pci_epf_register_driver(struct pci_epf_driver *driver,
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
driver->group = pci_ep_cfs_add_epf_group(driver->driver.name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(__pci_epf_register_driver);
|
||||
|
|
|
@ -77,6 +77,7 @@ struct pci_epc_mem {
|
|||
* @ops: function pointers for performing endpoint operations
|
||||
* @mem: address space of the endpoint controller
|
||||
* @max_functions: max number of functions that can be configured in this EPC
|
||||
* @group: configfs group representing the PCI EPC device
|
||||
* @lock: spinlock to protect pci_epc ops
|
||||
*/
|
||||
struct pci_epc {
|
||||
|
@ -85,6 +86,7 @@ struct pci_epc {
|
|||
const struct pci_epc_ops *ops;
|
||||
struct pci_epc_mem *mem;
|
||||
u8 max_functions;
|
||||
struct config_group *group;
|
||||
/* spinlock to protect against concurrent access of EP controller */
|
||||
spinlock_t lock;
|
||||
};
|
||||
|
|
|
@ -82,6 +82,7 @@ struct pci_epf_ops {
|
|||
* @driver: PCI EPF driver
|
||||
* @ops: set of function pointers for performing EPF operations
|
||||
* @owner: the owner of the module that registers the PCI EPF driver
|
||||
* @group: configfs group corresponding to the PCI EPF driver
|
||||
* @id_table: identifies EPF devices for probing
|
||||
*/
|
||||
struct pci_epf_driver {
|
||||
|
@ -91,6 +92,7 @@ struct pci_epf_driver {
|
|||
struct device_driver driver;
|
||||
struct pci_epf_ops *ops;
|
||||
struct module *owner;
|
||||
struct config_group *group;
|
||||
const struct pci_epf_device_id *id_table;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user