diff options
author | Christoph Hellwig <hch@lst.de> | 2015-10-03 09:32:43 -0400 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2015-10-14 01:14:30 -0400 |
commit | 75ab2256a7d05128f8aa088cdde961d8029bcd55 (patch) | |
tree | 5b7416ae6c1ff455225fffbba7f5208e5c3e0797 /drivers/usb/gadget/function/f_loopback.c | |
parent | f9a63da33d3f86acadc14c5cb66e9ad06860892f (diff) |
usb-gadget/f_loopback: 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>
Diffstat (limited to 'drivers/usb/gadget/function/f_loopback.c')
-rw-r--r-- | drivers/usb/gadget/function/f_loopback.c | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/drivers/usb/gadget/function/f_loopback.c b/drivers/usb/gadget/function/f_loopback.c index 6e2fe63b9267..b9d8f0530058 100644 --- a/drivers/usb/gadget/function/f_loopback.c +++ b/drivers/usb/gadget/function/f_loopback.c | |||
@@ -413,9 +413,6 @@ static inline struct f_lb_opts *to_f_lb_opts(struct config_item *item) | |||
413 | func_inst.group); | 413 | func_inst.group); |
414 | } | 414 | } |
415 | 415 | ||
416 | CONFIGFS_ATTR_STRUCT(f_lb_opts); | ||
417 | CONFIGFS_ATTR_OPS(f_lb_opts); | ||
418 | |||
419 | static void lb_attr_release(struct config_item *item) | 416 | static void lb_attr_release(struct config_item *item) |
420 | { | 417 | { |
421 | struct f_lb_opts *lb_opts = to_f_lb_opts(item); | 418 | struct f_lb_opts *lb_opts = to_f_lb_opts(item); |
@@ -425,12 +422,11 @@ static void lb_attr_release(struct config_item *item) | |||
425 | 422 | ||
426 | static struct configfs_item_operations lb_item_ops = { | 423 | static struct configfs_item_operations lb_item_ops = { |
427 | .release = lb_attr_release, | 424 | .release = lb_attr_release, |
428 | .show_attribute = f_lb_opts_attr_show, | ||
429 | .store_attribute = f_lb_opts_attr_store, | ||
430 | }; | 425 | }; |
431 | 426 | ||
432 | static ssize_t f_lb_opts_qlen_show(struct f_lb_opts *opts, char *page) | 427 | static ssize_t f_lb_opts_qlen_show(struct config_item *item, char *page) |
433 | { | 428 | { |
429 | struct f_lb_opts *opts = to_f_lb_opts(item); | ||
434 | int result; | 430 | int result; |
435 | 431 | ||
436 | mutex_lock(&opts->lock); | 432 | mutex_lock(&opts->lock); |
@@ -440,9 +436,10 @@ static ssize_t f_lb_opts_qlen_show(struct f_lb_opts *opts, char *page) | |||
440 | return result; | 436 | return result; |
441 | } | 437 | } |
442 | 438 | ||
443 | static ssize_t f_lb_opts_qlen_store(struct f_lb_opts *opts, | 439 | static ssize_t f_lb_opts_qlen_store(struct config_item *item, |
444 | const char *page, size_t len) | 440 | const char *page, size_t len) |
445 | { | 441 | { |
442 | struct f_lb_opts *opts = to_f_lb_opts(item); | ||
446 | int ret; | 443 | int ret; |
447 | u32 num; | 444 | u32 num; |
448 | 445 | ||
@@ -463,13 +460,11 @@ end: | |||
463 | return ret; | 460 | return ret; |
464 | } | 461 | } |
465 | 462 | ||
466 | static struct f_lb_opts_attribute f_lb_opts_qlen = | 463 | CONFIGFS_ATTR(f_lb_opts_, qlen); |
467 | __CONFIGFS_ATTR(qlen, S_IRUGO | S_IWUSR, | ||
468 | f_lb_opts_qlen_show, | ||
469 | f_lb_opts_qlen_store); | ||
470 | 464 | ||
471 | static ssize_t f_lb_opts_bulk_buflen_show(struct f_lb_opts *opts, char *page) | 465 | static ssize_t f_lb_opts_bulk_buflen_show(struct config_item *item, char *page) |
472 | { | 466 | { |
467 | struct f_lb_opts *opts = to_f_lb_opts(item); | ||
473 | int result; | 468 | int result; |
474 | 469 | ||
475 | mutex_lock(&opts->lock); | 470 | mutex_lock(&opts->lock); |
@@ -479,9 +474,10 @@ static ssize_t f_lb_opts_bulk_buflen_show(struct f_lb_opts *opts, char *page) | |||
479 | return result; | 474 | return result; |
480 | } | 475 | } |
481 | 476 | ||
482 | static ssize_t f_lb_opts_bulk_buflen_store(struct f_lb_opts *opts, | 477 | static ssize_t f_lb_opts_bulk_buflen_store(struct config_item *item, |
483 | const char *page, size_t len) | 478 | const char *page, size_t len) |
484 | { | 479 | { |
480 | struct f_lb_opts *opts = to_f_lb_opts(item); | ||
485 | int ret; | 481 | int ret; |
486 | u32 num; | 482 | u32 num; |
487 | 483 | ||
@@ -502,14 +498,11 @@ end: | |||
502 | return ret; | 498 | return ret; |
503 | } | 499 | } |
504 | 500 | ||
505 | static struct f_lb_opts_attribute f_lb_opts_bulk_buflen = | 501 | CONFIGFS_ATTR(f_lb_opts_, bulk_buflen); |
506 | __CONFIGFS_ATTR(buflen, S_IRUGO | S_IWUSR, | ||
507 | f_lb_opts_bulk_buflen_show, | ||
508 | f_lb_opts_bulk_buflen_store); | ||
509 | 502 | ||
510 | static struct configfs_attribute *lb_attrs[] = { | 503 | static struct configfs_attribute *lb_attrs[] = { |
511 | &f_lb_opts_qlen.attr, | 504 | &f_lb_opts_attr_qlen, |
512 | &f_lb_opts_bulk_buflen.attr, | 505 | &f_lb_opts_attr_bulk_buflen, |
513 | NULL, | 506 | NULL, |
514 | }; | 507 | }; |
515 | 508 | ||