diff options
Diffstat (limited to 'ptp-convert-class-code-to-use-dev_groups.patch')
| -rw-r--r-- | ptp-convert-class-code-to-use-dev_groups.patch | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/ptp-convert-class-code-to-use-dev_groups.patch b/ptp-convert-class-code-to-use-dev_groups.patch new file mode 100644 index 00000000000000..181426831d3ee9 --- /dev/null +++ b/ptp-convert-class-code-to-use-dev_groups.patch @@ -0,0 +1,109 @@ +From foo@baz Tue Jul 9 15:17:24 PDT 2013 +Date: Tue, 09 Jul 2013 15:17:24 -0700 +To: Greg KH <gregkh@linuxfoundation.org> +From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> +Subject: 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. + +Cc: Richard Cochran <richardcochran@gmail.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> + +--- + drivers/ptp/ptp_clock.c | 2 - + drivers/ptp/ptp_private.h | 2 - + drivers/ptp/ptp_sysfs.c | 51 ++++++++++++++++++++++++++-------------------- + 3 files changed, 31 insertions(+), 24 deletions(-) + +--- a/drivers/ptp/ptp_clock.c ++++ b/drivers/ptp/ptp_clock.c +@@ -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; + +--- a/drivers/ptp/ptp_private.h ++++ b/drivers/ptp/ptp_private.h +@@ -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); + +--- a/drivers/ptp/ptp_sysfs.c ++++ b/drivers/ptp/ptp_sysfs.c +@@ -27,36 +27,43 @@ static ssize_t clock_name_show(struct de + 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); \ +-} ++ return snprintf(page, PAGE_SIZE-1, "%d\n", ptp->info->var); \ ++} \ ++static DEVICE_ATTR(name, 0444, var##_show, NULL); + +-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); +- +-#define PTP_RO_ATTR(_var, _name) { \ +- .attr = { .name = __stringify(_name), .mode = 0444 }, \ +- .show = _var##_show, \ +-} ++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, ++}; + +-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, ++static const struct attribute_group ptp_group = { ++ .attrs = ptp_attrs, + }; + ++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) |
