PCI: portdrv: remove unnecessary struct pcie_port_data
authorKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Wed, 25 Nov 2009 12:06:15 +0000 (21:06 +0900)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Fri, 4 Dec 2009 23:56:19 +0000 (15:56 -0800)
Remove 'port_type' field in struct pcie_port_data(), because we can
get port type information from struct pci_dev. With this change, this
patch also does followings:

 - Remove struct pcie_port_data because it no longer has any field.
 - Remove portdrv private definitions about port type (PCIE_RC_PORT,
   PCIE_SW_UPSTREAM_PORT and PCIE_SW_DOWNSTREAM_PORT), and use generic
   definitions instead.

Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
drivers/pci/pcie/aer/aerdrv.c
drivers/pci/pcie/aer/aerdrv_core.c
drivers/pci/pcie/portdrv_bus.c
drivers/pci/pcie/portdrv_core.c
include/linux/pcieport_if.h

index 6d30e79..97a3459 100644 (file)
@@ -53,7 +53,7 @@ static struct pci_error_handlers aer_error_handlers = {
 
 static struct pcie_port_service_driver aerdriver = {
        .name           = "aer",
-       .port_type      = PCIE_RC_PORT,
+       .port_type      = PCI_EXP_TYPE_ROOT_PORT,
        .service        = PCIE_PORT_SERVICE_AER,
 
        .probe          = aer_probe,
index 5391a9b..2fbbcee 100644 (file)
@@ -123,9 +123,9 @@ static int set_device_error_reporting(struct pci_dev *dev, void *data)
 {
        bool enable = *((bool *)data);
 
-       if (dev->pcie_type == PCIE_RC_PORT ||
-           dev->pcie_type == PCIE_SW_UPSTREAM_PORT ||
-           dev->pcie_type == PCIE_SW_DOWNSTREAM_PORT) {
+       if ((dev->pcie_type == PCI_EXP_TYPE_ROOT_PORT) ||
+           (dev->pcie_type == PCI_EXP_TYPE_UPSTREAM) ||
+           (dev->pcie_type == PCI_EXP_TYPE_DOWNSTREAM)) {
                if (enable)
                        pci_enable_pcie_error_reporting(dev);
                else
@@ -437,10 +437,9 @@ static int find_aer_service_iter(struct device *device, void *data)
        result = (struct find_aer_service_data *) data;
 
        if (device->bus == &pcie_port_bus_type) {
-               struct pcie_port_data *port_data;
+               struct pcie_device *pcie = to_pcie_device(device);
 
-               port_data = pci_get_drvdata(to_pcie_device(device)->port);
-               if (port_data->port_type == PCIE_SW_DOWNSTREAM_PORT)
+               if (pcie->port->pcie_type == PCI_EXP_TYPE_DOWNSTREAM)
                        result->is_downstream = 1;
 
                driver = device->driver;
index ef3a4ee..18bf90f 100644 (file)
@@ -26,7 +26,6 @@ EXPORT_SYMBOL_GPL(pcie_port_bus_type);
 static int pcie_port_bus_match(struct device *dev, struct device_driver *drv)
 {
        struct pcie_device *pciedev;
-       struct pcie_port_data *port_data;
        struct pcie_port_service_driver *driver;
 
        if (drv->bus != &pcie_port_bus_type || dev->bus != &pcie_port_bus_type)
@@ -38,10 +37,8 @@ static int pcie_port_bus_match(struct device *dev, struct device_driver *drv)
        if (driver->service != pciedev->service)
                return 0;
 
-       port_data = pci_get_drvdata(pciedev->port);
-
-       if (driver->port_type != PCIE_ANY_PORT
-            && driver->port_type != port_data->port_type)
+       if ((driver->port_type != PCIE_ANY_PORT) &&
+           (driver->port_type != pciedev->port->pcie_type))
                return 0;
 
        return 1;
index 758e3d3..9318b96 100644 (file)
@@ -296,7 +296,6 @@ static int pcie_device_init(struct pci_dev *pdev, int service, int irq)
  */
 int pcie_port_device_register(struct pci_dev *dev)
 {
-       struct pcie_port_data *port_data;
        int status, capabilities, i, nr_service;
        int irqs[PCIE_PORT_DEVICE_MAXSERVICES];
 
@@ -305,17 +304,10 @@ int pcie_port_device_register(struct pci_dev *dev)
        if (!capabilities)
                return -ENODEV;
 
-       /* Allocate driver data for port device */
-       port_data = kzalloc(sizeof(*port_data), GFP_KERNEL);
-       if (!port_data)
-               return -ENOMEM;
-       port_data->port_type = dev->pcie_type;
-       pci_set_drvdata(dev, port_data);
-
        /* Enable PCI Express port device */
        status = pci_enable_device(dev);
        if (status)
-               goto error_kfree;
+               return status;
        pci_set_master(dev);
        /*
         * Initialize service irqs. Don't use service devices that
@@ -347,8 +339,6 @@ error_cleanup_irqs:
        cleanup_service_irqs(dev);
 error_disable:
        pci_disable_device(dev);
-error_kfree:
-       kfree(port_data);
        return status;
 }
 
@@ -416,12 +406,9 @@ static int remove_iter(struct device *dev, void *data)
  */
 void pcie_port_device_remove(struct pci_dev *dev)
 {
-       struct pcie_port_data *port_data = pci_get_drvdata(dev);
-
        device_for_each_child(&dev->dev, NULL, remove_iter);
        cleanup_service_irqs(dev);
        pci_disable_device(dev);
-       kfree(port_data);
 }
 
 /**
index ec2e1eb..6775532 100644 (file)
 #define _PCIEPORT_IF_H_
 
 /* Port Type */
-#define PCIE_RC_PORT                   4       /* Root port of RC */
-#define PCIE_SW_UPSTREAM_PORT          5       /* Upstream port of Switch */
-#define PCIE_SW_DOWNSTREAM_PORT                6       /* Downstream port of Switch */
-#define PCIE_ANY_PORT                  7
+#define PCIE_ANY_PORT                  (~0)
 
 /* Service Type */
 #define PCIE_PORT_SERVICE_PME_SHIFT    0       /* Power Management Event */
 #define PCIE_PORT_SERVICE_VC_SHIFT     3       /* Virtual Channel */
 #define PCIE_PORT_SERVICE_VC           (1 << PCIE_PORT_SERVICE_VC_SHIFT)
 
-struct pcie_port_data {
-       int port_type;          /* Type of the port */
-};
-
 struct pcie_device {
        int             irq;        /* Service IRQ/MSI/MSI-X Vector */
        struct pci_dev *port;       /* Root/Upstream/Downstream Port */