From: Nishanth Menon <nm@ti.com>
To: Tony Lindgren <tony@atomide.com>
Cc: l-o <linux-omap@vger.kernel.org>,
l-a <linux-arm-kernel@lists.infradead.org>,
Kevin <khilman@ti.com>, Koen Kooi <koen@beagleboard.org>,
Aaro <aaro.koskinen@nokia.com>
Subject: Re: [PATCH v5 3/3] omap3: beaglexm: fix power on of DVI
Date: Tue, 11 Jan 2011 17:55:03 -0600 [thread overview]
Message-ID: <4D2CEDD7.4020507@ti.com> (raw)
In-Reply-To: <20110111232329.GY4957@atomide.com>
[-- Attachment #1: Type: text/plain, Size: 556 bytes --]
Tony Lindgren had written, on 01/11/2011 05:23 PM, the following:
[..]
>> -
>> - gpio_request(gpio + 1, "EHCI_nOC");
>> - gpio_direction_input(gpio + 1);
>> + if (omap3_beagle_get_rev() != OMAP3BEAGLE_BOARD_XM) {
>> + gpio_request(gpio + 1, "EHCI_nOC");
>> + gpio_direction_input(gpio + 1);
>> + }
>
> The return value for gpio_request must be checked.
Ack.
we can go down two paths:
a) I can redo this patch as in v6.patch (attached)
OR
b) we take this patch and do another one cleaning the function up -
gpio-check.patch
--
Regards,
Nishanth Menon
[-- Attachment #2: v6.patch --]
[-- Type: text/x-patch, Size: 2998 bytes --]
>From d08694a8dff8506f1963d9249a89dae9fe508e70 Mon Sep 17 00:00:00 2001
From: Koen Kooi <koen@beagleboard.org>
Date: Thu, 6 Jan 2011 13:29:18 -0600
Subject: [PATCH v6 3/3] omap3: beaglexm: fix power on of DVI
TFP410 DVI chip is used to provide display out.
This chip is controlled by 2 lines:
LDO which supplies the power is controlled over gpio + 2
and the enable of the chip itself is done over gpio + 1
NOTE: the LDO is necessary for LED, serial blocks as well.
gpio + 1 was used to sense USB overcurrent in vanilla beagle.
Without this fix, the display would not function as the LDO
remains shut down.
[nm@ti.com: split up, added descriptive changelogs]
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Koen Kooi <koen@beagleboard.org>
---
arch/arm/mach-omap2/board-omap3beagle.c | 42 ++++++++++++++++++++++++++++--
1 files changed, 39 insertions(+), 3 deletions(-)
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index 673deb9..28dfe8e 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -273,6 +273,8 @@ static struct gpio_led gpio_leds[];
static int beagle_twl_gpio_setup(struct device *dev,
unsigned gpio, unsigned ngpio)
{
+ int r;
+
if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) {
mmc[0].gpio_wp = -EINVAL;
} else if ((omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C1_3) ||
@@ -293,9 +295,16 @@ static int beagle_twl_gpio_setup(struct device *dev,
/* REVISIT: need ehci-omap hooks for external VBUS
* power switch and overcurrent detect
*/
-
- gpio_request(gpio + 1, "EHCI_nOC");
- gpio_direction_input(gpio + 1);
+ if (omap3_beagle_get_rev() != OMAP3BEAGLE_BOARD_XM) {
+ r = gpio_request(gpio + 1, "EHCI_nOC");
+ if (!r) {
+ r = gpio_direction_input(gpio + 1);
+ if (r)
+ gpio_free(gpio + 1);
+ }
+ if (r)
+ pr_err("%s: unable to configure EHCI_nOC\n", __func__);
+ }
/*
* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, XM active
@@ -316,6 +325,33 @@ static int beagle_twl_gpio_setup(struct device *dev,
/* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */
gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
+ /*
+ * gpio + 1 on Xm controls the TFP410's enable line (active low)
+ * gpio + 2 control varies depending on the board rev as follows:
+ * P7/P8 revisions(prototype): Camera EN
+ * A2+ revisions (production): LDO (supplies DVI, serial, led blocks)
+ */
+ if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) {
+ r = gpio_request(gpio + 1, "nDVI_PWR_EN");
+ if (!r) {
+ r = gpio_direction_output(gpio + 1, 0);
+ if (r)
+ gpio_free(gpio + 1);
+ }
+ if (r)
+ pr_err("%s: unable to configure nDVI_PWR_EN\n",
+ __func__);
+ r = gpio_request(gpio + 2, "DVI_LDO_EN");
+ if (!r) {
+ r = gpio_direction_output(gpio + 2, 1);
+ if (r)
+ gpio_free(gpio + 1);
+ }
+ if (r)
+ pr_err("%s: unable to configure DVI_LDO_EN\n",
+ __func__);
+ }
+
return 0;
}
--
1.6.3.3
[-- Attachment #3: gpio-check.patch --]
[-- Type: text/x-patch, Size: 3120 bytes --]
>From f16524ab1cfba7d2a9bd0a8ef5a577a1fb41bfff Mon Sep 17 00:00:00 2001
From: Nishanth Menon <nm@ti.com>
Date: Tue, 11 Jan 2011 17:51:47 -0600
Subject: [PATCH] omap3: beagle: check gpio returns in gpio_setup
gpio request and set of directions need checks of return value
to ensure that operation succeeded or not.
Signed-off-by: Nishanth Menon <nm@ti.com>
---
arch/arm/mach-omap2/board-omap3beagle.c | 49 ++++++++++++++++++++++++-------
1 files changed, 38 insertions(+), 11 deletions(-)
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index 458aee4..fc598d3 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -273,6 +273,8 @@ static struct gpio_led gpio_leds[];
static int beagle_twl_gpio_setup(struct device *dev,
unsigned gpio, unsigned ngpio)
{
+ int r;
+
if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) {
mmc[0].gpio_wp = -EINVAL;
} else if ((omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C1_3) ||
@@ -294,19 +296,29 @@ static int beagle_twl_gpio_setup(struct device *dev,
* power switch and overcurrent detect
*/
if (omap3_beagle_get_rev() != OMAP3BEAGLE_BOARD_XM) {
- gpio_request(gpio + 1, "EHCI_nOC");
- gpio_direction_input(gpio + 1);
+ r = gpio_request(gpio + 1, "EHCI_nOC");
+ if (!r) {
+ r = gpio_direction_input(gpio + 1);
+ if (r)
+ gpio_free(gpio + 1);
+ }
+ if (r)
+ pr_err("%s: unable to configure EHCI_nOC\n", __func__);
}
/*
* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, XM active
* high / others active low)
*/
- gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR");
- if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM)
- gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1);
- else
- gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0);
+ r = gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR");
+ if (!r) {
+ if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM)
+ r = gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1);
+ else
+ r = gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0);
+ }
+ if (r)
+ pr_err("%s: unable to configure nEN_USB_PWR\n", __func__);
/* DVI reset GPIO is different between beagle revisions */
if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM)
@@ -324,12 +336,27 @@ static int beagle_twl_gpio_setup(struct device *dev,
* A2+ revisions (production): LDO (supplies DVI, serial, led blocks)
*/
if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) {
- gpio_request(gpio + 1, "nDVI_PWR_EN");
- gpio_direction_output(gpio + 1, 0);
- gpio_request(gpio + 2, "DVI_LDO_EN");
- gpio_direction_output(gpio + 2, 1);
+ r = gpio_request(gpio + 1, "nDVI_PWR_EN");
+ if (!r) {
+ r = gpio_direction_output(gpio + 1, 0);
+ if (r)
+ gpio_free(gpio + 1);
+ }
+ if (r)
+ pr_err("%s: unable to configure nDVI_PWR_EN\n",
+ __func__);
+ r = gpio_request(gpio + 2, "DVI_LDO_EN");
+ if (!r) {
+ r = gpio_direction_output(gpio + 2, 1);
+ if (r)
+ gpio_free(gpio + 1);
+ }
+ if (r)
+ pr_err("%s: unable to configure DVI_LDO_EN\n",
+ __func__);
}
+
return 0;
}
--
1.6.3.3
WARNING: multiple messages have this Message-ID (diff)
From: nm@ti.com (Nishanth Menon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 3/3] omap3: beaglexm: fix power on of DVI
Date: Tue, 11 Jan 2011 17:55:03 -0600 [thread overview]
Message-ID: <4D2CEDD7.4020507@ti.com> (raw)
In-Reply-To: <20110111232329.GY4957@atomide.com>
Tony Lindgren had written, on 01/11/2011 05:23 PM, the following:
[..]
>> -
>> - gpio_request(gpio + 1, "EHCI_nOC");
>> - gpio_direction_input(gpio + 1);
>> + if (omap3_beagle_get_rev() != OMAP3BEAGLE_BOARD_XM) {
>> + gpio_request(gpio + 1, "EHCI_nOC");
>> + gpio_direction_input(gpio + 1);
>> + }
>
> The return value for gpio_request must be checked.
Ack.
we can go down two paths:
a) I can redo this patch as in v6.patch (attached)
OR
b) we take this patch and do another one cleaning the function up -
gpio-check.patch
--
Regards,
Nishanth Menon
next prev parent reply other threads:[~2011-01-11 23:55 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <[PATCH v4 0/3] OMAP3: beaglexm: GPIO fixes>
2011-01-11 17:13 ` [PATCH v5 0/3] OMAP3: beaglexm: GPIO fixes Nishanth Menon
2011-01-11 17:13 ` Nishanth Menon
2011-01-11 17:13 ` [PATCH v5 1/3] omap3: beaglexm: fix EHCI power up GPIO dir Nishanth Menon
2011-01-11 17:13 ` Nishanth Menon
2011-01-11 17:13 ` [PATCH v5 2/3] omap3: beaglexm: fix DVI reset GPIO Nishanth Menon
2011-01-11 17:13 ` Nishanth Menon
2011-01-11 17:13 ` [PATCH v5 3/3] omap3: beaglexm: fix power on of DVI Nishanth Menon
2011-01-11 17:13 ` Nishanth Menon
2011-01-11 23:23 ` Tony Lindgren
2011-01-11 23:23 ` Tony Lindgren
2011-01-11 23:55 ` Nishanth Menon [this message]
2011-01-11 23:55 ` Nishanth Menon
2011-01-12 0:15 ` Tony Lindgren
2011-01-12 0:15 ` Tony Lindgren
2011-01-12 0:17 ` Nishanth Menon
2011-01-12 0:17 ` Nishanth Menon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D2CEDD7.4020507@ti.com \
--to=nm@ti.com \
--cc=aaro.koskinen@nokia.com \
--cc=khilman@ti.com \
--cc=koen@beagleboard.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=tony@atomide.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.