aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget/function/u_ether_configfs.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/gadget/function/u_ether_configfs.h')
-rw-r--r--drivers/usb/gadget/function/u_ether_configfs.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/drivers/usb/gadget/function/u_ether_configfs.h b/drivers/usb/gadget/function/u_ether_configfs.h
index c71133de17e7..e4c3f84af4c3 100644
--- a/drivers/usb/gadget/function/u_ether_configfs.h
+++ b/drivers/usb/gadget/function/u_ether_configfs.h
@@ -153,4 +153,39 @@ out: \
153 \ 153 \
154 CONFIGFS_ATTR_RO(_f_##_opts_, ifname) 154 CONFIGFS_ATTR_RO(_f_##_opts_, ifname)
155 155
156#define USB_ETHER_CONFIGFS_ITEM_ATTR_U8_RW(_f_, _n_) \
157 static ssize_t _f_##_opts_##_n_##_show(struct config_item *item,\
158 char *page) \
159 { \
160 struct f_##_f_##_opts *opts = to_f_##_f_##_opts(item); \
161 int ret; \
162 \
163 mutex_lock(&opts->lock); \
164 ret = sprintf(page, "%02x\n", opts->_n_); \
165 mutex_unlock(&opts->lock); \
166 \
167 return ret; \
168 } \
169 \
170 static ssize_t _f_##_opts_##_n_##_store(struct config_item *item,\
171 const char *page, \
172 size_t len) \
173 { \
174 struct f_##_f_##_opts *opts = to_f_##_f_##_opts(item); \
175 int ret; \
176 u8 val; \
177 \
178 mutex_lock(&opts->lock); \
179 ret = sscanf(page, "%02hhx", &val); \
180 if (ret > 0) { \
181 opts->_n_ = val; \
182 ret = len; \
183 } \
184 mutex_unlock(&opts->lock); \
185 \
186 return ret; \
187 } \
188 \
189 CONFIGFS_ATTR(_f_##_opts_, _n_)
190
156#endif /* __U_ETHER_CONFIGFS_H */ 191#endif /* __U_ETHER_CONFIGFS_H */