aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ptp
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-07-24 18:05:20 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-07-26 21:05:17 -0400
commit3499116b915e260b275c167a471e0e05bbe3f1d6 (patch)
treec5e7a9da815204b34141411ba621b49d2859112e /drivers/ptp
parent5baa7503a7a0b8d65308ff3b2ab887bf343c65d3 (diff)
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: Richard Cochran <richardcochran@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/ptp')
-rw-r--r--drivers/ptp/ptp_clock.c2
-rw-r--r--drivers/ptp/ptp_private.h2
-rw-r--r--drivers/ptp/ptp_sysfs.c51
3 files changed, 31 insertions, 24 deletions
diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c
index 4a8c388364ca..a8319b266643 100644
--- a/drivers/ptp/ptp_clock.c
+++ b/drivers/ptp/ptp_clock.c
@@ -330,7 +330,7 @@ static int __init ptp_init(void)
330 goto no_region; 330 goto no_region;
331 } 331 }
332 332
333 ptp_class->dev_attrs = ptp_dev_attrs; 333 ptp_class->dev_groups = ptp_groups;
334 pr_info("PTP clock support registered\n"); 334 pr_info("PTP clock support registered\n");
335 return 0; 335 return 0;
336 336
diff --git a/drivers/ptp/ptp_private.h b/drivers/ptp/ptp_private.h
index 69d32070cc65..df03f2e30ad9 100644
--- a/drivers/ptp/ptp_private.h
+++ b/drivers/ptp/ptp_private.h
@@ -84,7 +84,7 @@ uint ptp_poll(struct posix_clock *pc,
84 * see ptp_sysfs.c 84 * see ptp_sysfs.c
85 */ 85 */
86 86
87extern struct device_attribute ptp_dev_attrs[]; 87extern const struct attribute_group *ptp_groups[];
88 88
89int ptp_cleanup_sysfs(struct ptp_clock *ptp); 89int ptp_cleanup_sysfs(struct ptp_clock *ptp);
90 90
diff --git a/drivers/ptp/ptp_sysfs.c b/drivers/ptp/ptp_sysfs.c
index 2f93926ac976..13ec5311746a 100644
--- a/drivers/ptp/ptp_sysfs.c
+++ b/drivers/ptp/ptp_sysfs.c
@@ -27,36 +27,43 @@ static ssize_t clock_name_show(struct device *dev,
27 struct ptp_clock *ptp = dev_get_drvdata(dev); 27 struct ptp_clock *ptp = dev_get_drvdata(dev);
28 return snprintf(page, PAGE_SIZE-1, "%s\n", ptp->info->name); 28 return snprintf(page, PAGE_SIZE-1, "%s\n", ptp->info->name);
29} 29}
30static DEVICE_ATTR(clock_name, 0444, clock_name_show, NULL);
30 31
31#define PTP_SHOW_INT(name) \ 32#define PTP_SHOW_INT(name, var) \
32static ssize_t name##_show(struct device *dev, \ 33static ssize_t var##_show(struct device *dev, \
33 struct device_attribute *attr, char *page) \ 34 struct device_attribute *attr, char *page) \
34{ \ 35{ \
35 struct ptp_clock *ptp = dev_get_drvdata(dev); \ 36 struct ptp_clock *ptp = dev_get_drvdata(dev); \
36 return snprintf(page, PAGE_SIZE-1, "%d\n", ptp->info->name); \ 37 return snprintf(page, PAGE_SIZE-1, "%d\n", ptp->info->var); \
37} 38} \
38 39static DEVICE_ATTR(name, 0444, var##_show, NULL);
39PTP_SHOW_INT(max_adj); 40
40PTP_SHOW_INT(n_alarm); 41PTP_SHOW_INT(max_adjustment, max_adj);
41PTP_SHOW_INT(n_ext_ts); 42PTP_SHOW_INT(n_alarms, n_alarm);
42PTP_SHOW_INT(n_per_out); 43PTP_SHOW_INT(n_external_timestamps, n_ext_ts);
43PTP_SHOW_INT(pps); 44PTP_SHOW_INT(n_periodic_outputs, n_per_out);
45PTP_SHOW_INT(pps_available, pps);
46
47static struct attribute *ptp_attrs[] = {
48 &dev_attr_clock_name.attr,
49 &dev_attr_max_adjustment.attr,
50 &dev_attr_n_alarms.attr,
51 &dev_attr_n_external_timestamps.attr,
52 &dev_attr_n_periodic_outputs.attr,
53 &dev_attr_pps_available.attr,
54 NULL,
55};
44 56
45#define PTP_RO_ATTR(_var, _name) { \ 57static const struct attribute_group ptp_group = {
46 .attr = { .name = __stringify(_name), .mode = 0444 }, \ 58 .attrs = ptp_attrs,
47 .show = _var##_show, \ 59};
48}
49 60
50struct device_attribute ptp_dev_attrs[] = { 61const struct attribute_group *ptp_groups[] = {
51 PTP_RO_ATTR(clock_name, clock_name), 62 &ptp_group,
52 PTP_RO_ATTR(max_adj, max_adjustment), 63 NULL,
53 PTP_RO_ATTR(n_alarm, n_alarms),
54 PTP_RO_ATTR(n_ext_ts, n_external_timestamps),
55 PTP_RO_ATTR(n_per_out, n_periodic_outputs),
56 PTP_RO_ATTR(pps, pps_available),
57 __ATTR_NULL,
58}; 64};
59 65
66
60static ssize_t extts_enable_store(struct device *dev, 67static ssize_t extts_enable_store(struct device *dev,
61 struct device_attribute *attr, 68 struct device_attribute *attr,
62 const char *buf, size_t count) 69 const char *buf, size_t count)