aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2015-10-03 09:32:44 -0400
committerNicholas Bellinger <nab@linux-iscsi.org>2015-10-14 01:14:40 -0400
commit3755a273db8f523f8be6c18df9e1506faa93c664 (patch)
tree080866d14b56ee8a3e1dff7b3c66c37537780075
parent75ab2256a7d05128f8aa088cdde961d8029bcd55 (diff)
usb-gadget/f_midi: use per-attribute show and store methods
To simplify the configfs interface and remove boilerplate code that also causes binary bloat. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com> Acked-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
-rw-r--r--drivers/usb/gadget/function/f_midi.c37
1 files changed, 16 insertions, 21 deletions
diff --git a/drivers/usb/gadget/function/f_midi.c b/drivers/usb/gadget/function/f_midi.c
index a287a4829273..0e2b8eda254e 100644
--- a/drivers/usb/gadget/function/f_midi.c
+++ b/drivers/usb/gadget/function/f_midi.c
@@ -906,9 +906,6 @@ static inline struct f_midi_opts *to_f_midi_opts(struct config_item *item)
906 func_inst.group); 906 func_inst.group);
907} 907}
908 908
909CONFIGFS_ATTR_STRUCT(f_midi_opts);
910CONFIGFS_ATTR_OPS(f_midi_opts);
911
912static void midi_attr_release(struct config_item *item) 909static void midi_attr_release(struct config_item *item)
913{ 910{
914 struct f_midi_opts *opts = to_f_midi_opts(item); 911 struct f_midi_opts *opts = to_f_midi_opts(item);
@@ -918,13 +915,12 @@ static void midi_attr_release(struct config_item *item)
918 915
919static struct configfs_item_operations midi_item_ops = { 916static struct configfs_item_operations midi_item_ops = {
920 .release = midi_attr_release, 917 .release = midi_attr_release,
921 .show_attribute = f_midi_opts_attr_show,
922 .store_attribute = f_midi_opts_attr_store,
923}; 918};
924 919
925#define F_MIDI_OPT(name, test_limit, limit) \ 920#define F_MIDI_OPT(name, test_limit, limit) \
926static ssize_t f_midi_opts_##name##_show(struct f_midi_opts *opts, char *page) \ 921static ssize_t f_midi_opts_##name##_show(struct config_item *item, char *page) \
927{ \ 922{ \
923 struct f_midi_opts *opts = to_f_midi_opts(item); \
928 int result; \ 924 int result; \
929 \ 925 \
930 mutex_lock(&opts->lock); \ 926 mutex_lock(&opts->lock); \
@@ -934,9 +930,10 @@ static ssize_t f_midi_opts_##name##_show(struct f_midi_opts *opts, char *page) \
934 return result; \ 930 return result; \
935} \ 931} \
936 \ 932 \
937static ssize_t f_midi_opts_##name##_store(struct f_midi_opts *opts, \ 933static ssize_t f_midi_opts_##name##_store(struct config_item *item, \
938 const char *page, size_t len) \ 934 const char *page, size_t len) \
939{ \ 935{ \
936 struct f_midi_opts *opts = to_f_midi_opts(item); \
940 int ret; \ 937 int ret; \
941 u32 num; \ 938 u32 num; \
942 \ 939 \
@@ -962,9 +959,7 @@ end: \
962 return ret; \ 959 return ret; \
963} \ 960} \
964 \ 961 \
965static struct f_midi_opts_attribute f_midi_opts_##name = \ 962CONFIGFS_ATTR(f_midi_opts_, name);
966 __CONFIGFS_ATTR(name, S_IRUGO | S_IWUSR, f_midi_opts_##name##_show, \
967 f_midi_opts_##name##_store)
968 963
969F_MIDI_OPT(index, true, SNDRV_CARDS); 964F_MIDI_OPT(index, true, SNDRV_CARDS);
970F_MIDI_OPT(buflen, false, 0); 965F_MIDI_OPT(buflen, false, 0);
@@ -972,8 +967,9 @@ F_MIDI_OPT(qlen, false, 0);
972F_MIDI_OPT(in_ports, true, MAX_PORTS); 967F_MIDI_OPT(in_ports, true, MAX_PORTS);
973F_MIDI_OPT(out_ports, true, MAX_PORTS); 968F_MIDI_OPT(out_ports, true, MAX_PORTS);
974 969
975static ssize_t f_midi_opts_id_show(struct f_midi_opts *opts, char *page) 970static ssize_t f_midi_opts_id_show(struct config_item *item, char *page)
976{ 971{
972 struct f_midi_opts *opts = to_f_midi_opts(item);
977 int result; 973 int result;
978 974
979 mutex_lock(&opts->lock); 975 mutex_lock(&opts->lock);
@@ -989,9 +985,10 @@ static ssize_t f_midi_opts_id_show(struct f_midi_opts *opts, char *page)
989 return result; 985 return result;
990} 986}
991 987
992static ssize_t f_midi_opts_id_store(struct f_midi_opts *opts, 988static ssize_t f_midi_opts_id_store(struct config_item *item,
993 const char *page, size_t len) 989 const char *page, size_t len)
994{ 990{
991 struct f_midi_opts *opts = to_f_midi_opts(item);
995 int ret; 992 int ret;
996 char *c; 993 char *c;
997 994
@@ -1016,17 +1013,15 @@ end:
1016 return ret; 1013 return ret;
1017} 1014}
1018 1015
1019static struct f_midi_opts_attribute f_midi_opts_id = 1016CONFIGFS_ATTR(f_midi_opts_, id);
1020 __CONFIGFS_ATTR(id, S_IRUGO | S_IWUSR, f_midi_opts_id_show,
1021 f_midi_opts_id_store);
1022 1017
1023static struct configfs_attribute *midi_attrs[] = { 1018static struct configfs_attribute *midi_attrs[] = {
1024 &f_midi_opts_index.attr, 1019 &f_midi_opts_attr_index,
1025 &f_midi_opts_buflen.attr, 1020 &f_midi_opts_attr_buflen,
1026 &f_midi_opts_qlen.attr, 1021 &f_midi_opts_attr_qlen,
1027 &f_midi_opts_in_ports.attr, 1022 &f_midi_opts_attr_in_ports,
1028 &f_midi_opts_out_ports.attr, 1023 &f_midi_opts_attr_out_ports,
1029 &f_midi_opts_id.attr, 1024 &f_midi_opts_attr_id,
1030 NULL, 1025 NULL,
1031}; 1026};
1032 1027