mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-18 13:11:31 +00:00
arm: mvebu: Add support for MV78260
This patch adds support for the dual core Armada XP variant, the MV78260. It has some minor differences to the 4-core MV78460, e.g. only 12 serdes lanes. Signed-off-by: Stefan Roese <sr@denx.de> Cc: Luka Perkov <luka.perkov@sartura.hr> Cc: Phil Sutter <phil@nwl.cc>
This commit is contained in:
parent
00a457b22e
commit
bf0db8b82a
3 changed files with 29 additions and 5 deletions
|
@ -50,7 +50,7 @@ int mvebu_soc_family(void)
|
|||
{
|
||||
u16 devid = (readl(MVEBU_REG_PCIE_DEVID) >> 16) & 0xffff;
|
||||
|
||||
if (devid == SOC_MV78460_ID)
|
||||
if ((devid == SOC_MV78260_ID) || (devid == SOC_MV78460_ID))
|
||||
return MVEBU_SOC_AXP;
|
||||
|
||||
if (devid == SOC_88F6810_ID || devid == SOC_88F6820_ID ||
|
||||
|
@ -69,6 +69,9 @@ int print_cpuinfo(void)
|
|||
puts("SoC: ");
|
||||
|
||||
switch (devid) {
|
||||
case SOC_MV78260_ID:
|
||||
puts("MV78260-");
|
||||
break;
|
||||
case SOC_MV78460_ID:
|
||||
puts("MV78460-");
|
||||
break;
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#ifndef _MVEBU_SOC_H
|
||||
#define _MVEBU_SOC_H
|
||||
|
||||
#define SOC_MV78260_ID 0x7826
|
||||
#define SOC_MV78460_ID 0x7846
|
||||
#define SOC_88F6810_ID 0x6810
|
||||
#define SOC_88F6820_ID 0x6820
|
||||
|
|
|
@ -190,8 +190,15 @@ __weak MV_BIN_SERDES_CFG *board_serdes_cfg_get(u8 pex_mode)
|
|||
|
||||
u16 ctrl_model_get(void)
|
||||
{
|
||||
/* Right now only MV78460 supported */
|
||||
/*
|
||||
* SoC version can't be autodetected. So we need to rely on a define
|
||||
* from the config system here.
|
||||
*/
|
||||
#ifdef CONFIG_MV78260
|
||||
return MV_78260_DEV_ID;
|
||||
#else
|
||||
return MV_78460_DEV_ID;
|
||||
#endif
|
||||
}
|
||||
|
||||
u32 get_line_cfg(u32 line_num, MV_BIN_SERDES_CFG *info)
|
||||
|
@ -202,6 +209,18 @@ u32 get_line_cfg(u32 line_num, MV_BIN_SERDES_CFG *info)
|
|||
return (info->line8_15 >> ((line_num - 8) << 2)) & 0xF;
|
||||
}
|
||||
|
||||
static int serdes_max_lines_get(void)
|
||||
{
|
||||
switch (ctrl_model_get()) {
|
||||
case MV_78260_DEV_ID:
|
||||
return 12;
|
||||
case MV_78460_DEV_ID:
|
||||
return 16;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int serdes_phy_config(void)
|
||||
{
|
||||
int status = MV_OK;
|
||||
|
@ -226,10 +245,9 @@ int serdes_phy_config(void)
|
|||
u32 pex_if_num;
|
||||
|
||||
/*
|
||||
* TODO:
|
||||
* Right now we only support the MV78460 with 16 serdes lines
|
||||
* Get max. serdes lines count
|
||||
*/
|
||||
max_serdes_lines = 16;
|
||||
max_serdes_lines = serdes_max_lines_get();
|
||||
if (max_serdes_lines == 0)
|
||||
return MV_OK;
|
||||
|
||||
|
@ -253,6 +271,8 @@ int serdes_phy_config(void)
|
|||
if ((u8) MV_ERROR == (u8) satr11)
|
||||
return MV_ERROR;
|
||||
break;
|
||||
default:
|
||||
satr11 = 0;
|
||||
}
|
||||
|
||||
board_modules_scan();
|
||||
|
|
Loading…
Add table
Reference in a new issue