diff options
author | Christoph Hellwig <hch@lst.de> | 2015-10-03 09:32:46 -0400 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2015-10-14 01:15:03 -0400 |
commit | 208e61ac7c0a2c3e4b23e74a66ddc2ea471d251e (patch) | |
tree | 97f5c324e77c63b7bdfbd4a9664b82818342be5f | |
parent | aa48a415270f7cf16ec0ef825d19b4f8bd1a875e (diff) |
usb-gadget/f_sourcesink: 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_sourcesink.c | 83 |
1 files changed, 36 insertions, 47 deletions
diff --git a/drivers/usb/gadget/function/f_sourcesink.c b/drivers/usb/gadget/function/f_sourcesink.c index cbfaf86fe456..878a5815450e 100644 --- a/drivers/usb/gadget/function/f_sourcesink.c +++ b/drivers/usb/gadget/function/f_sourcesink.c | |||
@@ -898,9 +898,6 @@ static inline struct f_ss_opts *to_f_ss_opts(struct config_item *item) | |||
898 | func_inst.group); | 898 | func_inst.group); |
899 | } | 899 | } |
900 | 900 | ||
901 | CONFIGFS_ATTR_STRUCT(f_ss_opts); | ||
902 | CONFIGFS_ATTR_OPS(f_ss_opts); | ||
903 | |||
904 | static void ss_attr_release(struct config_item *item) | 901 | static void ss_attr_release(struct config_item *item) |
905 | { | 902 | { |
906 | struct f_ss_opts *ss_opts = to_f_ss_opts(item); | 903 | struct f_ss_opts *ss_opts = to_f_ss_opts(item); |
@@ -910,12 +907,11 @@ static void ss_attr_release(struct config_item *item) | |||
910 | 907 | ||
911 | static struct configfs_item_operations ss_item_ops = { | 908 | static struct configfs_item_operations ss_item_ops = { |
912 | .release = ss_attr_release, | 909 | .release = ss_attr_release, |
913 | .show_attribute = f_ss_opts_attr_show, | ||
914 | .store_attribute = f_ss_opts_attr_store, | ||
915 | }; | 910 | }; |
916 | 911 | ||
917 | static ssize_t f_ss_opts_pattern_show(struct f_ss_opts *opts, char *page) | 912 | static ssize_t f_ss_opts_pattern_show(struct config_item *item, char *page) |
918 | { | 913 | { |
914 | struct f_ss_opts *opts = to_f_ss_opts(item); | ||
919 | int result; | 915 | int result; |
920 | 916 | ||
921 | mutex_lock(&opts->lock); | 917 | mutex_lock(&opts->lock); |
@@ -925,9 +921,10 @@ static ssize_t f_ss_opts_pattern_show(struct f_ss_opts *opts, char *page) | |||
925 | return result; | 921 | return result; |
926 | } | 922 | } |
927 | 923 | ||
928 | static ssize_t f_ss_opts_pattern_store(struct f_ss_opts *opts, | 924 | static ssize_t f_ss_opts_pattern_store(struct config_item *item, |
929 | const char *page, size_t len) | 925 | const char *page, size_t len) |
930 | { | 926 | { |
927 | struct f_ss_opts *opts = to_f_ss_opts(item); | ||
931 | int ret; | 928 | int ret; |
932 | u8 num; | 929 | u8 num; |
933 | 930 | ||
@@ -953,13 +950,11 @@ end: | |||
953 | return ret; | 950 | return ret; |
954 | } | 951 | } |
955 | 952 | ||
956 | static struct f_ss_opts_attribute f_ss_opts_pattern = | 953 | CONFIGFS_ATTR(f_ss_opts_, pattern); |
957 | __CONFIGFS_ATTR(pattern, S_IRUGO | S_IWUSR, | ||
958 | f_ss_opts_pattern_show, | ||
959 | f_ss_opts_pattern_store); | ||
960 | 954 | ||
961 | static ssize_t f_ss_opts_isoc_interval_show(struct f_ss_opts *opts, char *page) | 955 | static ssize_t f_ss_opts_isoc_interval_show(struct config_item *item, char *page) |
962 | { | 956 | { |
957 | struct f_ss_opts *opts = to_f_ss_opts(item); | ||
963 | int result; | 958 | int result; |
964 | 959 | ||
965 | mutex_lock(&opts->lock); | 960 | mutex_lock(&opts->lock); |
@@ -969,9 +964,10 @@ static ssize_t f_ss_opts_isoc_interval_show(struct f_ss_opts *opts, char *page) | |||
969 | return result; | 964 | return result; |
970 | } | 965 | } |
971 | 966 | ||
972 | static ssize_t f_ss_opts_isoc_interval_store(struct f_ss_opts *opts, | 967 | static ssize_t f_ss_opts_isoc_interval_store(struct config_item *item, |
973 | const char *page, size_t len) | 968 | const char *page, size_t len) |
974 | { | 969 | { |
970 | struct f_ss_opts *opts = to_f_ss_opts(item); | ||
975 | int ret; | 971 | int ret; |
976 | u8 num; | 972 | u8 num; |
977 | 973 | ||
@@ -997,13 +993,11 @@ end: | |||
997 | return ret; | 993 | return ret; |
998 | } | 994 | } |
999 | 995 | ||
1000 | static struct f_ss_opts_attribute f_ss_opts_isoc_interval = | 996 | CONFIGFS_ATTR(f_ss_opts_, isoc_interval); |
1001 | __CONFIGFS_ATTR(isoc_interval, S_IRUGO | S_IWUSR, | ||
1002 | f_ss_opts_isoc_interval_show, | ||
1003 | f_ss_opts_isoc_interval_store); | ||
1004 | 997 | ||
1005 | static ssize_t f_ss_opts_isoc_maxpacket_show(struct f_ss_opts *opts, char *page) | 998 | static ssize_t f_ss_opts_isoc_maxpacket_show(struct config_item *item, char *page) |
1006 | { | 999 | { |
1000 | struct f_ss_opts *opts = to_f_ss_opts(item); | ||
1007 | int result; | 1001 | int result; |
1008 | 1002 | ||
1009 | mutex_lock(&opts->lock); | 1003 | mutex_lock(&opts->lock); |
@@ -1013,9 +1007,10 @@ static ssize_t f_ss_opts_isoc_maxpacket_show(struct f_ss_opts *opts, char *page) | |||
1013 | return result; | 1007 | return result; |
1014 | } | 1008 | } |
1015 | 1009 | ||
1016 | static ssize_t f_ss_opts_isoc_maxpacket_store(struct f_ss_opts *opts, | 1010 | static ssize_t f_ss_opts_isoc_maxpacket_store(struct config_item *item, |
1017 | const char *page, size_t len) | 1011 | const char *page, size_t len) |
1018 | { | 1012 | { |
1013 | struct f_ss_opts *opts = to_f_ss_opts(item); | ||
1019 | int ret; | 1014 | int ret; |
1020 | u16 num; | 1015 | u16 num; |
1021 | 1016 | ||
@@ -1041,13 +1036,11 @@ end: | |||
1041 | return ret; | 1036 | return ret; |
1042 | } | 1037 | } |
1043 | 1038 | ||
1044 | static struct f_ss_opts_attribute f_ss_opts_isoc_maxpacket = | 1039 | CONFIGFS_ATTR(f_ss_opts_, isoc_maxpacket); |
1045 | __CONFIGFS_ATTR(isoc_maxpacket, S_IRUGO | S_IWUSR, | ||
1046 | f_ss_opts_isoc_maxpacket_show, | ||
1047 | f_ss_opts_isoc_maxpacket_store); | ||
1048 | 1040 | ||
1049 | static ssize_t f_ss_opts_isoc_mult_show(struct f_ss_opts *opts, char *page) | 1041 | static ssize_t f_ss_opts_isoc_mult_show(struct config_item *item, char *page) |
1050 | { | 1042 | { |
1043 | struct f_ss_opts *opts = to_f_ss_opts(item); | ||
1051 | int result; | 1044 | int result; |
1052 | 1045 | ||
1053 | mutex_lock(&opts->lock); | 1046 | mutex_lock(&opts->lock); |
@@ -1057,9 +1050,10 @@ static ssize_t f_ss_opts_isoc_mult_show(struct f_ss_opts *opts, char *page) | |||
1057 | return result; | 1050 | return result; |
1058 | } | 1051 | } |
1059 | 1052 | ||
1060 | static ssize_t f_ss_opts_isoc_mult_store(struct f_ss_opts *opts, | 1053 | static ssize_t f_ss_opts_isoc_mult_store(struct config_item *item, |
1061 | const char *page, size_t len) | 1054 | const char *page, size_t len) |
1062 | { | 1055 | { |
1056 | struct f_ss_opts *opts = to_f_ss_opts(item); | ||
1063 | int ret; | 1057 | int ret; |
1064 | u8 num; | 1058 | u8 num; |
1065 | 1059 | ||
@@ -1085,13 +1079,11 @@ end: | |||
1085 | return ret; | 1079 | return ret; |
1086 | } | 1080 | } |
1087 | 1081 | ||
1088 | static struct f_ss_opts_attribute f_ss_opts_isoc_mult = | 1082 | CONFIGFS_ATTR(f_ss_opts_, isoc_mult); |
1089 | __CONFIGFS_ATTR(isoc_mult, S_IRUGO | S_IWUSR, | ||
1090 | f_ss_opts_isoc_mult_show, | ||
1091 | f_ss_opts_isoc_mult_store); | ||
1092 | 1083 | ||
1093 | static ssize_t f_ss_opts_isoc_maxburst_show(struct f_ss_opts *opts, char *page) | 1084 | static ssize_t f_ss_opts_isoc_maxburst_show(struct config_item *item, char *page) |
1094 | { | 1085 | { |
1086 | struct f_ss_opts *opts = to_f_ss_opts(item); | ||
1095 | int result; | 1087 | int result; |
1096 | 1088 | ||
1097 | mutex_lock(&opts->lock); | 1089 | mutex_lock(&opts->lock); |
@@ -1101,9 +1093,10 @@ static ssize_t f_ss_opts_isoc_maxburst_show(struct f_ss_opts *opts, char *page) | |||
1101 | return result; | 1093 | return result; |
1102 | } | 1094 | } |
1103 | 1095 | ||
1104 | static ssize_t f_ss_opts_isoc_maxburst_store(struct f_ss_opts *opts, | 1096 | static ssize_t f_ss_opts_isoc_maxburst_store(struct config_item *item, |
1105 | const char *page, size_t len) | 1097 | const char *page, size_t len) |
1106 | { | 1098 | { |
1099 | struct f_ss_opts *opts = to_f_ss_opts(item); | ||
1107 | int ret; | 1100 | int ret; |
1108 | u8 num; | 1101 | u8 num; |
1109 | 1102 | ||
@@ -1129,13 +1122,11 @@ end: | |||
1129 | return ret; | 1122 | return ret; |
1130 | } | 1123 | } |
1131 | 1124 | ||
1132 | static struct f_ss_opts_attribute f_ss_opts_isoc_maxburst = | 1125 | CONFIGFS_ATTR(f_ss_opts_, isoc_maxburst); |
1133 | __CONFIGFS_ATTR(isoc_maxburst, S_IRUGO | S_IWUSR, | ||
1134 | f_ss_opts_isoc_maxburst_show, | ||
1135 | f_ss_opts_isoc_maxburst_store); | ||
1136 | 1126 | ||
1137 | static ssize_t f_ss_opts_bulk_buflen_show(struct f_ss_opts *opts, char *page) | 1127 | static ssize_t f_ss_opts_bulk_buflen_show(struct config_item *item, char *page) |
1138 | { | 1128 | { |
1129 | struct f_ss_opts *opts = to_f_ss_opts(item); | ||
1139 | int result; | 1130 | int result; |
1140 | 1131 | ||
1141 | mutex_lock(&opts->lock); | 1132 | mutex_lock(&opts->lock); |
@@ -1145,9 +1136,10 @@ static ssize_t f_ss_opts_bulk_buflen_show(struct f_ss_opts *opts, char *page) | |||
1145 | return result; | 1136 | return result; |
1146 | } | 1137 | } |
1147 | 1138 | ||
1148 | static ssize_t f_ss_opts_bulk_buflen_store(struct f_ss_opts *opts, | 1139 | static ssize_t f_ss_opts_bulk_buflen_store(struct config_item *item, |
1149 | const char *page, size_t len) | 1140 | const char *page, size_t len) |
1150 | { | 1141 | { |
1142 | struct f_ss_opts *opts = to_f_ss_opts(item); | ||
1151 | int ret; | 1143 | int ret; |
1152 | u32 num; | 1144 | u32 num; |
1153 | 1145 | ||
@@ -1168,18 +1160,15 @@ end: | |||
1168 | return ret; | 1160 | return ret; |
1169 | } | 1161 | } |
1170 | 1162 | ||
1171 | static struct f_ss_opts_attribute f_ss_opts_bulk_buflen = | 1163 | CONFIGFS_ATTR(f_ss_opts_, bulk_buflen); |
1172 | __CONFIGFS_ATTR(buflen, S_IRUGO | S_IWUSR, | ||
1173 | f_ss_opts_bulk_buflen_show, | ||
1174 | f_ss_opts_bulk_buflen_store); | ||
1175 | 1164 | ||
1176 | static struct configfs_attribute *ss_attrs[] = { | 1165 | static struct configfs_attribute *ss_attrs[] = { |
1177 | &f_ss_opts_pattern.attr, | 1166 | &f_ss_opts_attr_pattern, |
1178 | &f_ss_opts_isoc_interval.attr, | 1167 | &f_ss_opts_attr_isoc_interval, |
1179 | &f_ss_opts_isoc_maxpacket.attr, | 1168 | &f_ss_opts_attr_isoc_maxpacket, |
1180 | &f_ss_opts_isoc_mult.attr, | 1169 | &f_ss_opts_attr_isoc_mult, |
1181 | &f_ss_opts_isoc_maxburst.attr, | 1170 | &f_ss_opts_attr_isoc_maxburst, |
1182 | &f_ss_opts_bulk_buflen.attr, | 1171 | &f_ss_opts_attr_bulk_buflen, |
1183 | NULL, | 1172 | NULL, |
1184 | }; | 1173 | }; |
1185 | 1174 | ||