diff mbox

[2.6.29-rc3-omap-git] omap3: gpio pin config bugfixes

Message ID 200902082055.08954.david-b@pacbell.net
State Superseded, archived
Delegated to: Tony Lindgren
Headers show

Commit Message

David Brownell Feb. 9, 2009, 4:55 a.m. UTC
From: David Brownell <dbrownell@users.sourceforge.net>

Bugfix several GPIO mux configurations which didn't enable the
input drivers, but weren't named as e.g. ..._GPIO141_OUT.
These bugs were added quite recently, for OMAP3 EVM support.

To help avoid such bugs in the future, update the comment to
clarify the rule:  always use PIN_INPUT, unless the name uses
that name suffix, to be crystal-clear on the signal's use as
output-only.

(Also adds GPIO-63, for the EVM's MMC-1 writeprotect switch.
Presumably that works right...)

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
---

 arch/arm/mach-omap2/mux.c             |   13 ++++++++-----
 arch/arm/plat-omap/include/mach/mux.h |    1 +
 2 files changed, 9 insertions(+), 5 deletions(-)

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

kim kyuwon Feb. 9, 2009, 12:24 p.m. UTC | #1
Hi,

On Mon, Feb 9, 2009 at 1:55 PM, David Brownell <david-b@pacbell.net> wrote:
> From: David Brownell <dbrownell@users.sourceforge.net>
>
> Bugfix several GPIO mux configurations which didn't enable the
> input drivers, but weren't named as e.g. ..._GPIO141_OUT.
> These bugs were added quite recently, for OMAP3 EVM support.
>
> To help avoid such bugs in the future, update the comment to
> clarify the rule:  always use PIN_INPUT, unless the name uses
> that name suffix, to be crystal-clear on the signal's use as
> output-only.
>
> (Also adds GPIO-63, for the EVM's MMC-1 writeprotect switch.
> Presumably that works right...)
>
> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
> ---
>
>  arch/arm/mach-omap2/mux.c             |   13 ++++++++-----
>  arch/arm/plat-omap/include/mach/mux.h |    1 +
>  2 files changed, 9 insertions(+), 5 deletions(-)
>
> --- a/arch/arm/mach-omap2/mux.c
> +++ b/arch/arm/mach-omap2/mux.c
> @@ -453,6 +453,7 @@ MUX_CFG_34XX("AC1_3430_USB3FS_PHY_MM3_TX
>
>
>  /* 34XX GPIO - bidirectional, unless the name has an "_OUT" suffix.
> + * (Always specify PIN_INPUT, except for names suffixed by "_OUT".)
>  * No internal pullup/pulldown without "_UP" or "_DOWN" suffix.
>  */
>  MUX_CFG_34XX("AH8_34XX_GPIO29", 0x5fa,
> @@ -460,17 +461,19 @@ MUX_CFG_34XX("AH8_34XX_GPIO29", 0x5fa,
>  MUX_CFG_34XX("J25_34XX_GPIO170", 0x1c6,
>                OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
>  MUX_CFG_34XX("AF26_34XX_GPIO0", 0x1e0,
> -               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
> +               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
>  MUX_CFG_34XX("AF22_34XX_GPIO9", 0xa18,
> -               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
> +               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
> +MUX_CFG_34XX("L8_34XX_GPIO63", 0x0ce,
> +               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
>  MUX_CFG_34XX("AF6_34XX_GPIO140_UP", 0x16c,
>                OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT_PULLUP)
>  MUX_CFG_34XX("AE6_34XX_GPIO141", 0x16e,
> -               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
> +               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
>  MUX_CFG_34XX("AF5_34XX_GPIO142", 0x170,
> -               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
> +               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
>  MUX_CFG_34XX("AE5_34XX_GPIO143", 0x172,
> -               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
> +               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
>
>  };
>

So the thing is, OMAP34XX_PIN_INPUT doens't mean input-only, but
input-and-output. And OMAP34XX_PIN_OUTPUT doen't mean output, but output-only.
Names of macros are really confusing me. Shouldn't we change names of these
macros first? For example,
OMAP34XX_PIN_INPUT -> OMAP34XX_PIN_INPUT_EN
OMAP34XX_PIN_OUTPUT -> OMAP34XX_PIN_OUTPUT_ONLY

> --- a/arch/arm/plat-omap/include/mach/mux.h
> +++ b/arch/arm/plat-omap/include/mach/mux.h
> @@ -792,6 +792,7 @@ enum omap34xx_index {
>        J25_34XX_GPIO170,
>        AF26_34XX_GPIO0,
>        AF22_34XX_GPIO9,
> +       L8_34XX_GPIO63,
>        AF6_34XX_GPIO140_UP,
>        AE6_34XX_GPIO141,
>        AF5_34XX_GPIO142,
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
Tony Lindgren Feb. 12, 2009, 12:45 a.m. UTC | #2
* Kim Kyuwon <chammoru@gmail.com> [090209 04:25]:
> Hi,
> 
> On Mon, Feb 9, 2009 at 1:55 PM, David Brownell <david-b@pacbell.net> wrote:
> > From: David Brownell <dbrownell@users.sourceforge.net>
> >
> > Bugfix several GPIO mux configurations which didn't enable the
> > input drivers, but weren't named as e.g. ..._GPIO141_OUT.
> > These bugs were added quite recently, for OMAP3 EVM support.
> >
> > To help avoid such bugs in the future, update the comment to
> > clarify the rule:  always use PIN_INPUT, unless the name uses
> > that name suffix, to be crystal-clear on the signal's use as
> > output-only.
> >
> > (Also adds GPIO-63, for the EVM's MMC-1 writeprotect switch.
> > Presumably that works right...)
> >
> > Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
> > ---
> >
> >  arch/arm/mach-omap2/mux.c             |   13 ++++++++-----
> >  arch/arm/plat-omap/include/mach/mux.h |    1 +
> >  2 files changed, 9 insertions(+), 5 deletions(-)
> >
> > --- a/arch/arm/mach-omap2/mux.c
> > +++ b/arch/arm/mach-omap2/mux.c
> > @@ -453,6 +453,7 @@ MUX_CFG_34XX("AC1_3430_USB3FS_PHY_MM3_TX
> >
> >
> >  /* 34XX GPIO - bidirectional, unless the name has an "_OUT" suffix.
> > + * (Always specify PIN_INPUT, except for names suffixed by "_OUT".)
> >  * No internal pullup/pulldown without "_UP" or "_DOWN" suffix.
> >  */
> >  MUX_CFG_34XX("AH8_34XX_GPIO29", 0x5fa,
> > @@ -460,17 +461,19 @@ MUX_CFG_34XX("AH8_34XX_GPIO29", 0x5fa,
> >  MUX_CFG_34XX("J25_34XX_GPIO170", 0x1c6,
> >                OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
> >  MUX_CFG_34XX("AF26_34XX_GPIO0", 0x1e0,
> > -               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
> > +               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
> >  MUX_CFG_34XX("AF22_34XX_GPIO9", 0xa18,
> > -               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
> > +               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
> > +MUX_CFG_34XX("L8_34XX_GPIO63", 0x0ce,
> > +               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
> >  MUX_CFG_34XX("AF6_34XX_GPIO140_UP", 0x16c,
> >                OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT_PULLUP)
> >  MUX_CFG_34XX("AE6_34XX_GPIO141", 0x16e,
> > -               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
> > +               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
> >  MUX_CFG_34XX("AF5_34XX_GPIO142", 0x170,
> > -               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
> > +               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
> >  MUX_CFG_34XX("AE5_34XX_GPIO143", 0x172,
> > -               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
> > +               OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
> >
> >  };
> >
> 
> So the thing is, OMAP34XX_PIN_INPUT doens't mean input-only, but
> input-and-output. And OMAP34XX_PIN_OUTPUT doen't mean output, but output-only.
> Names of macros are really confusing me. Shouldn't we change names of these
> macros first? For example,
> OMAP34XX_PIN_INPUT -> OMAP34XX_PIN_INPUT_EN
> OMAP34XX_PIN_OUTPUT -> OMAP34XX_PIN_OUTPUT_ONLY

I like this idea to cut down on confusion.

Tony


> > --- a/arch/arm/plat-omap/include/mach/mux.h
> > +++ b/arch/arm/plat-omap/include/mach/mux.h
> > @@ -792,6 +792,7 @@ enum omap34xx_index {
> >        J25_34XX_GPIO170,
> >        AF26_34XX_GPIO0,
> >        AF22_34XX_GPIO9,
> > +       L8_34XX_GPIO63,
> >        AF6_34XX_GPIO140_UP,
> >        AE6_34XX_GPIO141,
> >        AF5_34XX_GPIO142,
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >
> 
> 
> 
> -- 
> Kim Kyuwon
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Brownell Feb. 12, 2009, 1:51 a.m. UTC | #3
On Wednesday 11 February 2009, Tony Lindgren wrote:
> > >
> > 
> > So the thing is, OMAP34XX_PIN_INPUT doens't mean input-only, but
> > input-and-output. And OMAP34XX_PIN_OUTPUT doen't mean output, but output-only.
> > Names of macros are really confusing me. Shouldn't we change names of these
> > macros first? For example,
> > OMAP34XX_PIN_INPUT -> OMAP34XX_PIN_INPUT_EN
> > OMAP34XX_PIN_OUTPUT -> OMAP34XX_PIN_OUTPUT_ONLY
> 
> I like this idea to cut down on confusion.

Makes sense to me.  Though I suggest merging this first,
and then changing everything in the tree ... instead of
changing everything first, and then redoing this patch.  :)

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

--- a/arch/arm/mach-omap2/mux.c
+++ b/arch/arm/mach-omap2/mux.c
@@ -453,6 +453,7 @@  MUX_CFG_34XX("AC1_3430_USB3FS_PHY_MM3_TX
 
 
 /* 34XX GPIO - bidirectional, unless the name has an "_OUT" suffix.
+ * (Always specify PIN_INPUT, except for names suffixed by "_OUT".)
  * No internal pullup/pulldown without "_UP" or "_DOWN" suffix.
  */
 MUX_CFG_34XX("AH8_34XX_GPIO29", 0x5fa,
@@ -460,17 +461,19 @@  MUX_CFG_34XX("AH8_34XX_GPIO29", 0x5fa,
 MUX_CFG_34XX("J25_34XX_GPIO170", 0x1c6,
 		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
 MUX_CFG_34XX("AF26_34XX_GPIO0", 0x1e0,
-		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
+		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
 MUX_CFG_34XX("AF22_34XX_GPIO9", 0xa18,
-		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
+		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
+MUX_CFG_34XX("L8_34XX_GPIO63", 0x0ce,
+		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
 MUX_CFG_34XX("AF6_34XX_GPIO140_UP", 0x16c,
 		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT_PULLUP)
 MUX_CFG_34XX("AE6_34XX_GPIO141", 0x16e,
-		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
+		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
 MUX_CFG_34XX("AF5_34XX_GPIO142", 0x170,
-		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
+		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
 MUX_CFG_34XX("AE5_34XX_GPIO143", 0x172,
-		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
+		OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
 
 };
 
--- a/arch/arm/plat-omap/include/mach/mux.h
+++ b/arch/arm/plat-omap/include/mach/mux.h
@@ -792,6 +792,7 @@  enum omap34xx_index {
 	J25_34XX_GPIO170,
 	AF26_34XX_GPIO0,
 	AF22_34XX_GPIO9,
+	L8_34XX_GPIO63,
 	AF6_34XX_GPIO140_UP,
 	AE6_34XX_GPIO141,
 	AF5_34XX_GPIO142,