aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2015-10-03 09:32:46 -0400
committerNicholas Bellinger <nab@linux-iscsi.org>2015-10-14 01:15:03 -0400
commit208e61ac7c0a2c3e4b23e74a66ddc2ea471d251e (patch)
tree97f5c324e77c63b7bdfbd4a9664b82818342be5f
parentaa48a415270f7cf16ec0ef825d19b4f8bd1a875e (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.c83
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
901CONFIGFS_ATTR_STRUCT(f_ss_opts);
902CONFIGFS_ATTR_OPS(f_ss_opts);
903
904static void ss_attr_release(struct config_item *item) 901static 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
911static struct configfs_item_operations ss_item_ops = { 908static 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
917static ssize_t f_ss_opts_pattern_show(struct f_ss_opts *opts, char *page) 912static 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
928static ssize_t f_ss_opts_pattern_store(struct f_ss_opts *opts, 924static 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
956static struct f_ss_opts_attribute f_ss_opts_pattern = 953CONFIGFS_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
961static ssize_t f_ss_opts_isoc_interval_show(struct f_ss_opts *opts, char *page) 955static 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
972static ssize_t f_ss_opts_isoc_interval_store(struct f_ss_opts *opts, 967static 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
1000static struct f_ss_opts_attribute f_ss_opts_isoc_interval = 996CONFIGFS_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
1005static ssize_t f_ss_opts_isoc_maxpacket_show(struct f_ss_opts *opts, char *page) 998static 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
1016static ssize_t f_ss_opts_isoc_maxpacket_store(struct f_ss_opts *opts, 1010static 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
1044static struct f_ss_opts_attribute f_ss_opts_isoc_maxpacket = 1039CONFIGFS_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
1049static ssize_t f_ss_opts_isoc_mult_show(struct f_ss_opts *opts, char *page) 1041static 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
1060static ssize_t f_ss_opts_isoc_mult_store(struct f_ss_opts *opts, 1053static 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
1088static struct f_ss_opts_attribute f_ss_opts_isoc_mult = 1082CONFIGFS_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
1093static ssize_t f_ss_opts_isoc_maxburst_show(struct f_ss_opts *opts, char *page) 1084static 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
1104static ssize_t f_ss_opts_isoc_maxburst_store(struct f_ss_opts *opts, 1096static 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
1132static struct f_ss_opts_attribute f_ss_opts_isoc_maxburst = 1125CONFIGFS_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
1137static ssize_t f_ss_opts_bulk_buflen_show(struct f_ss_opts *opts, char *page) 1127static 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
1148static ssize_t f_ss_opts_bulk_buflen_store(struct f_ss_opts *opts, 1139static 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
1171static struct f_ss_opts_attribute f_ss_opts_bulk_buflen = 1163CONFIGFS_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
1176static struct configfs_attribute *ss_attrs[] = { 1165static 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