s390/pci: use pdev->dev.groups for attribute creation
Let the driver core handle attribute creation by putting all s390 specific pci attributes in an attribute group which is referenced by pdev->dev.groups in pcibios_add_device. Link: https://lkml.kernel.org/r/alpine.LFD.2.11.1404141101500.1529@denkbrett Reviewed-by: Gerald Schaefer <gerald.schaefer@de.ibm.com> Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
committed by
Martin Schwidefsky
parent
b346953dda
commit
93065d045a
@@ -120,6 +120,8 @@ static inline bool zdev_enabled(struct zpci_dev *zdev)
|
|||||||
return (zdev->fh & (1UL << 31)) ? true : false;
|
return (zdev->fh & (1UL << 31)) ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern const struct attribute_group *zpci_attr_groups[];
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
Prototypes
|
Prototypes
|
||||||
----------------------------------------------------------------------------- */
|
----------------------------------------------------------------------------- */
|
||||||
@@ -166,10 +168,6 @@ static inline void zpci_exit_slot(struct zpci_dev *zdev) {}
|
|||||||
struct zpci_dev *get_zdev(struct pci_dev *);
|
struct zpci_dev *get_zdev(struct pci_dev *);
|
||||||
struct zpci_dev *get_zdev_by_fid(u32);
|
struct zpci_dev *get_zdev_by_fid(u32);
|
||||||
|
|
||||||
/* sysfs */
|
|
||||||
int zpci_sysfs_add_device(struct device *);
|
|
||||||
void zpci_sysfs_remove_device(struct device *);
|
|
||||||
|
|
||||||
/* DMA */
|
/* DMA */
|
||||||
int zpci_dma_init(void);
|
int zpci_dma_init(void);
|
||||||
void zpci_dma_exit(void);
|
void zpci_dma_exit(void);
|
||||||
|
|||||||
@@ -530,11 +530,6 @@ static void zpci_unmap_resources(struct zpci_dev *zdev)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int pcibios_add_platform_entries(struct pci_dev *pdev)
|
|
||||||
{
|
|
||||||
return zpci_sysfs_add_device(&pdev->dev);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int __init zpci_irq_init(void)
|
static int __init zpci_irq_init(void)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
@@ -671,6 +666,7 @@ int pcibios_add_device(struct pci_dev *pdev)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
zdev->pdev = pdev;
|
zdev->pdev = pdev;
|
||||||
|
pdev->dev.groups = zpci_attr_groups;
|
||||||
zpci_map_resources(zdev);
|
zpci_map_resources(zdev);
|
||||||
|
|
||||||
for (i = 0; i < PCI_BAR_COUNT; i++) {
|
for (i = 0; i < PCI_BAR_COUNT; i++) {
|
||||||
|
|||||||
@@ -51,36 +51,18 @@ static ssize_t recover_store(struct device *dev, struct device_attribute *attr,
|
|||||||
}
|
}
|
||||||
static DEVICE_ATTR_WO(recover);
|
static DEVICE_ATTR_WO(recover);
|
||||||
|
|
||||||
static struct device_attribute *zpci_dev_attrs[] = {
|
static struct attribute *zpci_dev_attrs[] = {
|
||||||
&dev_attr_function_id,
|
&dev_attr_function_id.attr,
|
||||||
&dev_attr_function_handle,
|
&dev_attr_function_handle.attr,
|
||||||
&dev_attr_pchid,
|
&dev_attr_pchid.attr,
|
||||||
&dev_attr_pfgid,
|
&dev_attr_pfgid.attr,
|
||||||
&dev_attr_recover,
|
&dev_attr_recover.attr,
|
||||||
|
NULL,
|
||||||
|
};
|
||||||
|
static struct attribute_group zpci_attr_group = {
|
||||||
|
.attrs = zpci_dev_attrs,
|
||||||
|
};
|
||||||
|
const struct attribute_group *zpci_attr_groups[] = {
|
||||||
|
&zpci_attr_group,
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
int zpci_sysfs_add_device(struct device *dev)
|
|
||||||
{
|
|
||||||
int i, rc = 0;
|
|
||||||
|
|
||||||
for (i = 0; zpci_dev_attrs[i]; i++) {
|
|
||||||
rc = device_create_file(dev, zpci_dev_attrs[i]);
|
|
||||||
if (rc)
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
error:
|
|
||||||
while (--i >= 0)
|
|
||||||
device_remove_file(dev, zpci_dev_attrs[i]);
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
||||||
void zpci_sysfs_remove_device(struct device *dev)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; zpci_dev_attrs[i]; i++)
|
|
||||||
device_remove_file(dev, zpci_dev_attrs[i]);
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user