From patchwork Wed Mar 6 09:56:38 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Chen X-Patchwork-Id: 2224191 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) by patchwork1.kernel.org (Postfix) with ESMTP id BF4643FCF6 for ; Wed, 6 Mar 2013 10:03:43 +0000 (UTC) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1UDB8D-0005ZA-Kp; Wed, 06 Mar 2013 09:59:30 +0000 Received: from co1ehsobe006.messaging.microsoft.com ([216.32.180.189] helo=co1outboundpool.messaging.microsoft.com) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1UDB6A-0004pb-4d for linux-arm-kernel@lists.infradead.org; Wed, 06 Mar 2013 09:57:23 +0000 Received: from mail209-co1-R.bigfish.com (10.243.78.231) by CO1EHSOBE020.bigfish.com (10.243.66.83) with Microsoft SMTP Server id 14.1.225.23; Wed, 6 Mar 2013 09:57:19 +0000 Received: from mail209-co1 (localhost [127.0.0.1]) by mail209-co1-R.bigfish.com (Postfix) with ESMTP id 8E5D8240081; Wed, 6 Mar 2013 09:57:19 +0000 (UTC) X-Forefront-Antispam-Report: CIP:70.37.183.190; KIP:(null); UIP:(null); IPV:NLI; H:mail.freescale.net; RD:none; EFVD:NLI X-SpamScore: 0 X-BigFish: VS0(zzzz1f42h1ee6h1de0h1202h1e76h1d1ah1d2ahzz8275bhz2dh2a8h668h839hd24he5bhf0ah1288h12a5h12a9h12bdh12e5h1354h137ah139eh13b6h1441h1504h1537h162dh1631h1758h1898h18e1h1946h19b5h1ad9h1b0ah1155h) Received: from mail209-co1 (localhost.localdomain [127.0.0.1]) by mail209-co1 (MessageSwitch) id 13625638382099_14506; Wed, 6 Mar 2013 09:57:18 +0000 (UTC) Received: from CO1EHSMHS009.bigfish.com (unknown [10.243.78.251]) by mail209-co1.bigfish.com (Postfix) with ESMTP id E615BA80049; Wed, 6 Mar 2013 09:57:17 +0000 (UTC) Received: from mail.freescale.net (70.37.183.190) by CO1EHSMHS009.bigfish.com (10.243.66.19) with Microsoft SMTP Server (TLS) id 14.1.225.23; Wed, 6 Mar 2013 09:57:17 +0000 Received: from tx30smr01.am.freescale.net (10.81.153.31) by 039-SN1MMR1-003.039d.mgd.msft.net (10.84.1.16) with Microsoft SMTP Server (TLS) id 14.2.328.11; Wed, 6 Mar 2013 09:57:17 +0000 Received: from localhost.localdomain (nchen-desktop.ap.freescale.net [10.192.242.40]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id r269ufOG006808; Wed, 6 Mar 2013 02:57:13 -0700 From: Peter Chen To: Subject: [PATCH v11 7/9] usb: chipidea: delete the delayed work Date: Wed, 6 Mar 2013 17:56:38 +0800 Message-ID: <1362563800-16673-8-git-send-email-peter.chen@freescale.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1362563800-16673-1-git-send-email-peter.chen@freescale.com> References: <1362563800-16673-1-git-send-email-peter.chen@freescale.com> MIME-Version: 1.0 X-OriginatorOrg: freescale.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20130306_045723_043158_BFB6D950 X-CRM114-Status: GOOD ( 13.41 ) X-Spam-Score: -2.6 (--) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-2.6 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [216.32.180.189 listed in list.dnswl.org] -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] Cc: marex@denx.de, m.grzeschik@pengutronix.de, gregkh@linuxfoundation.org, pkondeti@codeaurora.org, linux-usb@vger.kernel.org, balbi@ti.com, mkl@pengutronix.de, kernel@pengutronix.de, matt@genesi-usa.com, shawn.guo@linaro.org, festevam@gmail.com, linux-arm-kernel@lists.infradead.org X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org After moving vbus operation to host, we no matter need to delayed operation. But, the connection notification to gadget is needed as gadget's start is only enable vbus operation, but it doesn't need to delayed. Signed-off-by: Peter Chen --- drivers/usb/chipidea/ci.h | 1 - drivers/usb/chipidea/core.c | 22 +++------------------- 2 files changed, 3 insertions(+), 20 deletions(-) diff --git a/drivers/usb/chipidea/ci.h b/drivers/usb/chipidea/ci.h index 8826cdb..35ca5ee 100644 --- a/drivers/usb/chipidea/ci.h +++ b/drivers/usb/chipidea/ci.h @@ -144,7 +144,6 @@ struct ci13xxx { enum ci_role role; bool is_otg; struct work_struct work; - struct delayed_work dwork; struct workqueue_struct *wq; struct dma_pool *qh_pool; diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c index e0ff335..464e075 100644 --- a/drivers/usb/chipidea/core.c +++ b/drivers/usb/chipidea/core.c @@ -405,22 +405,6 @@ static void ci_otg_work(struct work_struct *work) enable_irq(ci->irq); } -static void ci_delayed_work(struct work_struct *work) -{ - struct delayed_work *dwork = to_delayed_work(work); - struct ci13xxx *ci = container_of(dwork, struct ci13xxx, dwork); - - /* - * If it is gadget mode, the vbus operation should be done like below: - * 1. Enable vbus detect - * 2. If it has already connected to host, notify udc - */ - if (ci->role == CI_ROLE_GADGET) { - ci_enable_otg_interrupt(ci, OTGSC_BSVIE); - ci_handle_vbus_change(ci); - } -} - static inline void ci_role_destroy(struct ci13xxx *ci) { ci_hdrc_gadget_destroy(ci); @@ -615,7 +599,6 @@ static int ci_hdrc_probe(struct platform_device *pdev) } INIT_WORK(&ci->work, ci_otg_work); - INIT_DELAYED_WORK(&ci->dwork, ci_delayed_work); ci->wq = create_singlethread_workqueue("ci_otg"); if (!ci->wq) { dev_err(dev, "can't create workqueue\n"); @@ -678,8 +661,9 @@ static int ci_hdrc_probe(struct platform_device *pdev) if (ret) goto free_irq; - /* Defer some operations */ - queue_delayed_work(ci->wq, &ci->dwork, msecs_to_jiffies(200)); + /* If it is connected to host, tell gadget the connection */ + if (ci->role == CI_ROLE_GADGET) + ci_handle_vbus_change(ci); return ret;