From patchwork Wed Dec 28 22:57:04 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Boyd X-Patchwork-Id: 89210 Delivered-To: patch@linaro.org Received: by 10.140.20.101 with SMTP id 92csp5738977qgi; Wed, 28 Dec 2016 14:57:56 -0800 (PST) X-Received: by 10.84.212.144 with SMTP id e16mr82465283pli.140.1482965876409; Wed, 28 Dec 2016 14:57:56 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 68si51337689pga.8.2016.12.28.14.57.56; Wed, 28 Dec 2016 14:57:56 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752388AbcL1W5n (ORCPT + 25 others); Wed, 28 Dec 2016 17:57:43 -0500 Received: from mail-pf0-f178.google.com ([209.85.192.178]:34901 "EHLO mail-pf0-f178.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752294AbcL1W5e (ORCPT ); Wed, 28 Dec 2016 17:57:34 -0500 Received: by mail-pf0-f178.google.com with SMTP id i88so59814308pfk.2 for ; Wed, 28 Dec 2016 14:57:34 -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=YUKA+/E6Sk5qRuHeFQL+H5tu0nWso2vmmi4FGCsVgDo=; b=fY3coQ6Pl25Psm0bGEWjkn3fd9Jiyu+evWxA1CKccaZHLCvpG77YzFi6bqWwz2gKwZ XN/OL8A5W9pFIka0cDa0LAcPkDrPXMzBKkiulnghTGWn8lZq18k8aEwZ+xyWM/SS6r4X 051iUxCCFonOVehEAAf/d+9sJmuNh5d2o+kP4= 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=YUKA+/E6Sk5qRuHeFQL+H5tu0nWso2vmmi4FGCsVgDo=; b=BPTRf8OZPFpW9b3a7CRtX+5afhXwdeEjy9d0siChH0YdwSmP7c2KM97RLzkYrHLR6S kUwKEt6DF6PgTgk8SnfYIy/yvNrGY8x1SKm1hrn2RMfpsGUt+Z6XaN6/Td5CU7VvDs4A 9w5MEOmldaDPzP3bb5Or3Usqq65+2h/Gy6DzM+G3vP9vuTdu62et1tQhu7zUHzQ31tOo fixfkzSyjqIMj79c76COX9+6Hdrbjr/tugLaiZaFbUiEL5XxTpYsxPZA7S7ozhzi6Ql6 24Bla9ZVy0VHLa5/vwYSZ3GGW039fkMazJEJ9WXzfkwrj3Tu6/G86kDhgZzOsdPLGmd1 BRSg== X-Gm-Message-State: AIkVDXIHeS+wtqhzatZiYl/11iF63IBpEFSaA8DzXhrJltg+2AuuWH/FSOlmb9LzMQxa/6c7 X-Received: by 10.84.198.129 with SMTP id p1mr83315187pld.14.1482965854222; Wed, 28 Dec 2016 14:57:34 -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.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 28 Dec 2016 14:57:33 -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 18/25] usb: chipidea: msm: Make platform data driver local instead of global Date: Wed, 28 Dec 2016 14:57:04 -0800 Message-Id: <20161228225711.698-19-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-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. Acked-by: Peter Chen Cc: Greg Kroah-Hartman Signed-off-by: Stephen Boyd --- drivers/usb/chipidea/ci_hdrc_msm.c | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) -- 2.10.0.297.gf6727b0 diff --git a/drivers/usb/chipidea/ci_hdrc_msm.c b/drivers/usb/chipidea/ci_hdrc_msm.c index 333817291798..2489a63d3e75 100644 --- a/drivers/usb/chipidea/ci_hdrc_msm.c +++ b/drivers/usb/chipidea/ci_hdrc_msm.c @@ -39,6 +39,7 @@ struct ci_hdrc_msm { struct clk *core_clk; struct clk *iface_clk; struct clk *fs_clk; + struct ci_hdrc_platform_data pdata; bool secondary_phy; bool hsic; void __iomem *base; @@ -94,16 +95,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) { @@ -164,7 +155,12 @@ static int ci_hdrc_msm_probe(struct platform_device *pdev) if (IS_ERR(phy)) return PTR_ERR(phy); - ci_hdrc_msm_platdata.usb_phy = phy; + 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; + ci->pdata.usb_phy = phy; reset = devm_reset_control_get(&pdev->dev, "core"); if (IS_ERR(reset)) @@ -220,9 +216,8 @@ 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); + plat_ci = ci_hdrc_add_device(&pdev->dev, pdev->resource, + 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);