From patchwork Wed Dec 28 22:56:53 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Boyd X-Patchwork-Id: 9490773 X-Patchwork-Delegate: agross@codeaurora.org Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 96C8062AB0 for ; Wed, 28 Dec 2016 23:02:37 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 81EBE26242 for ; Wed, 28 Dec 2016 23:02:37 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 76D2726490; Wed, 28 Dec 2016 23:02:37 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 228BF26242 for ; Wed, 28 Dec 2016 23:02:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752317AbcL1XCT (ORCPT ); Wed, 28 Dec 2016 18:02:19 -0500 Received: from mail-pg0-f51.google.com ([74.125.83.51]:32773 "EHLO mail-pg0-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752153AbcL1W5W (ORCPT ); Wed, 28 Dec 2016 17:57:22 -0500 Received: by mail-pg0-f51.google.com with SMTP id g1so120719288pgn.0 for ; Wed, 28 Dec 2016 14:57:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=tLnkzNVYHl5T1ZPuw5K9vULA3Nb/MowqHn6O0Tx28A0=; b=QqXDM+BMmf+wFtGLgsyftAX+t5l80Cfz83/mJTKxDcvq7mDvmIUvapzfn4qqjAAK9u d19XjXkotnczcuOBlgO9W7xvPdgRWv+Yw5ls6Vqrmag/M/al8EB1shwEQEeN27VsjfyX 0uVQs2kyug9TJLM4lEaWOm9GyUhTsDyYwPK3M= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=tLnkzNVYHl5T1ZPuw5K9vULA3Nb/MowqHn6O0Tx28A0=; b=ZN52AVlG+04ELB+dBXQg0uuyRwle1Pxzdv/9BhXeg1gCiTfWa3ppX7/mhnlIv3Qi7x jjjq52vwQP+u50RD9OZxCG65WuhL+AaLNKiOXhWUTviGLgucYfYwiz1/z+akqtR77Arb DXC9LlwYe9o/7BG3FNl2wPTZw0P7+GNj0Zz51fiBni4x3//Yw2rmAHgH0wy07VVe2BKX MTZy9b+BxygYYB5n0j60UPDRo/ePY2mtd7uX+nOj2d6YCYExPa/zPrXeHoR2t8pmpjU7 XIT8QywGtHEUHwF+WThVL0AV2LasMCjjjDWLFyakLC2NQZdnsa8YJ1bTaUjGvWsE3YX/ /MCw== X-Gm-Message-State: AIkVDXLYh6mfH+CXrPTH4Y8/zljiSHO6wCxUecycjCxtHBSx6yFALglPwGlStWDhzQnNT/b4 X-Received: by 10.98.217.153 with SMTP id b25mr36966578pfl.77.1482965841820; Wed, 28 Dec 2016 14:57:21 -0800 (PST) Received: from localhost.localdomain (i-global254.qualcomm.com. [199.106.103.254]) by smtp.gmail.com with ESMTPSA id x4sm100355741pgc.14.2016.12.28.14.57.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 28 Dec 2016 14:57:21 -0800 (PST) From: Stephen Boyd To: linux-usb@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Andy Gross , Bjorn Andersson , Neil Armstrong , Arnd Bergmann , Felipe Balbi , Peter Chen , Greg Kroah-Hartman Subject: [PATCH v6 07/25] usb: chipidea: Notify events when switching host mode Date: Wed, 28 Dec 2016 14:56:53 -0800 Message-Id: <20161228225711.698-8-stephen.boyd@linaro.org> X-Mailer: git-send-email 2.10.0.297.gf6727b0 In-Reply-To: <20161228225711.698-1-stephen.boyd@linaro.org> References: <20161228225711.698-1-stephen.boyd@linaro.org> Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The chipidea/udc.c file sends a CI_HDRC_CONTROLLER_RESET_EVENT to the wrapper drivers when it calls hw_device_reset(), but that function is not called from chipidea/host.c. And the udc.c file sends the CI_HDRC_CONTROLLER_STOPPED_EVENT but the host.c file doesn't do anything. The intent of the reset event is to allow the wrapper driver to do any wrapper specific things after the reset bit has been set in the usb command register. Therefore, add this event hook in the host role after we toggle that bit. Similarly, the intent of the stopped event is to allow the wrapper driver to do any wrapper specific things after the device is stopped. So when we stop the host role, send the stopped event. Acked-by: Peter Chen Cc: Greg Kroah-Hartman Signed-off-by: Stephen Boyd --- drivers/usb/chipidea/host.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c index 111b0e0b8698..f884c0877bca 100644 --- a/drivers/usb/chipidea/host.c +++ b/drivers/usb/chipidea/host.c @@ -90,6 +90,9 @@ static int ehci_ci_reset(struct usb_hcd *hcd) ehci->need_io_watchdog = 0; + if (ci->platdata->notify_event) + ci->platdata->notify_event(ci, CI_HDRC_CONTROLLER_RESET_EVENT); + ci_platform_configure(ci); return ret; @@ -187,6 +190,9 @@ static void host_stop(struct ci_hdrc *ci) struct usb_hcd *hcd = ci->hcd; if (hcd) { + if (ci->platdata->notify_event) + ci->platdata->notify_event(ci, + CI_HDRC_CONTROLLER_STOPPED_EVENT); usb_remove_hcd(hcd); ci->role = CI_ROLE_END; synchronize_irq(ci->irq);