Patchwork [U-Boot] edminiv2: orion5x: fix GPIO inits and values

login
register
mail settings
Submitter Albert ARIBAUD
Date Aug. 16, 2012, 4:35 p.m.
Message ID <1345134922-30079-1-git-send-email-albert.u.boot@aribaud.net>
Download mbox | patch
Permalink /patch/178048/
State Accepted
Delegated to: Prafulla Wadaskar
Headers show

Comments

Albert ARIBAUD - Aug. 16, 2012, 4:35 p.m.
Orion5x did not actually write GPIO output values
or input polarities, and ED Mini V2 had bad or
missing values for GPIO settings.

Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
---
 arch/arm/cpu/arm926ejs/orion5x/cpu.c |    2 ++
 include/configs/edminiv2.h           |   13 +++++++++----
 2 files changed, 11 insertions(+), 4 deletions(-)
Prafulla Wadaskar - Aug. 17, 2012, 7:55 a.m.
> -----Original Message-----
> From: u-boot-bounces@lists.denx.de [mailto:u-boot-
> bounces@lists.denx.de] On Behalf Of Albert ARIBAUD
> Sent: 16 August 2012 22:05
> To: u-boot@lists.denx.de
> Subject: [U-Boot] [PATCH] edminiv2: orion5x: fix GPIO inits and values
> 
> Orion5x did not actually write GPIO output values
> or input polarities, and ED Mini V2 had bad or
> missing values for GPIO settings.
> 
> Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
> ---
>  arch/arm/cpu/arm926ejs/orion5x/cpu.c |    2 ++
>  include/configs/edminiv2.h           |   13 +++++++++----
>  2 files changed, 11 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm/cpu/arm926ejs/orion5x/cpu.c
> b/arch/arm/cpu/arm926ejs/orion5x/cpu.c
> index 792b11d..c3948d3 100644
> --- a/arch/arm/cpu/arm926ejs/orion5x/cpu.c
> +++ b/arch/arm/cpu/arm926ejs/orion5x/cpu.c
> @@ -292,7 +292,9 @@ int arch_misc_init(void)
>  	writel(ORION5X_MPP0_7, ORION5X_MPP_BASE+0x00);
>  	writel(ORION5X_MPP8_15, ORION5X_MPP_BASE+0x04);
>  	writel(ORION5X_MPP16_23, ORION5X_MPP_BASE+0x50);
> +	writel(ORION5X_GPIO_OUT_VALUE, ORION5X_GPIO_BASE+0x00);
>  	writel(ORION5X_GPIO_OUT_ENABLE, ORION5X_GPIO_BASE+0x04);
> +	writel(ORION5X_GPIO_IN_POLARITY, ORION5X_GPIO_BASE+0x0c);
> 
>  	/* initialize timer */
>  	timer_init_r();
> diff --git a/include/configs/edminiv2.h b/include/configs/edminiv2.h
> index 6a67aa5..1541cfb 100644
> --- a/include/configs/edminiv2.h
> +++ b/include/configs/edminiv2.h
> @@ -69,13 +69,18 @@
>   * - GPIO16 is Power LED control (0 = on, 1 = off)
>   * - GPIO17 is Power LED source select (0 = CPLD, 1 = GPIO16)
>   * - GPIO18 is Power Button status (0 = Released, 1 = Pressed)
> - * - Last GPIO is 26, further bits are supposed to be 0.
> + * - GPIO19 is SATA disk power toggle (toggles on 0-to-1)
> + * - GPIO22 is SATA disk power status ()
> + * - GPIO23 is supply status for SATA disk ()
> + * - GPIO24 is supply control for board (write 1 to power off)
> + * Last GPIO is 25, further bits are supposed to be 0.
>   * Enable mask has ones for INPUT, 0 for OUTPUT.
> - * Default is LED ON.
> + * Default is LED ON, board ON :)
>   */
> 
> -#define ORION5X_GPIO_OUT_ENABLE	0x03fcffff
> -#define ORION5X_GPIO_OUT_VALUE	0x03fcffff
> +#define ORION5X_GPIO_OUT_ENABLE		0xfef4f0ca
> +#define ORION5X_GPIO_OUT_VALUE		0x00000000
> +#define ORION5X_GPIO_IN_POLARITY	0x000000d0
> 
>  /*
>   * NS16550 Configuration
> --

Acked-By: Prafulla Wadaskar <prafulla@marvell.com>
Will pull this patch soon.

Regards..
Prafulla . . .
Robert Thorhuus - Aug. 17, 2012, 8:59 a.m.
Hello!

I hope you all can help me with understanding.

Some (all?) PowerPC implementations have a bit in the MSR to tell the core to run in either 32 bit or 64 bit mode. At least my core "in front of me" has this. It is a 64 bit implementation and I need to be able to boot both 32/64 bit OSes (with same U-Boot).

My initial hope was that 32 bit programs would run in 64 bit mode. This to ease up my U-Boot implementation. And as far as I know you do not change the bootloader when you switch between a 32 bit OS and a 64 bit OS on your PC?! But of course that bit in the MSR is there for a reason :)

So, my guess how to solve this is that bootloaders are usually 32 bit to be backward compatible and let the OS decide to step up to 64-bit or not. Is this true and the general rule? 

But I feel there are occassions when a 64 bit bootloader is nice, to access more memory at once for instance. 
Do you have any recommendations for me?

Thanks
BR
Robert
Prafulla Wadaskar - Sept. 3, 2012, 8:18 a.m.
> -----Original Message-----
> From: Prafulla Wadaskar
> Sent: 17 August 2012 13:25
> To: 'Albert ARIBAUD'; u-boot@lists.denx.de
> Subject: RE: [U-Boot] [PATCH] edminiv2: orion5x: fix GPIO inits and
> values
> 
> 
> 
> > -----Original Message-----
> > From: u-boot-bounces@lists.denx.de [mailto:u-boot-
> > bounces@lists.denx.de] On Behalf Of Albert ARIBAUD
> > Sent: 16 August 2012 22:05
> > To: u-boot@lists.denx.de
> > Subject: [U-Boot] [PATCH] edminiv2: orion5x: fix GPIO inits and
> values
> >
> > Orion5x did not actually write GPIO output values
> > or input polarities, and ED Mini V2 had bad or
> > missing values for GPIO settings.
> >
> > Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
> > ---
> >  arch/arm/cpu/arm926ejs/orion5x/cpu.c |    2 ++
> >  include/configs/edminiv2.h           |   13 +++++++++----
> >  2 files changed, 11 insertions(+), 4 deletions(-)
> >
> > diff --git a/arch/arm/cpu/arm926ejs/orion5x/cpu.c
> > b/arch/arm/cpu/arm926ejs/orion5x/cpu.c
> > index 792b11d..c3948d3 100644
> > --- a/arch/arm/cpu/arm926ejs/orion5x/cpu.c
> > +++ b/arch/arm/cpu/arm926ejs/orion5x/cpu.c
> > @@ -292,7 +292,9 @@ int arch_misc_init(void)
> >  	writel(ORION5X_MPP0_7, ORION5X_MPP_BASE+0x00);
> >  	writel(ORION5X_MPP8_15, ORION5X_MPP_BASE+0x04);
> >  	writel(ORION5X_MPP16_23, ORION5X_MPP_BASE+0x50);
> > +	writel(ORION5X_GPIO_OUT_VALUE, ORION5X_GPIO_BASE+0x00);
> >  	writel(ORION5X_GPIO_OUT_ENABLE, ORION5X_GPIO_BASE+0x04);
> > +	writel(ORION5X_GPIO_IN_POLARITY, ORION5X_GPIO_BASE+0x0c);
> >
> >  	/* initialize timer */
> >  	timer_init_r();
> > diff --git a/include/configs/edminiv2.h b/include/configs/edminiv2.h
> > index 6a67aa5..1541cfb 100644
> > --- a/include/configs/edminiv2.h
> > +++ b/include/configs/edminiv2.h
> > @@ -69,13 +69,18 @@
> >   * - GPIO16 is Power LED control (0 = on, 1 = off)
> >   * - GPIO17 is Power LED source select (0 = CPLD, 1 = GPIO16)
> >   * - GPIO18 is Power Button status (0 = Released, 1 = Pressed)
> > - * - Last GPIO is 26, further bits are supposed to be 0.
> > + * - GPIO19 is SATA disk power toggle (toggles on 0-to-1)
> > + * - GPIO22 is SATA disk power status ()
> > + * - GPIO23 is supply status for SATA disk ()
> > + * - GPIO24 is supply control for board (write 1 to power off)
> > + * Last GPIO is 25, further bits are supposed to be 0.
> >   * Enable mask has ones for INPUT, 0 for OUTPUT.
> > - * Default is LED ON.
> > + * Default is LED ON, board ON :)
> >   */
> >
> > -#define ORION5X_GPIO_OUT_ENABLE	0x03fcffff
> > -#define ORION5X_GPIO_OUT_VALUE	0x03fcffff
> > +#define ORION5X_GPIO_OUT_ENABLE		0xfef4f0ca
> > +#define ORION5X_GPIO_OUT_VALUE		0x00000000
> > +#define ORION5X_GPIO_IN_POLARITY	0x000000d0
> >
> >  /*
> >   * NS16550 Configuration
> > --
> 
> Acked-By: Prafulla Wadaskar <prafulla@marvell.com>
> Will pull this patch soon.

Applied to u-boot-marvell.git master branch

Regards...
Prafulla . . .

Patch

diff --git a/arch/arm/cpu/arm926ejs/orion5x/cpu.c b/arch/arm/cpu/arm926ejs/orion5x/cpu.c
index 792b11d..c3948d3 100644
--- a/arch/arm/cpu/arm926ejs/orion5x/cpu.c
+++ b/arch/arm/cpu/arm926ejs/orion5x/cpu.c
@@ -292,7 +292,9 @@  int arch_misc_init(void)
 	writel(ORION5X_MPP0_7, ORION5X_MPP_BASE+0x00);
 	writel(ORION5X_MPP8_15, ORION5X_MPP_BASE+0x04);
 	writel(ORION5X_MPP16_23, ORION5X_MPP_BASE+0x50);
+	writel(ORION5X_GPIO_OUT_VALUE, ORION5X_GPIO_BASE+0x00);
 	writel(ORION5X_GPIO_OUT_ENABLE, ORION5X_GPIO_BASE+0x04);
+	writel(ORION5X_GPIO_IN_POLARITY, ORION5X_GPIO_BASE+0x0c);
 
 	/* initialize timer */
 	timer_init_r();
diff --git a/include/configs/edminiv2.h b/include/configs/edminiv2.h
index 6a67aa5..1541cfb 100644
--- a/include/configs/edminiv2.h
+++ b/include/configs/edminiv2.h
@@ -69,13 +69,18 @@ 
  * - GPIO16 is Power LED control (0 = on, 1 = off)
  * - GPIO17 is Power LED source select (0 = CPLD, 1 = GPIO16)
  * - GPIO18 is Power Button status (0 = Released, 1 = Pressed)
- * - Last GPIO is 26, further bits are supposed to be 0.
+ * - GPIO19 is SATA disk power toggle (toggles on 0-to-1)
+ * - GPIO22 is SATA disk power status ()
+ * - GPIO23 is supply status for SATA disk ()
+ * - GPIO24 is supply control for board (write 1 to power off)
+ * Last GPIO is 25, further bits are supposed to be 0.
  * Enable mask has ones for INPUT, 0 for OUTPUT.
- * Default is LED ON.
+ * Default is LED ON, board ON :)
  */
 
-#define ORION5X_GPIO_OUT_ENABLE	0x03fcffff
-#define ORION5X_GPIO_OUT_VALUE	0x03fcffff
+#define ORION5X_GPIO_OUT_ENABLE		0xfef4f0ca
+#define ORION5X_GPIO_OUT_VALUE		0x00000000
+#define ORION5X_GPIO_IN_POLARITY	0x000000d0
 
 /*
  * NS16550 Configuration