From patchwork Fri Jun 1 07:45:33 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Javier Martin X-Patchwork-Id: 162272 Return-Path: X-Original-To: incoming-imx@patchwork.ozlabs.org Delivered-To: patchwork-incoming-imx@bilbo.ozlabs.org Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:4978:20e::2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id D64C8B6F9F for ; Fri, 1 Jun 2012 17:48:58 +1000 (EST) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1SaMYT-0004DU-JJ; Fri, 01 Jun 2012 07:45:53 +0000 Received: from mail-wg0-f49.google.com ([74.125.82.49]) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1SaMYP-0004DG-JS for linux-arm-kernel@lists.infradead.org; Fri, 01 Jun 2012 07:45:50 +0000 Received: by wgbds1 with SMTP id ds1so1146090wgb.18 for ; Fri, 01 Jun 2012 00:45:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:x-gm-message-state; bh=p+yJJCv9GWzpvQjQaqxGdtiZwP28whx2G4KSahIF+Ek=; b=YdcMFntfphmtr8HrWvV7yX1sIvHPAuGmUVkoAoiTiu/wTTtB1hs1xzfc3CRXYbqhjC tsNJLQ5rBRvBVm2AzFuT+k2Js2i/nFZA812Lq7C8HlLBubrd0Mt+aUFL+LEDGsVOVZIK 9HDla3/7NTMqqNBUrH/aBsEwgj3YYILe3u9Zx1x8sAykcPI9TYDNNeSdUSBvPV6bc6q8 FBYrYhZdAx5uDVpfccAzC1lMhS58Cx7nAw52fyMwr5eoPnII9hQ/hAfQ2uy7HtTZrvY2 DgMLnrTu1wGTozzgSGhILF+C+WY535YQJSa9P/FnNhrcFLloMJPZGUx8BM0ltkx8Oi/K FP5A== Received: by 10.216.143.146 with SMTP id l18mr1419424wej.56.1338536745658; Fri, 01 Jun 2012 00:45:45 -0700 (PDT) Received: from localhost.localdomain (96.252.106.212.dynamic.jazztel.es. [212.106.252.96]) by mx.google.com with ESMTPS id gv7sm9243226wib.4.2012.06.01.00.45.43 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 01 Jun 2012 00:45:44 -0700 (PDT) From: Javier Martin To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v2] Visstrim M10: fix gpio handling. Date: Fri, 1 Jun 2012 09:45:33 +0200 Message-Id: <1338536733-11092-1-git-send-email-javier.martin@vista-silicon.com> X-Mailer: git-send-email 1.7.0.4 X-Gm-Message-State: ALoCoQnAeMdsse5tR4qambQBWdP6HG4fd9cEM1KWter2p6L/tLIQquRfHxVlkaC5zWXVRNrYraN8 X-Spam-Note: CRM114 invocation failed X-Spam-Score: -2.6 (--) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-2.6 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [74.125.82.49 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] Cc: linux@arm.linux.org.uk, Javier Martin , kernel@pengutronix.de X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.14 Precedence: list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org List-Id: linux-imx-kernel.lists.patchwork.ozlabs.org Some GPIOs in Visstrim M10 are used without being registered. This leads to USB and video malfunctions. This patch registers those GPIOs to solve the issue. Signed-off-by: Javier Martin --- Request all gpios using a single gpio_request_array() call. --- arch/arm/mach-imx/mach-imx27_visstrim_m10.c | 36 ++++++++++++++++++-------- 1 files changed, 25 insertions(+), 11 deletions(-) diff --git a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c index e8741f9..f00c0cc 100644 --- a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c +++ b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c @@ -116,6 +116,8 @@ static const int visstrim_m10_pins[] __initconst = { PB23_PF_USB_PWR, PB24_PF_USB_OC, /* CSI */ + TVP5150_RSTN | GPIO_GPIO | GPIO_OUT, + TVP5150_PWDN | GPIO_GPIO | GPIO_OUT, PB10_PF_CSI_D0, PB11_PF_CSI_D1, PB12_PF_CSI_D2, @@ -138,6 +140,24 @@ static const int visstrim_m10_pins[] __initconst = { EXPBOARD_BIT0 | GPIO_GPIO | GPIO_IN | GPIO_PUEN, }; +static const struct gpio visstrim_m10_gpios[] __initconst = { + { + .gpio = TVP5150_RSTN, + .flags = GPIOF_DIR_OUT | GPIOF_INIT_HIGH, + .label = "tvp5150_rstn", + }, + { + .gpio = TVP5150_PWDN, + .flags = GPIOF_DIR_OUT | GPIOF_INIT_LOW, + .label = "tvp5150_pwdn", + }, + { + .gpio = OTG_PHY_CS_GPIO, + .flags = GPIOF_DIR_OUT | GPIOF_INIT_LOW, + .label = "usbotg_cs", + }, +}; + /* Camera */ static int visstrim_camera_power(struct device *dev, int on) { @@ -181,13 +201,6 @@ static void __init visstrim_camera_init(void) struct platform_device *pdev; int dma; - /* Initialize tvp5150 gpios */ - mxc_gpio_mode(TVP5150_RSTN | GPIO_GPIO | GPIO_OUT); - mxc_gpio_mode(TVP5150_PWDN | GPIO_GPIO | GPIO_OUT); - gpio_set_value(TVP5150_RSTN, 1); - gpio_set_value(TVP5150_PWDN, 0); - ndelay(1); - gpio_set_value(TVP5150_PWDN, 1); ndelay(1); gpio_set_value(TVP5150_RSTN, 0); @@ -414,10 +427,6 @@ static struct i2c_board_info visstrim_m10_i2c_devices[] = { /* USB OTG */ static int otg_phy_init(struct platform_device *pdev) { - gpio_set_value(OTG_PHY_CS_GPIO, 0); - - mdelay(10); - return mx27_initialize_usb_hw(pdev->id, MXC_EHCI_POWER_PINS_ENABLED); } @@ -474,6 +483,11 @@ static void __init visstrim_m10_board_init(void) if (ret) pr_err("Failed to setup pins (%d)\n", ret); + ret = gpio_request_array(visstrim_m10_gpios, + ARRAY_SIZE(visstrim_m10_gpios)); + if (ret) + pr_err("Failed to request gpios (%d)\n", ret); + imx27_add_imx_ssi(0, &visstrim_m10_ssi_pdata); imx27_add_imx_uart0(&uart_pdata);