From patchwork Sat Sep 14 08:32:52 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vivek Gautam X-Patchwork-Id: 20309 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-qa0-f71.google.com (mail-qa0-f71.google.com [209.85.216.71]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 4F4A3266F7 for ; Sat, 14 Sep 2013 08:34:20 +0000 (UTC) Received: by mail-qa0-f71.google.com with SMTP id k15sf59048qaq.10 for ; Sat, 14 Sep 2013 01:34:20 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:delivered-to:from:to:cc:subject :date:message-id:in-reply-to:references:dlp-filter:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :list-post:list-help:list-archive:list-unsubscribe; bh=WZ2ga2PPfOWsOqHn3h5jkvrEqUSZFQsIIW1gZIdFfPs=; b=lwD8KW4gL4FwFSA/wN3nydR2GHXV3WstDfGqlPeNWrtoYzW4f+W8AYSGGhJ3NttzvL 8Or1Ff3RbuZFc+VN6uVabDKby6dE5izY3TR6vAIGvBmCimZuRBfaUYiIYGYyqaTUe0Ro WiVjPxT+uQQCgE4sy3qOqPrnir87Fioum6ZUlxeaqZcRICHsFxKerqDpE94GUuoZ6r1h UTBxknARMR5utr7/sRcBXelKiaUrL8F/e/2laTmyPOKxanuheZcXGBLI1ovFcO2W/TzC Ebamamnzh3QJcpI0KqPAfff67Poh8BQgEybZjOZ+HiBHT2bpvMRAWy8lFpI6turmeMWp kSjQ== X-Gm-Message-State: ALoCoQmr8JPizpDezSYU3RbKy8GObNgLL/Out9wTlH9dTqoWbZWeqC1fAQiA7jsn0sZuB6pXPuJ5 X-Received: by 10.236.26.202 with SMTP id c50mr6732314yha.14.1379147659923; Sat, 14 Sep 2013 01:34:19 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.49.99.10 with SMTP id em10ls1426226qeb.82.gmail; Sat, 14 Sep 2013 01:34:19 -0700 (PDT) X-Received: by 10.52.119.228 with SMTP id kx4mr13546389vdb.12.1379147659823; Sat, 14 Sep 2013 01:34:19 -0700 (PDT) Received: from mail-vc0-f181.google.com (mail-vc0-f181.google.com [209.85.220.181]) by mx.google.com with ESMTPS id dt10si4403781vdb.73.1969.12.31.16.00.00 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 14 Sep 2013 01:34:19 -0700 (PDT) Received-SPF: neutral (google.com: 209.85.220.181 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) client-ip=209.85.220.181; Received: by mail-vc0-f181.google.com with SMTP id hz10so1627272vcb.26 for ; Sat, 14 Sep 2013 01:34:19 -0700 (PDT) X-Received: by 10.52.230.102 with SMTP id sx6mr13477023vdc.15.1379147659713; Sat, 14 Sep 2013 01:34:19 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patches@linaro.org Received: by 10.220.174.196 with SMTP id u4csp3328vcz; Sat, 14 Sep 2013 01:34:19 -0700 (PDT) X-Received: by 10.68.229.2 with SMTP id sm2mr17827967pbc.68.1379147658365; Sat, 14 Sep 2013 01:34:18 -0700 (PDT) Received: from mailout1.samsung.com (mailout1.samsung.com. [203.254.224.24]) by mx.google.com with ESMTP id dl5si5086966pbd.86.1969.12.31.16.00.00; Sat, 14 Sep 2013 01:34:18 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of gautam.vivek@samsung.com designates 203.254.224.24 as permitted sender) client-ip=203.254.224.24; Received: from epcpsbgr3.samsung.com (u143.gpu120.samsung.co.kr [203.254.230.143]) by mailout1.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MT300FEPX4RUD40@mailout1.samsung.com> for patches@linaro.org; Sat, 14 Sep 2013 17:34:16 +0900 (KST) Received: from epcpsbgm2.samsung.com ( [172.20.52.123]) by epcpsbgr3.samsung.com (EPCPMTA) with SMTP id F9.CB.20109.88F14325; Sat, 14 Sep 2013 17:34:16 +0900 (KST) X-AuditID: cbfee68f-b7f1e6d000004e8d-ba-52341f887dda Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 5C.64.05832.88F14325; Sat, 14 Sep 2013 17:34:16 +0900 (KST) Received: from vivekkumarg-linuxpc.sisodomain.com ([107.108.214.169]) by mmp2.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MT3000S4X4MT840@mmp2.samsung.com>; Sat, 14 Sep 2013 17:34:16 +0900 (KST) From: Vivek Gautam To: u-boot@lists.denx.de, patches@linaro.org Cc: u-boot-review@google.com, Julius Werner , Simon Glass , Minkyu Kang , Marek Vasut Subject: [PATCH v3 09/10] exynos: usb: Switch USB VBUS GPIOs to be device tree configured Date: Sat, 14 Sep 2013 14:02:52 +0530 Message-id: <1379147573-21897-10-git-send-email-gautam.vivek@samsung.com> X-Mailer: git-send-email 1.7.6.5 In-reply-to: <1379147573-21897-1-git-send-email-gautam.vivek@samsung.com> References: <1379147573-21897-1-git-send-email-gautam.vivek@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrDLMWRmVeSWpSXmKPExsWyRsSkWrdD3iTIYM5ZA4uOQ4+ZLN60NTJa dBxpYbSYcvgLi8W3LdsYLZa/3shu8XZvJ7sDu8fshossHvNmnWDxWLCp1OPOtT1sHmfv7GD0 6NuyijGALYrLJiU1J7MstUjfLoErY8n+BsaCpaoVXxZINDBOlu9i5OSQEDCRWPi7nRHCFpO4 cG89WxcjF4eQwFJGiZ0nVrDBFO3dtIgJIjGdUWL65UNQVVOYJNYe/MQEUsUmoCvR9HYX2CgR AR2J58tusoIUMQssZ5R40nCLGSQhLBAtce/FbrAGFgFVicvTGtlBbF4BT4mFL7pYINYpSLy5 /QysnhMovmPfU7AaIQEPiRMdP1lAhkoILGOXaLv6gg1ikIDEt8mHgBIcQAlZiU0HmCHmSEoc XHGDZQKj8AJGhlWMoqkFyQXFSelFxnrFibnFpXnpesn5uZsYgSF/+t+z/h2Mdw9YH2JMBho3 kVlKNDkfGDN5JfGGxmZGFqYmpsZG5pZmpAkrifOqtVgHCgmkJ5akZqemFqQWxReV5qQWH2Jk 4uCUamBcf98m8UwHi8gdG+PtBbxsrc6uJdtu+ovd9Tc4sZTvyQ6uQ0//2WclHJHKmsJy+UCJ 9l5xp4OHLn8tezHzqbfMqpe3/3a4GB0pu+G0f6d5R/azVi4fGy7NvWe/yU8reVm7u+bL/R13 cxe2fGCPSeDlbN90ctn3O9tDbNqXzt1y7rTI19Uu025ZKLEUZyQaajEXFScCAJPJqhmPAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrJIsWRmVeSWpSXmKPExsVy+t9jQd0OeZMgg/e9qhYdhx4zWbxpa2S0 6DjSwmgx5fAXFotvW7YxWix/vZHd4u3eTnYHdo/ZDRdZPObNOsHisWBTqceda3vYPM7e2cHo 0bdlFWMAW1QDo01GamJKapFCal5yfkpmXrqtkndwvHO8qZmBoa6hpYW5kkJeYm6qrZKLT4Cu W2YO0DFKCmWJOaVAoYDE4mIlfTtME0JD3HQtYBojdH1DguB6jAzQQMIaxowl+xsYC5aqVnxZ INHAOFm+i5GTQ0LARGLvpkVMELaYxIV769m6GLk4hASmM0pMv3wIypnCJLH24CewKjYBXYmm t7sYQWwRAR2J58tusoIUMQssZ5R40nCLGSQhLBAtce/FbrAGFgFVicvTGtlBbF4BT4mFL7pY INYpSLy5/QysnhMovmPfU7AaIQEPiRMdP1kmMPIuYGRYxSiaWpBcUJyUnmukV5yYW1yal66X nJ+7iREcUc+kdzCuarA4xCjAwajEw/vR1zhIiDWxrLgy9xCjBAezkgivk5hJkBBvSmJlVWpR fnxRaU5q8SHGZKCrJjJLiSbnA6M9ryTe0NjE3NTY1NLEwsTMkjRhJXHeg63WgUIC6Yklqdmp qQWpRTBbmDg4pRoYvf99XtVpe2VRye49ywyDpi95XDBXdL/C5o7jqdIbHIUnc698wnl+es+T zzu26UiL/FJKnKW5Yg33EaGyi56Xn4SH3MqeEf5v8/TehWv08radzZ526YXClw0ZCYXSalLK Xy+/uXj67Nb2GwJ1XReWMysdUv9VNP+jSlvD0YOHLNnOV17tX9hle1qJpTgj0VCLuag4EQAF LFAs7AIAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: gautam.vivek@samsung.com X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 209.85.220.181 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Precedence: list Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org List-ID: X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , From: Julius Werner Some Exynos boards, such as the SMDK5250, control USB port power through a GPIO pin. For now this had been hardcoded in the exynos5-dt board file, but not all boards use the same pin, requiring local changes to support different boards. This patch moves the GPIO initialization into the USB host controller drivers which they belong to, and uses the samsung,vbus-gpio parameter in the device tree to configure it. Signed-off-by: Julius Werner Signed-off-by: Vivek Gautam Cc: Simon Glass Cc: Minkyu Kang Cc: Marek Vasut --- Changes since v2: - This patch is newly added in this version of the series. board/samsung/smdk5250/exynos5-dt.c | 19 ------------------- drivers/usb/host/ehci-exynos.c | 11 +++++++++++ drivers/usb/host/xhci-exynos5.c | 11 +++++++++++ 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/board/samsung/smdk5250/exynos5-dt.c b/board/samsung/smdk5250/exynos5-dt.c index bb4a82f..6bcc883 100644 --- a/board/samsung/smdk5250/exynos5-dt.c +++ b/board/samsung/smdk5250/exynos5-dt.c @@ -61,22 +61,6 @@ struct local_info { static struct local_info local; -#ifdef CONFIG_USB_EHCI_EXYNOS -int board_usb_vbus_init(void) -{ - struct exynos5_gpio_part1 *gpio1 = (struct exynos5_gpio_part1 *) - samsung_get_base_gpio_part1(); - - /* Enable VBUS power switch */ - s5p_gpio_direction_output(&gpio1->x2, 6, 1); - - /* VBUS turn ON time */ - mdelay(3); - - return 0; -} -#endif - #ifdef CONFIG_SOUND_MAX98095 static void board_enable_audio_codec(void) { @@ -122,9 +106,6 @@ int board_init(void) if (board_init_cros_ec_devices(gd->fdt_blob)) return -1; -#ifdef CONFIG_USB_EHCI_EXYNOS - board_usb_vbus_init(); -#endif #ifdef CONFIG_SOUND_MAX98095 board_enable_audio_codec(); #endif diff --git a/drivers/usb/host/ehci-exynos.c b/drivers/usb/host/ehci-exynos.c index 155677e..15926c4 100644 --- a/drivers/usb/host/ehci-exynos.c +++ b/drivers/usb/host/ehci-exynos.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include "ehci.h" @@ -30,6 +31,7 @@ DECLARE_GLOBAL_DATA_PTR; struct exynos_ehci { struct exynos_usb_phy *usb; struct ehci_hccr *hcd; + struct fdt_gpio_state vbus_gpio; }; static struct exynos_ehci exynos; @@ -58,6 +60,9 @@ static int exynos_usb_parse_dt(const void *blob, struct exynos_ehci *exynos) exynos->hcd = (struct ehci_hccr *)addr; + /* Vbus gpio */ + fdtdec_decode_gpio(blob, node, "samsung,vbus-gpio", &exynos->vbus_gpio); + depth = 0; node = fdtdec_next_compatible_subnode(blob, node, COMPAT_SAMSUNG_EXYNOS_USB_PHY, &depth); @@ -150,6 +155,12 @@ int ehci_hcd_init(int index, struct ehci_hccr **hccr, struct ehci_hcor **hcor) ctx->hcd = (struct ehci_hccr *)samsung_get_base_usb_ehci(); #endif +#ifdef CONFIG_OF_CONTROL + /* setup the Vbus gpio here */ + if (!fdtdec_setup_gpio(&ctx->vbus_gpio)) + gpio_direction_output(ctx->vbus_gpio.gpio, 1); +#endif + setup_usb_phy(ctx->usb); *hccr = ctx->hcd; diff --git a/drivers/usb/host/xhci-exynos5.c b/drivers/usb/host/xhci-exynos5.c index eb0ef6c..1146d10 100644 --- a/drivers/usb/host/xhci-exynos5.c +++ b/drivers/usb/host/xhci-exynos5.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -39,6 +40,7 @@ struct exynos_xhci { struct exynos_usb3_phy *usb3_phy; struct xhci_hccr *hcd; struct dwc3 *dwc3_reg; + struct fdt_gpio_state vbus_gpio; }; static struct exynos_xhci exynos; @@ -66,6 +68,9 @@ static int exynos_usb3_parse_dt(const void *blob, struct exynos_xhci *exynos) } exynos->hcd = (struct xhci_hccr *)addr; + /* Vbus gpio */ + fdtdec_decode_gpio(blob, node, "samsung,vbus-gpio", &exynos->vbus_gpio); + depth = 0; node = fdtdec_next_compatible_subnode(blob, node, COMPAT_SAMSUNG_EXYNOS5_USB3_PHY, &depth); @@ -291,6 +296,12 @@ int xhci_hcd_init(int index, struct xhci_hccr **hccr, struct xhci_hcor **hcor) ctx->dwc3_reg = (struct dwc3 *)((char *)(ctx->hcd) + DWC3_REG_OFFSET); +#ifdef CONFIG_OF_CONTROL + /* setup the Vbus gpio here */ + if (!fdtdec_setup_gpio(&ctx->vbus_gpio)) + gpio_direction_output(ctx->vbus_gpio.gpio, 1); +#endif + ret = exynos_xhci_core_init(ctx); if (ret) { puts("XHCI: failed to initialize controller\n");