aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget/function/f_loopback.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-11-13 23:04:17 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2015-11-13 23:04:17 -0500
commit9aa3d651a9199103eb6451aeb0ac1b66a6d770a6 (patch)
tree42cc631c54e1fcbdeedee8e955c4797634a91af7 /drivers/usb/gadget/function/f_loopback.c
parent5d2eb548b309be34ecf3b91f0b7300a2b9d09b8c (diff)
parent517982229f78b2aebf00a8a337e84e8eeea70b8e (diff)
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending
Pull SCSI target updates from Nicholas Bellinger: "This series contains HCH's changes to absorb configfs attribute ->show() + ->store() function pointer usage from it's original tree-wide consumers, into common configfs code. It includes usb-gadget, target w/ drivers, netconsole and ocfs2 changes to realize the improved simplicity, that now renders the original include/target/configfs_macros.h CPP magic for fabric drivers and others, unnecessary and obsolete. And with common code in place, new configfs attributes can be added easier than ever before. Note, there are further improvements in-flight from other folks for v4.5 code in configfs land, plus number of target fixes for post -rc1 code" In the meantime, a new user of the now-removed old configfs API came in through the char/misc tree in commit 7bd1d4093c2f ("stm class: Introduce an abstraction for System Trace Module devices"). This merge resolution comes from Alexander Shishkin, who updated his stm class tracing abstraction to account for the removal of the old show_attribute and store_attribute methods in commit 517982229f78 ("configfs: remove old API") from this pull. As Alexander says about that patch: "There's no need to keep an extra wrapper structure per item and the awkward show_attribute/store_attribute item ops are no longer needed. This patch converts policy code to the new api, all the while making the code quite a bit smaller and easier on the eyes. Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>" That patch was folded into the merge so that the tree should be fully bisectable. * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (23 commits) configfs: remove old API ocfs2/cluster: use per-attribute show and store methods ocfs2/cluster: move locking into attribute store methods netconsole: use per-attribute show and store methods target: use per-attribute show and store methods spear13xx_pcie_gadget: use per-attribute show and store methods dlm: use per-attribute show and store methods usb-gadget/f_serial: use per-attribute show and store methods usb-gadget/f_phonet: use per-attribute show and store methods usb-gadget/f_obex: use per-attribute show and store methods usb-gadget/f_uac2: use per-attribute show and store methods usb-gadget/f_uac1: use per-attribute show and store methods usb-gadget/f_mass_storage: use per-attribute show and store methods usb-gadget/f_sourcesink: use per-attribute show and store methods usb-gadget/f_printer: use per-attribute show and store methods usb-gadget/f_midi: use per-attribute show and store methods usb-gadget/f_loopback: use per-attribute show and store methods usb-gadget/ether: use per-attribute show and store methods usb-gadget/f_acm: use per-attribute show and store methods usb-gadget/f_hid: use per-attribute show and store methods ...
Diffstat (limited to 'drivers/usb/gadget/function/f_loopback.c')
-rw-r--r--drivers/usb/gadget/function/f_loopback.c31
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 6b2102bc0699..23933bdf2d9d 100644
--- a/drivers/usb/gadget/function/f_loopback.c
+++ b/drivers/usb/gadget/function/f_loopback.c
@@ -465,9 +465,6 @@ static inline struct f_lb_opts *to_f_lb_opts(struct config_item *item)
465 func_inst.group); 465 func_inst.group);
466} 466}
467 467
468CONFIGFS_ATTR_STRUCT(f_lb_opts);
469CONFIGFS_ATTR_OPS(f_lb_opts);
470
471static void lb_attr_release(struct config_item *item) 468static void lb_attr_release(struct config_item *item)
472{ 469{
473 struct f_lb_opts *lb_opts = to_f_lb_opts(item); 470 struct f_lb_opts *lb_opts = to_f_lb_opts(item);
@@ -477,12 +474,11 @@ static void lb_attr_release(struct config_item *item)
477 474
478static struct configfs_item_operations lb_item_ops = { 475static struct configfs_item_operations lb_item_ops = {
479 .release = lb_attr_release, 476 .release = lb_attr_release,
480 .show_attribute = f_lb_opts_attr_show,
481 .store_attribute = f_lb_opts_attr_store,
482}; 477};
483 478
484static ssize_t f_lb_opts_qlen_show(struct f_lb_opts *opts, char *page) 479static ssize_t f_lb_opts_qlen_show(struct config_item *item, char *page)
485{ 480{
481 struct f_lb_opts *opts = to_f_lb_opts(item);
486 int result; 482 int result;
487 483
488 mutex_lock(&opts->lock); 484 mutex_lock(&opts->lock);
@@ -492,9 +488,10 @@ static ssize_t f_lb_opts_qlen_show(struct f_lb_opts *opts, char *page)
492 return result; 488 return result;
493} 489}
494 490
495static ssize_t f_lb_opts_qlen_store(struct f_lb_opts *opts, 491static ssize_t f_lb_opts_qlen_store(struct config_item *item,
496 const char *page, size_t len) 492 const char *page, size_t len)
497{ 493{
494 struct f_lb_opts *opts = to_f_lb_opts(item);
498 int ret; 495 int ret;
499 u32 num; 496 u32 num;
500 497
@@ -515,13 +512,11 @@ end:
515 return ret; 512 return ret;
516} 513}
517 514
518static struct f_lb_opts_attribute f_lb_opts_qlen = 515CONFIGFS_ATTR(f_lb_opts_, qlen);
519 __CONFIGFS_ATTR(qlen, S_IRUGO | S_IWUSR,
520 f_lb_opts_qlen_show,
521 f_lb_opts_qlen_store);
522 516
523static ssize_t f_lb_opts_bulk_buflen_show(struct f_lb_opts *opts, char *page) 517static ssize_t f_lb_opts_bulk_buflen_show(struct config_item *item, char *page)
524{ 518{
519 struct f_lb_opts *opts = to_f_lb_opts(item);
525 int result; 520 int result;
526 521
527 mutex_lock(&opts->lock); 522 mutex_lock(&opts->lock);
@@ -531,9 +526,10 @@ static ssize_t f_lb_opts_bulk_buflen_show(struct f_lb_opts *opts, char *page)
531 return result; 526 return result;
532} 527}
533 528
534static ssize_t f_lb_opts_bulk_buflen_store(struct f_lb_opts *opts, 529static ssize_t f_lb_opts_bulk_buflen_store(struct config_item *item,
535 const char *page, size_t len) 530 const char *page, size_t len)
536{ 531{
532 struct f_lb_opts *opts = to_f_lb_opts(item);
537 int ret; 533 int ret;
538 u32 num; 534 u32 num;
539 535
@@ -554,14 +550,11 @@ end:
554 return ret; 550 return ret;
555} 551}
556 552
557static struct f_lb_opts_attribute f_lb_opts_bulk_buflen = 553CONFIGFS_ATTR(f_lb_opts_, bulk_buflen);
558 __CONFIGFS_ATTR(buflen, S_IRUGO | S_IWUSR,
559 f_lb_opts_bulk_buflen_show,
560 f_lb_opts_bulk_buflen_store);
561 554
562static struct configfs_attribute *lb_attrs[] = { 555static struct configfs_attribute *lb_attrs[] = {
563 &f_lb_opts_qlen.attr, 556 &f_lb_opts_attr_qlen,
564 &f_lb_opts_bulk_buflen.attr, 557 &f_lb_opts_attr_bulk_buflen,
565 NULL, 558 NULL,
566}; 559};
567 560