diff options
| author | Fabio Estevam <fabio.estevam@freescale.com> | 2013-03-27 07:36:55 +0000 | 
|---|---|---|
| committer | Stefano Babic <sbabic@denx.de> | 2013-04-03 11:36:34 +0200 | 
| commit | 38e70077253a6ac55cee276be72fb4e6844042cd (patch) | |
| tree | 48c83011aa844d39c176823d3c55a6d6098eec9c | |
| parent | 50cea244fe6bd62d65fd3379e24e5fc5ac016658 (diff) | |
| download | olio-uboot-2014.01-38e70077253a6ac55cee276be72fb4e6844042cd.tar.xz olio-uboot-2014.01-38e70077253a6ac55cee276be72fb4e6844042cd.zip | |
mx6: Fix get_board_rev() for the mx6 solo case
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>
Acked-by: Dirk Behme <dirk.behme@de.bosch.com>
Acked-by: Eric Nelson <eric.nelson@boundarydevices.com>
| -rw-r--r-- | arch/arm/cpu/armv7/mx6/soc.c | 12 | ||||
| -rw-r--r-- | board/boundary/nitrogen6x/nitrogen6x.c | 5 | ||||
| -rw-r--r-- | board/freescale/mx6qsabrelite/mx6qsabrelite.c | 5 | ||||
| -rw-r--r-- | board/freescale/mx6qsabresd/mx6qsabresd.c | 5 | ||||
| -rw-r--r-- | 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 193ba1240..2ea8ca3bd 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 | (cpurev & 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 e5b7795c5..cc071d6d3 100644 --- a/board/boundary/nitrogen6x/nitrogen6x.c +++ b/board/boundary/nitrogen6x/nitrogen6x.c @@ -331,11 +331,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 0e25613f1..9f9cac82c 100644 --- a/board/freescale/mx6qsabrelite/mx6qsabrelite.c +++ b/board/freescale/mx6qsabrelite/mx6qsabrelite.c @@ -301,11 +301,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 73ab4485e..0d7cb9efd 100644 --- a/board/freescale/mx6qsabresd/mx6qsabresd.c +++ b/board/freescale/mx6qsabresd/mx6qsabresd.c @@ -254,11 +254,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 8d071e1fe..ac7b89aae 100644 --- a/board/wandboard/wandboard.c +++ b/board/wandboard/wandboard.c @@ -170,11 +170,6 @@ int board_init(void)  	return 0;  } -u32 get_board_rev(void) -{ -	return get_cpu_rev(); -} -  int checkboard(void)  {  	puts("Board: Wandboard\n"); |