mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-10-02 01:20:47 +09:00
armv8: ls1046afrwy: Fix get_board_version implementation
Current implementation to get board version through GPIO is broken due to endianness issue hence it is not working for rev B board. Fix it to make it work for Rev A as well as Rev B boards Signed-off-by: Pramod Kumar <pramod.kumar_1@nxp.com> Signed-off-by: Priyanka Jain <priyanka.jain@nxp.com>
This commit is contained in:
parent
5d168adf2b
commit
f5d7a46f36
@ -24,7 +24,8 @@
|
|||||||
#define LS1046A_PORSR1_REG 0x1EE0000
|
#define LS1046A_PORSR1_REG 0x1EE0000
|
||||||
#define BOOT_SRC_SD 0x20000000
|
#define BOOT_SRC_SD 0x20000000
|
||||||
#define BOOT_SRC_MASK 0xFF800000
|
#define BOOT_SRC_MASK 0xFF800000
|
||||||
#define BOARD_REV_GPIO 13
|
#define BOARD_REV_GPIO_SHIFT 17
|
||||||
|
#define BOARD_REV_MASK 0x03
|
||||||
#define USB2_SEL_MASK 0x00000100
|
#define USB2_SEL_MASK 0x00000100
|
||||||
|
|
||||||
#define BYTE_SWAP_32(word) ((((word) & 0xff000000) >> 24) | \
|
#define BYTE_SWAP_32(word) ((((word) & 0xff000000) >> 24) | \
|
||||||
@ -87,10 +88,14 @@ int board_early_init_f(void)
|
|||||||
|
|
||||||
static inline uint8_t get_board_version(void)
|
static inline uint8_t get_board_version(void)
|
||||||
{
|
{
|
||||||
u8 val;
|
|
||||||
struct ccsr_gpio *pgpio = (void *)(GPIO2_BASE_ADDR);
|
struct ccsr_gpio *pgpio = (void *)(GPIO2_BASE_ADDR);
|
||||||
|
|
||||||
val = (in_le32(&pgpio->gpdat) >> BOARD_REV_GPIO) & 0x03;
|
/* GPIO 13 and GPIO 14 are used for Board Rev */
|
||||||
|
u32 gpio_val = ((in_be32(&pgpio->gpdat) >> BOARD_REV_GPIO_SHIFT))
|
||||||
|
& BOARD_REV_MASK;
|
||||||
|
|
||||||
|
/* GPIOs' are 0..31 in Big Endiness, swap GPIO 13 and GPIO 14 */
|
||||||
|
u8 val = ((gpio_val >> 1) | (gpio_val << 1)) & BOARD_REV_MASK;
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user