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

Commit 367601fc authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

PPC: VIO: convert bus code to use bus_groups



The bus_attrs field of struct bus_type is going away soon, dev_groups
should be used instead.  This converts the VIO bus code to use the
correct field.

Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 3abd1362
Loading
Loading
Loading
Loading
+36 −30
Original line number Original line Diff line number Diff line
@@ -997,20 +997,35 @@ static struct device_attribute vio_cmo_dev_attrs[] = {
/* sysfs bus functions and data structures for CMO */
/* sysfs bus functions and data structures for CMO */


#define viobus_cmo_rd_attr(name)                                        \
#define viobus_cmo_rd_attr(name)                                        \
static ssize_t                                                          \
static ssize_t cmo_##name##_show(struct bus_type *bt, char *buf)        \
viobus_cmo_##name##_show(struct bus_type *bt, char *buf)                \
{                                                                       \
{                                                                       \
	return sprintf(buf, "%lu\n", vio_cmo.name);                     \
	return sprintf(buf, "%lu\n", vio_cmo.name);                     \
}
}                                                                       \
static BUS_ATTR_RO(cmo_##name)


#define viobus_cmo_pool_rd_attr(name, var)                              \
#define viobus_cmo_pool_rd_attr(name, var)                              \
static ssize_t                                                          \
static ssize_t                                                          \
viobus_cmo_##name##_pool_show_##var(struct bus_type *bt, char *buf)     \
cmo_##name##_##var##_show(struct bus_type *bt, char *buf)               \
{                                                                       \
{                                                                       \
	return sprintf(buf, "%lu\n", vio_cmo.name.var);                 \
	return sprintf(buf, "%lu\n", vio_cmo.name.var);                 \
}                                                                       \
static BUS_ATTR_RO(cmo_##name##_##var)

viobus_cmo_rd_attr(entitled);
viobus_cmo_rd_attr(spare);
viobus_cmo_rd_attr(min);
viobus_cmo_rd_attr(desired);
viobus_cmo_rd_attr(curr);
viobus_cmo_pool_rd_attr(reserve, size);
viobus_cmo_pool_rd_attr(excess, size);
viobus_cmo_pool_rd_attr(excess, free);

static ssize_t cmo_high_show(struct bus_type *bt, char *buf)
{
	return sprintf(buf, "%lu\n", vio_cmo.high);
}
}


static ssize_t viobus_cmo_high_reset(struct bus_type *bt, const char *buf,
static ssize_t cmo_high_store(struct bus_type *bt, const char *buf,
			      size_t count)
			      size_t count)
{
{
	unsigned long flags;
	unsigned long flags;
@@ -1021,35 +1036,26 @@ static ssize_t viobus_cmo_high_reset(struct bus_type *bt, const char *buf,


	return count;
	return count;
}
}

static BUS_ATTR_RW(cmo_high);
viobus_cmo_rd_attr(entitled);

viobus_cmo_pool_rd_attr(reserve, size);
static struct attribute *vio_bus_attrs[] = {
viobus_cmo_pool_rd_attr(excess, size);
	&bus_attr_cmo_entitled.attr,
viobus_cmo_pool_rd_attr(excess, free);
	&bus_attr_cmo_spare.attr,
viobus_cmo_rd_attr(spare);
	&bus_attr_cmo_min.attr,
viobus_cmo_rd_attr(min);
	&bus_attr_cmo_desired.attr,
viobus_cmo_rd_attr(desired);
	&bus_attr_cmo_curr.attr,
viobus_cmo_rd_attr(curr);
	&bus_attr_cmo_high.attr,
viobus_cmo_rd_attr(high);
	&bus_attr_cmo_reserve_size.attr,

	&bus_attr_cmo_excess_size.attr,
static struct bus_attribute vio_cmo_bus_attrs[] = {
	&bus_attr_cmo_excess_free.attr,
	__ATTR(cmo_entitled, S_IRUGO, viobus_cmo_entitled_show, NULL),
	NULL,
	__ATTR(cmo_reserve_size, S_IRUGO, viobus_cmo_reserve_pool_show_size, NULL),
	__ATTR(cmo_excess_size, S_IRUGO, viobus_cmo_excess_pool_show_size, NULL),
	__ATTR(cmo_excess_free, S_IRUGO, viobus_cmo_excess_pool_show_free, NULL),
	__ATTR(cmo_spare,   S_IRUGO, viobus_cmo_spare_show,   NULL),
	__ATTR(cmo_min,     S_IRUGO, viobus_cmo_min_show,     NULL),
	__ATTR(cmo_desired, S_IRUGO, viobus_cmo_desired_show, NULL),
	__ATTR(cmo_curr,    S_IRUGO, viobus_cmo_curr_show,    NULL),
	__ATTR(cmo_high,    S_IWUSR|S_IRUSR|S_IWGRP|S_IRGRP|S_IROTH,
	       viobus_cmo_high_show, viobus_cmo_high_reset),
	__ATTR_NULL
};
};
ATTRIBUTE_GROUPS(vio_bus);


static void vio_cmo_sysfs_init(void)
static void vio_cmo_sysfs_init(void)
{
{
	vio_bus_type.dev_attrs = vio_cmo_dev_attrs;
	vio_bus_type.dev_attrs = vio_cmo_dev_attrs;
	vio_bus_type.bus_attrs = vio_cmo_bus_attrs;
	vio_bus_type.bus_groups = vio_bus_groups;
}
}
#else /* CONFIG_PPC_SMLPAR */
#else /* CONFIG_PPC_SMLPAR */
int vio_cmo_entitlement_update(size_t new_entitlement) { return 0; }
int vio_cmo_entitlement_update(size_t new_entitlement) { return 0; }