
- add kirkwood_id to detect supported devices and revisions
Signed-off-by: drEagle uboot@doukki.net
arch/arm/cpu/arm926ejs/kirkwood/cpu.c | arch/arm/include/asm/arch-kirkwood/cpu.h |
diff --git a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c index fba5e01..720fccf 100644 --- a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c +++ b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c @@ -350,6 +350,64 @@ int arch_cpu_init(void) } #endif /* CONFIG_ARCH_CPU_INIT */
+/***************************************************************************** + * General + ****************************************************************************/ +#if defined(CONFIG_ARCH_DEV_ID) + +void kirkwood_pcie_id(u32 *dev, u32 *rev) +{ + *dev = (readl(KW_REG_PCIE_DEVID) >> 16) & 0xffff; + *rev = readl(KW_REG_PCIE_REVID) & 0xff; +} + +/* + * Identify device ID and revision. + */ +char *kirkwood_id(void) +{ + u32 dev, rev; + + kirkwood_pcie_id(&dev, &rev); + + if (dev == MV88F6281_DEV_ID) { + if (rev == MV88F6281_REV_Z0) + return "MV88F6281-Z0"; + else if (rev == MV88F6281_REV_A0) + return "MV88F6281-A0"; + else if (rev == MV88F6281_REV_A1) + return "MV88F6281-A1"; + else + return "MV88F6281-Rev-Unsupported"; + } else if (dev == MV88F6192_DEV_ID) { + if (rev == MV88F6192_REV_Z0) + return "MV88F6192-Z0"; + else if (rev == MV88F6192_REV_A0) + return "MV88F6192-A0"; + else if (rev == MV88F6192_REV_A1) + return "MV88F6192-A1"; + else + return "MV88F6192-Rev-Unsupported"; + } else if (dev == MV88F6180_DEV_ID) { + if (rev == MV88F6180_REV_A0) + return "MV88F6180-Rev-A0"; + else if (rev == MV88F6180_REV_A1) + return "MV88F6180-Rev-A1"; + else + return "MV88F6180-Rev-Unsupported"; + } else if (dev == MV88F6282_DEV_ID) { + if (rev == MV88F6282_REV_A0) + return "MV88F6282-Rev-A0"; + else if (rev == MV88F6282_REV_A1) + return "MV88F6282-Rev-A1"; + else + return "MV88F6282-Rev-Unsupported"; + } else { + return "Device-Unknown"; + } +} +#endif /* CONFIG_ARCH_DEV_ID */ + /* * SOC specific misc init */ --- a/arch/arm/include/asm/arch-kirkwood/cpu.h +++ b/arch/arm/include/asm/arch-kirkwood/cpu.h @@ -167,5 +167,7 @@ int kw_config_mpp(unsigned int mpp0_7, unsigned int mpp8_15, unsigned int mpp32_39, unsigned int mpp40_47, unsigned int mpp48_55); unsigned int kw_winctrl_calcsize(unsigned int sizeval); +void kirkwood_pcie_id(u32 *dev, u32 *rev); +char *kirkwood_id(void); #endif /* __ASSEMBLY__ */ #endif /* _KWCPU_H */