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: 274908 X-Patchwork-Delegate: marek.vasut@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 6D66F2C015A for ; Sat, 14 Sep 2013 18:36:21 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 0B9AB4A0A9; Sat, 14 Sep 2013 10:35:56 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bGnPnbJ7QK06; Sat, 14 Sep 2013 10:35:55 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 126C84A07F; Sat, 14 Sep 2013 10:35:00 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 384AF4A060 for ; Sat, 14 Sep 2013 10:34:35 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ft1h33GOuBIR for ; Sat, 14 Sep 2013 10:34:34 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mailout1.samsung.com (mailout1.samsung.com [203.254.224.24]) by theia.denx.de (Postfix) with ESMTP id 1E0634A07B for ; Sat, 14 Sep 2013 10:34:18 +0200 (CEST) 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 u-boot@lists.denx.de; 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 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 Cc: Marek Vasut , Julius Werner , u-boot-review@google.com Subject: [U-Boot] [PATCH v3 09/10] exynos: usb: Switch USB VBUS GPIOs to be device tree configured X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de 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");