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

Commit 93065d04 authored by Sebastian Ott's avatar Sebastian Ott Committed by Martin Schwidefsky
Browse files

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: default avatarGerald Schaefer <gerald.schaefer@de.ibm.com>
Signed-off-by: default avatarSebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent b346953d
Loading
Loading
Loading
Loading
+2 −4
Original line number Original line Diff line number Diff line
@@ -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);
+1 −5
Original line number Original line Diff line number Diff line
@@ -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++) {
+13 −31
Original line number Original line Diff line number Diff line
@@ -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]);
}