Commit 694f88ef authored by Kenji Kaneshige's avatar Kenji Kaneshige Committed by Jesse Barnes
Browse files

PCI: portdrv: remove unnecessary struct pcie_port_data



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: default avatarKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
parent 40717c39
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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,
+5 −6
Original line number Diff line number Diff line
@@ -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;
+2 −5
Original line number Diff line number Diff line
@@ -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;
+1 −14
Original line number Diff line number Diff line
@@ -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);
}

/**
+1 −8
Original line number Diff line number Diff line
@@ -10,10 +10,7 @@
#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 */
@@ -25,10 +22,6 @@
#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 */