aboutsummaryrefslogtreecommitdiffstats
path: root/ptp-convert-class-code-to-use-dev_groups.patch
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.patch109
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)