Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bfb09a86 authored by Konstantin Khlebnikov's avatar Konstantin Khlebnikov Committed by Bjorn Helgaas
Browse files

PCI: Convert "new_id"/"remove_id" into generic pci_bus driver attributes



This patch removes hardcoded sysfs attributes manipulation and
converts them into generic pci_bus->drv_attrs. This saves several bytes.

Signed-off-by: default avatarKonstantin Khlebnikov <khlebnikov@openvz.org>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
parent 55d512e2
Loading
Loading
Loading
Loading
+10 −47
Original line number Diff line number Diff line
@@ -139,7 +139,6 @@ store_new_id(struct device_driver *driver, const char *buf, size_t count)
		return retval;
	return count;
}
static DRIVER_ATTR(new_id, S_IWUSR, NULL, store_new_id);

/**
 * store_remove_id - remove a PCI device ID from this driver
@@ -185,38 +184,16 @@ store_remove_id(struct device_driver *driver, const char *buf, size_t count)
		return retval;
	return count;
}
static DRIVER_ATTR(remove_id, S_IWUSR, NULL, store_remove_id);

static int
pci_create_newid_files(struct pci_driver *drv)
{
	int error = 0;

	if (drv->probe != NULL) {
		error = driver_create_file(&drv->driver, &driver_attr_new_id);
		if (error == 0) {
			error = driver_create_file(&drv->driver,
					&driver_attr_remove_id);
			if (error)
				driver_remove_file(&drv->driver,
						&driver_attr_new_id);
		}
	}
	return error;
}
static struct driver_attribute pci_drv_attrs[] = {
	__ATTR(new_id, S_IWUSR, NULL, store_new_id),
	__ATTR(remove_id, S_IWUSR, NULL, store_remove_id),
	__ATTR_NULL,
};

static void pci_remove_newid_files(struct pci_driver *drv)
{
	driver_remove_file(&drv->driver, &driver_attr_remove_id);
	driver_remove_file(&drv->driver, &driver_attr_new_id);
}
#else /* !CONFIG_HOTPLUG */
static inline int pci_create_newid_files(struct pci_driver *drv)
{
	return 0;
}
static inline void pci_remove_newid_files(struct pci_driver *drv) {}
#endif
#else
#define pci_drv_attrs	NULL
#endif /* CONFIG_HOTPLUG */

/**
 * pci_match_id - See if a pci device matches a given pci_id table
@@ -1162,8 +1139,6 @@ const struct dev_pm_ops pci_dev_pm_ops = {
int __pci_register_driver(struct pci_driver *drv, struct module *owner,
			  const char *mod_name)
{
	int error;

	/* initialize common driver fields */
	drv->driver.name = drv->name;
	drv->driver.bus = &pci_bus_type;
@@ -1174,19 +1149,7 @@ int __pci_register_driver(struct pci_driver *drv, struct module *owner,
	INIT_LIST_HEAD(&drv->dynids.list);

	/* register with core */
	error = driver_register(&drv->driver);
	if (error)
		goto out;

	error = pci_create_newid_files(drv);
	if (error)
		goto out_newid;
out:
	return error;

out_newid:
	driver_unregister(&drv->driver);
	goto out;
	return driver_register(&drv->driver);
}

/**
@@ -1202,7 +1165,6 @@ out_newid:
void
pci_unregister_driver(struct pci_driver *drv)
{
	pci_remove_newid_files(drv);
	driver_unregister(&drv->driver);
	pci_free_dynids(drv);
}
@@ -1302,6 +1264,7 @@ struct bus_type pci_bus_type = {
	.shutdown	= pci_device_shutdown,
	.dev_attrs	= pci_dev_attrs,
	.bus_attrs	= pci_bus_attrs,
	.drv_attrs	= pci_drv_attrs,
	.pm		= PCI_PM_OPS_PTR,
};