From patchwork Sun Jun 26 07:28:34 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Boyd X-Patchwork-Id: 9199245 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 9052160754 for ; Sun, 26 Jun 2016 07:35:37 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8173428530 for ; Sun, 26 Jun 2016 07:35:37 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 736DB28542; Sun, 26 Jun 2016 07:35: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=-4.1 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED, T_DKIM_INVALID autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id F21E828530 for ; Sun, 26 Jun 2016 07:35:36 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.85_2 #1 (Red Hat Linux)) id 1bH4YQ-0005s1-Pt; Sun, 26 Jun 2016 07:32:30 +0000 Received: from mail-pa0-x230.google.com ([2607:f8b0:400e:c03::230]) by bombadil.infradead.org with esmtps (Exim 4.85_2 #1 (Red Hat Linux)) id 1bH4VQ-0001Eu-Ey for linux-arm-kernel@lists.infradead.org; Sun, 26 Jun 2016 07:29:26 +0000 Received: by mail-pa0-x230.google.com with SMTP id hl6so49474095pac.2 for ; Sun, 26 Jun 2016 00:29:04 -0700 (PDT) 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=EXvElyRcc86usOiHXYKo9mVoYHmGvaakzWqSM4QpZmM=; b=JQkmp0phEqeoT6w4lAzZtUFpnRlqQ6fewvQQZJoKdwUTwTYKvi4v27BrY/eNkkB63L irk4U1aS1/WoEMjMyPrBG11QB5XCEPmfF7Oh/NUaJc2Z+npOowZa7F1OTvgjmWMz0QLV 01MvEuScEJc9KCVXf456Kq0vCZ7XLPSY47DFo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=EXvElyRcc86usOiHXYKo9mVoYHmGvaakzWqSM4QpZmM=; b=Sgmi2do0fQY8CSQQ/n6RfUNXMF7qEYGwPzel7yQ+4e2Uf+NjzoQjRoj4mr7Ur8EcDD C1EySnfrBFTcBpoRyE0NGvFj5sK4uQh0BTtKNPgU/tBTh+vxlEbTzcaCQ8zcx3VfzltP 6OzBjCDIiQcqI9SM6B1dVKv1xRb7xygk6e4748iMVJgCRIjKN5k0dT/MCmyFYmGSSsyS JvTzmbA18eYEjVxOHvlY0y9Vd++wJ29uMCrwujVCdIKwttkhtAC5cIGo7QuZVFdPB33Z LZxYFtGGaojPVewExOsqmhc09bWp86Xq+Er6AyK6EHz7E4KdppWLZVNWycfqrkU1EjQG cmpw== X-Gm-Message-State: ALyK8tKeKWJ+ixk6Wn40reg8mJ/OhkzzpMCjoV4KcOaejTiFXQTdyAACee8q8FmslRZMBQj9 X-Received: by 10.66.97.104 with SMTP id dz8mr14491607pab.22.1466926143630; Sun, 26 Jun 2016 00:29:03 -0700 (PDT) Received: from localhost.localdomain (ip68-101-172-78.sd.sd.cox.net. [68.101.172.78]) by smtp.gmail.com with ESMTPSA id f138sm3790495pfa.17.2016.06.26.00.29.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 26 Jun 2016 00:29:03 -0700 (PDT) From: Stephen Boyd To: linux-usb@vger.kernel.org Subject: [PATCH 17/21] usb: chipidea: msm: Make platform data driver local instead of global Date: Sun, 26 Jun 2016 00:28:34 -0700 Message-Id: <20160626072838.28082-18-stephen.boyd@linaro.org> X-Mailer: git-send-email 2.9.0.rc2.8.ga28705d In-Reply-To: <20160626072838.28082-1-stephen.boyd@linaro.org> References: <20160626072838.28082-1-stephen.boyd@linaro.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160626_002924_551032_404ED0E9 X-CRM114-Status: GOOD ( 14.77 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Felipe Balbi , Arnd Bergmann , Neil Armstrong , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Bjorn Andersson , Peter Chen , Greg Kroah-Hartman , Andy Gross , linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP If two devices are probed with this same driver, they'll share the same platform data structure, while the chipidea core layer writes and modifies it. This can lead to interesting results especially if one device is an OTG type chipidea controller and another is a host. Let's create a copy of this structure per each device instance so that odd things don't happen. Cc: Peter Chen Cc: Greg Kroah-Hartman Signed-off-by: Stephen Boyd Acked-by: Peter Chen --- drivers/usb/chipidea/ci_hdrc_msm.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/drivers/usb/chipidea/ci_hdrc_msm.c b/drivers/usb/chipidea/ci_hdrc_msm.c index cc6f9b0df9d5..fb4340f02c16 100644 --- a/drivers/usb/chipidea/ci_hdrc_msm.c +++ b/drivers/usb/chipidea/ci_hdrc_msm.c @@ -37,6 +37,7 @@ struct ci_hdrc_msm { struct clk *core_clk; struct clk *iface_clk; struct extcon_dev *vbus_edev; + struct ci_hdrc_platform_data pdata; bool secondary_phy; bool hsic; void __iomem *base; @@ -79,16 +80,6 @@ static void ci_hdrc_msm_notify_event(struct ci_hdrc *ci, unsigned event) } } -static struct ci_hdrc_platform_data ci_hdrc_msm_platdata = { - .name = "ci_hdrc_msm", - .capoffset = DEF_CAPOFFSET, - .flags = CI_HDRC_REGS_SHARED | - CI_HDRC_DISABLE_STREAMING | - CI_HDRC_OVERRIDE_AHB_BURST, - - .notify_event = ci_hdrc_msm_notify_event, -}; - static int ci_hdrc_msm_mux_phy(struct ci_hdrc_msm *ci, struct platform_device *pdev) { @@ -151,6 +142,12 @@ static int ci_hdrc_msm_probe(struct platform_device *pdev) return -ENOMEM; platform_set_drvdata(pdev, ci); + ci->pdata.name = "ci_hdrc_msm"; + ci->pdata.capoffset = DEF_CAPOFFSET; + ci->pdata.flags = CI_HDRC_REGS_SHARED | CI_HDRC_DISABLE_STREAMING | + CI_HDRC_OVERRIDE_AHB_BURST; + ci->pdata.notify_event = ci_hdrc_msm_notify_event; + reset = devm_reset_control_get(&pdev->dev, "core"); if (IS_ERR(reset)) return PTR_ERR(reset); @@ -204,7 +201,7 @@ static int ci_hdrc_msm_probe(struct platform_device *pdev) of_node_put(ulpi_node); plat_ci = ci_hdrc_add_device(&pdev->dev, pdev->resource, - pdev->num_resources, &ci_hdrc_msm_platdata); + pdev->num_resources, &ci->pdata); if (IS_ERR(plat_ci)) { dev_err(&pdev->dev, "ci_hdrc_add_device failed!\n"); ret = PTR_ERR(plat_ci);