Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754536AbbKCNBE (ORCPT ); Tue, 3 Nov 2015 08:01:04 -0500 Received: from mailout4.samsung.com ([203.254.224.34]:46481 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753200AbbKCMyr (ORCPT ); Tue, 3 Nov 2015 07:54:47 -0500 X-AuditID: cbfee61b-f79d56d0000048c5-7e-5638ae958f39 From: Robert Baldyga To: balbi@ti.com Cc: gregkh@linuxfoundation.org, andrzej.p@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Robert Baldyga Subject: [PATCH 10/23] usb: gadget: composite: handle vendor descs Date: Tue, 03 Nov 2015 13:53:49 +0100 Message-id: <1446555242-3733-11-git-send-email-r.baldyga@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1446555242-3733-1-git-send-email-r.baldyga@samsung.com> References: <1446555242-3733-1-git-send-email-r.baldyga@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprKLMWRmVeSWpSXmKPExsVy+t9jQd2p6yzCDDa2G1nMetnOYrFxxnpW i4P36y2aF69ns7i8aw6bxaJlrcwWa4/cZbd4cHgnuwOHx/65a9g9+rasYvQ4fmM7k8fnTXIB LFFcNimpOZllqUX6dglcGWd27WAs+CZY8ezEI7YGxlb+LkZODgkBE4m9T26zQdhiEhfurQey uTiEBGYxSmzZtoURwvnJKNFy/j0LSBWbgI7Elu8TGEFsEQEBifUvLrGDFDELnGOUeHinDSwh LOAk8fLtcSYQm0VAVWLywXdgcV4BV4mufY0sEOvkJE4em8zaxcjBwQkUv/ROGcQUEnCROL6d ZwIj7wJGhlWMEqkFyQXFSem5Rnmp5XrFibnFpXnpesn5uZsYwYH1THoH4+Fd7ocYBTgYlXh4 FywxDxNiTSwrrsw9xCjBwawkwrt7rkWYEG9KYmVValF+fFFpTmrxIUZpDhYlcV59T6MwIYH0 xJLU7NTUgtQimCwTB6dUA2Pc7MmTLWWvOzc9L4u+tvW8yR65Z6ECU9z0Qmey+sn0pspZWsTk /d69bvK2f32CwgmLZwqIiFh9052z2MXtultEhEPs/sr/OZvffFth88XQ0yvvwbo7XEwvzf9/ n+pxZeqhjWbHpFhZX1XImCq/kZgiEHVOKPp2WcxX+dighLKl8uX5BgssK5RYijMSDbWYi4oT AXihjpYoAgAA Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2465 Lines: 79 After binding all configurations in gadget, call prep_vendor_descs() for each function which uses new API and implements this callback. Signed-off-by: Robert Baldyga --- drivers/usb/gadget/composite.c | 31 +++++++++++++++++++++++++++++++ include/linux/usb/composite.h | 2 ++ 2 files changed, 33 insertions(+) diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c index f4189b1..9b4fcfe 100644 --- a/drivers/usb/gadget/composite.c +++ b/drivers/usb/gadget/composite.c @@ -2566,6 +2566,33 @@ int usb_config_do_bind(struct usb_configuration *c) } EXPORT_SYMBOL_GPL(usb_config_do_bind); +/** + * composite_prep_vendor_descs - for each function in each configuration call + * prep_vendor_descs() callback. + * @cdev: composite device + */ +int composite_prep_vendor_descs(struct usb_composite_dev *cdev) +{ + struct usb_configuration *c; + struct usb_function *f; + int ret; + + list_for_each_entry(c, &cdev->configs, list) + list_for_each_entry(f, &c->functions, list) { + if (!usb_function_is_new_api(f)) + continue; + if (f->prep_vendor_descs) { + ret = f->prep_vendor_descs(f); + if (ret) + return ret; + } + + } + + return 0; +} +EXPORT_SYMBOL_GPL(composite_prep_vendor_descs); + static int composite_bind(struct usb_gadget *gadget, struct usb_gadget_driver *gdriver) { @@ -2595,6 +2622,10 @@ static int composite_bind(struct usb_gadget *gadget, if (status < 0) goto fail; + status = composite_prep_vendor_descs(cdev); + if (status < 0) + goto fail; + if (cdev->use_os_string) { status = composite_os_desc_req_prepare(cdev, gadget->ep0); if (status) diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h index a92da38..dc0ac28c 100644 --- a/include/linux/usb/composite.h +++ b/include/linux/usb/composite.h @@ -592,6 +592,8 @@ extern int composite_os_desc_req_prepare(struct usb_composite_dev *cdev, struct usb_ep *ep0); void composite_dev_cleanup(struct usb_composite_dev *cdev); +int composite_prep_vendor_descs(struct usb_composite_dev *cdev); + void composite_free_descs(struct usb_composite_dev *cdev); void composite_free_vendor_descs(struct usb_composite_dev *cdev); -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/