public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] mx6: Fix get_board_rev() for the mx6 solo case
@ 2013-03-27 16:36 Fabio Estevam
  2013-03-27 17:32 ` Troy Kisky
  0 siblings, 1 reply; 2+ messages in thread
From: Fabio Estevam @ 2013-03-27 16:36 UTC (permalink / raw)
  To: u-boot

When booting a Freescale kernel 3.0.35 on a Wandboard solo, the get_board_rev()
returns 0x62xxx, which is not a value understood by the VPU 
(Video Processing Unit) library in the kernel and causes the video playback to 
fail.

The expected values for get_board_rev are:
0x63xxx: For mx6quad/dual
0x61xxx: For mx6dual-lite/solo

So adjust get_board_rev() accordingly and make it as weak function, so that we
do not need to define it in every mx6 board file. 

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
 arch/arm/cpu/armv7/mx6/soc.c                  |   12 ++++++++++++
 board/boundary/nitrogen6x/nitrogen6x.c        |    5 -----
 board/freescale/mx6qsabrelite/mx6qsabrelite.c |    5 -----
 board/freescale/mx6qsabresd/mx6qsabresd.c     |    5 -----
 board/wandboard/wandboard.c                   |    5 -----
 5 files changed, 12 insertions(+), 20 deletions(-)

diff --git a/arch/arm/cpu/armv7/mx6/soc.c b/arch/arm/cpu/armv7/mx6/soc.c
index 193ba12..4f3cd14 100644
--- a/arch/arm/cpu/armv7/mx6/soc.c
+++ b/arch/arm/cpu/armv7/mx6/soc.c
@@ -61,6 +61,18 @@ u32 get_cpu_rev(void)
 	return (type << 12) | (reg + 0x10);
 }
 
+#ifdef CONFIG_REVISION_TAG
+u32 __weak get_board_rev(void)
+{
+	u32 cpurev = get_cpu_rev();
+	u32 type = ((cpurev >> 12) & 0xff);
+	if (type == MXC_CPU_MX6SOLO)
+		cpurev = (MXC_CPU_MX6DL) << 12 | (get_cpu_rev() & 0xFFF);
+
+	return cpurev;
+}
+#endif
+
 void init_aips(void)
 {
 	struct aipstz_regs *aips1, *aips2;
diff --git a/board/boundary/nitrogen6x/nitrogen6x.c b/board/boundary/nitrogen6x/nitrogen6x.c
index 229c237..1b1bedf 100644
--- a/board/boundary/nitrogen6x/nitrogen6x.c
+++ b/board/boundary/nitrogen6x/nitrogen6x.c
@@ -328,11 +328,6 @@ int board_mmc_init(bd_t *bis)
 }
 #endif
 
-u32 get_board_rev(void)
-{
-	return 0x63000;
-}
-
 #ifdef CONFIG_MXC_SPI
 iomux_v3_cfg_t const ecspi1_pads[] = {
 	/* SS1 */
diff --git a/board/freescale/mx6qsabrelite/mx6qsabrelite.c b/board/freescale/mx6qsabrelite/mx6qsabrelite.c
index 5b69a6d..782e5ba 100644
--- a/board/freescale/mx6qsabrelite/mx6qsabrelite.c
+++ b/board/freescale/mx6qsabrelite/mx6qsabrelite.c
@@ -298,11 +298,6 @@ int board_mmc_init(bd_t *bis)
 }
 #endif
 
-u32 get_board_rev(void)
-{
-	return 0x63000 ;
-}
-
 #ifdef CONFIG_MXC_SPI
 iomux_v3_cfg_t const ecspi1_pads[] = {
 	/* SS1 */
diff --git a/board/freescale/mx6qsabresd/mx6qsabresd.c b/board/freescale/mx6qsabresd/mx6qsabresd.c
index 2b3926a..806769f 100644
--- a/board/freescale/mx6qsabresd/mx6qsabresd.c
+++ b/board/freescale/mx6qsabresd/mx6qsabresd.c
@@ -239,11 +239,6 @@ int board_eth_init(bd_t *bis)
 	return 0;
 }
 
-u32 get_board_rev(void)
-{
-	return 0x63000;
-}
-
 int board_early_init_f(void)
 {
 	setup_iomux_uart();
diff --git a/board/wandboard/wandboard.c b/board/wandboard/wandboard.c
index d95189f..1e379fb 100644
--- a/board/wandboard/wandboard.c
+++ b/board/wandboard/wandboard.c
@@ -168,11 +168,6 @@ int board_init(void)
 	return 0;
 }
 
-u32 get_board_rev(void)
-{
-	return get_cpu_rev();
-}
-
 int checkboard(void)
 {
 	puts("Board: Wandboard\n");
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [U-Boot] [PATCH] mx6: Fix get_board_rev() for the mx6 solo case
  2013-03-27 16:36 [U-Boot] [PATCH] mx6: Fix get_board_rev() for the mx6 solo case Fabio Estevam
@ 2013-03-27 17:32 ` Troy Kisky
  0 siblings, 0 replies; 2+ messages in thread
From: Troy Kisky @ 2013-03-27 17:32 UTC (permalink / raw)
  To: u-boot

On 3/27/2013 9:36 AM, Fabio Estevam wrote:
> When booting a Freescale kernel 3.0.35 on a Wandboard solo, the get_board_rev()
> returns 0x62xxx, which is not a value understood by the VPU
> (Video Processing Unit) library in the kernel and causes the video playback to
> fail.
>
> The expected values for get_board_rev are:
> 0x63xxx: For mx6quad/dual
> 0x61xxx: For mx6dual-lite/solo
>
> So adjust get_board_rev() accordingly and make it as weak function, so that we
> do not need to define it in every mx6 board file.
>
> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
> ---
>   arch/arm/cpu/armv7/mx6/soc.c                  |   12 ++++++++++++
>   board/boundary/nitrogen6x/nitrogen6x.c        |    5 -----
>   board/freescale/mx6qsabrelite/mx6qsabrelite.c |    5 -----
>   board/freescale/mx6qsabresd/mx6qsabresd.c     |    5 -----
>   board/wandboard/wandboard.c                   |    5 -----
>   5 files changed, 12 insertions(+), 20 deletions(-)
>
> diff --git a/arch/arm/cpu/armv7/mx6/soc.c b/arch/arm/cpu/armv7/mx6/soc.c
> index 193ba12..4f3cd14 100644
> --- a/arch/arm/cpu/armv7/mx6/soc.c
> +++ b/arch/arm/cpu/armv7/mx6/soc.c
> @@ -61,6 +61,18 @@ u32 get_cpu_rev(void)
>   	return (type << 12) | (reg + 0x10);
>   }
>   
> +#ifdef CONFIG_REVISION_TAG
> +u32 __weak get_board_rev(void)
> +{
> +	u32 cpurev = get_cpu_rev();
> +	u32 type = ((cpurev >> 12) & 0xff);
> +	if (type == MXC_CPU_MX6SOLO)
> +		cpurev = (MXC_CPU_MX6DL) << 12 | (get_cpu_rev() & 0xFFF);

Why call get_cpu_rev again?

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-03-27 17:32 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-27 16:36 [U-Boot] [PATCH] mx6: Fix get_board_rev() for the mx6 solo case Fabio Estevam
2013-03-27 17:32 ` Troy Kisky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox