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

Commit 00d5bdd1 authored by Sebastian Ott's avatar Sebastian Ott Committed by Martin Schwidefsky
Browse files

s390/lcs: switch to ccwgroup_create_dev



Switch to the new ccwgroup_create_dev interface. Also wrap device
attributes in a struct device_type and let the driver core create
these attributes automagically.

Reviewed-by: default avatarCornelia Huck <cornelia.huck@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 20cdffa4
Loading
Loading
Loading
Loading
+17 −18
Original line number Diff line number Diff line
@@ -2051,10 +2051,17 @@ static struct attribute * lcs_attrs[] = {
	&dev_attr_recover.attr,
	NULL,
};

static struct attribute_group lcs_attr_group = {
	.attrs = lcs_attrs,
};
static const struct attribute_group *lcs_attr_groups[] = {
	&lcs_attr_group,
	NULL,
};
static const struct device_type lcs_devtype = {
	.name = "lcs",
	.groups = lcs_attr_groups,
};

/**
 * lcs_probe_device is called on establishing a new ccwgroup_device.
@@ -2063,7 +2070,6 @@ static int
lcs_probe_device(struct ccwgroup_device *ccwgdev)
{
	struct lcs_card *card;
	int ret;

	if (!get_device(&ccwgdev->dev))
		return -ENODEV;
@@ -2075,12 +2081,6 @@ lcs_probe_device(struct ccwgroup_device *ccwgdev)
		put_device(&ccwgdev->dev);
                return -ENOMEM;
        }
	ret = sysfs_create_group(&ccwgdev->dev.kobj, &lcs_attr_group);
	if (ret) {
		lcs_free_card(card);
		put_device(&ccwgdev->dev);
		return ret;
        }
	dev_set_drvdata(&ccwgdev->dev, card);
	ccwgdev->cdev[0]->handler = lcs_irq;
	ccwgdev->cdev[1]->handler = lcs_irq;
@@ -2089,6 +2089,8 @@ lcs_probe_device(struct ccwgroup_device *ccwgdev)
	card->thread_start_mask = 0;
	card->thread_allowed_mask = 0;
	card->thread_running_mask = 0;
	ccwgdev->dev.type = &lcs_devtype;

	return 0;
}

@@ -2323,9 +2325,9 @@ lcs_remove_device(struct ccwgroup_device *ccwgdev)
	}
	if (card->dev)
		unregister_netdev(card->dev);
	sysfs_remove_group(&ccwgdev->dev.kobj, &lcs_attr_group);
	lcs_cleanup_card(card);
	lcs_free_card(card);
	dev_set_drvdata(&ccwgdev->dev, NULL);
	put_device(&ccwgdev->dev);
}

@@ -2412,7 +2414,7 @@ static struct ccwgroup_driver lcs_group_driver = {
	},
	.max_slaves  = 2,
	.driver_id   = 0xD3C3E2,
	.probe       = lcs_probe_device,
	.setup	     = lcs_probe_device,
	.remove      = lcs_remove_device,
	.set_online  = lcs_new_device,
	.set_offline = lcs_shutdown_device,
@@ -2423,17 +2425,14 @@ static struct ccwgroup_driver lcs_group_driver = {
	.restore     = lcs_restore,
};

static ssize_t
lcs_driver_group_store(struct device_driver *ddrv, const char *buf,
		       size_t count)
static ssize_t lcs_driver_group_store(struct device_driver *ddrv,
				      const char *buf, size_t count)
{
	int err;
	err = ccwgroup_create_from_string(lcs_root_dev,
					  lcs_group_driver.driver_id,
					  &lcs_ccw_driver, 2, buf);
	err = ccwgroup_create_dev(lcs_root_dev, lcs_group_driver.driver_id,
				  &lcs_group_driver, 2, buf);
	return err ? err : count;
}

static DRIVER_ATTR(group, 0200, NULL, lcs_driver_group_store);

static struct attribute *lcs_group_attrs[] = {