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

Commit 3499116b authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

PTP: convert class code to use dev_groups



The dev_attrs field of struct class is going away soon, dev_groups
should be used instead.  This converts the ptp class code to use the
correct field.

Acked-by: default avatarRichard Cochran <richardcochran@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 5baa7503
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -330,7 +330,7 @@ static int __init ptp_init(void)
		goto no_region;
	}

	ptp_class->dev_attrs = ptp_dev_attrs;
	ptp_class->dev_groups = ptp_groups;
	pr_info("PTP clock support registered\n");
	return 0;

+1 −1
Original line number Diff line number Diff line
@@ -84,7 +84,7 @@ uint ptp_poll(struct posix_clock *pc,
 * see ptp_sysfs.c
 */

extern struct device_attribute ptp_dev_attrs[];
extern const struct attribute_group *ptp_groups[];

int ptp_cleanup_sysfs(struct ptp_clock *ptp);

+29 −22
Original line number Diff line number Diff line
@@ -27,36 +27,43 @@ static ssize_t clock_name_show(struct device *dev,
	struct ptp_clock *ptp = dev_get_drvdata(dev);
	return snprintf(page, PAGE_SIZE-1, "%s\n", ptp->info->name);
}
static DEVICE_ATTR(clock_name, 0444, clock_name_show, NULL);

#define PTP_SHOW_INT(name)						\
static ssize_t name##_show(struct device *dev,				\
#define PTP_SHOW_INT(name, var)						\
static ssize_t var##_show(struct device *dev,				\
			   struct device_attribute *attr, char *page)	\
{									\
	struct ptp_clock *ptp = dev_get_drvdata(dev);			\
	return snprintf(page, PAGE_SIZE-1, "%d\n", ptp->info->name);	\
}

PTP_SHOW_INT(max_adj);
PTP_SHOW_INT(n_alarm);
PTP_SHOW_INT(n_ext_ts);
PTP_SHOW_INT(n_per_out);
PTP_SHOW_INT(pps);
	return snprintf(page, PAGE_SIZE-1, "%d\n", ptp->info->var);	\
}									\
static DEVICE_ATTR(name, 0444, var##_show, NULL);

PTP_SHOW_INT(max_adjustment, max_adj);
PTP_SHOW_INT(n_alarms, n_alarm);
PTP_SHOW_INT(n_external_timestamps, n_ext_ts);
PTP_SHOW_INT(n_periodic_outputs, n_per_out);
PTP_SHOW_INT(pps_available, pps);

static struct attribute *ptp_attrs[] = {
	&dev_attr_clock_name.attr,
	&dev_attr_max_adjustment.attr,
	&dev_attr_n_alarms.attr,
	&dev_attr_n_external_timestamps.attr,
	&dev_attr_n_periodic_outputs.attr,
	&dev_attr_pps_available.attr,
	NULL,
};

#define PTP_RO_ATTR(_var, _name) {				\
	.attr	= { .name = __stringify(_name), .mode = 0444 },	\
	.show	= _var##_show,					\
}
static const struct attribute_group ptp_group = {
	.attrs = ptp_attrs,
};

struct device_attribute ptp_dev_attrs[] = {
	PTP_RO_ATTR(clock_name,	clock_name),
	PTP_RO_ATTR(max_adj,	max_adjustment),
	PTP_RO_ATTR(n_alarm,	n_alarms),
	PTP_RO_ATTR(n_ext_ts,	n_external_timestamps),
	PTP_RO_ATTR(n_per_out,	n_periodic_outputs),
	PTP_RO_ATTR(pps,	pps_available),
	__ATTR_NULL,
const struct attribute_group *ptp_groups[] = {
	&ptp_group,
	NULL,
};


static ssize_t extts_enable_store(struct device *dev,
				  struct device_attribute *attr,
				  const char *buf, size_t count)