[ARM] mv78xx0: distinguish between different chip steppings
During boot, identify which chip stepping we're running on (determined by looking at the first PCIe unit's device ID and revision registers), and print a message with the details about what we found. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
This commit is contained in:
Родитель
12f4815b42
Коммит
cfdeb6376e
|
@ -719,6 +719,32 @@ struct sys_timer mv78xx0_timer = {
|
|||
/*****************************************************************************
|
||||
* General
|
||||
****************************************************************************/
|
||||
static char * __init mv78xx0_id(void)
|
||||
{
|
||||
u32 dev, rev;
|
||||
|
||||
mv78xx0_pcie_id(&dev, &rev);
|
||||
|
||||
if (dev == MV78X00_Z0_DEV_ID) {
|
||||
if (rev == MV78X00_REV_Z0)
|
||||
return "MV78X00-Z0";
|
||||
else
|
||||
return "MV78X00-Rev-Unsupported";
|
||||
} else if (dev == MV78100_DEV_ID) {
|
||||
if (rev == MV78100_REV_A0)
|
||||
return "MV78100-A0";
|
||||
else
|
||||
return "MV78100-Rev-Unsupported";
|
||||
} else if (dev == MV78200_DEV_ID) {
|
||||
if (rev == MV78100_REV_A0)
|
||||
return "MV78200-A0";
|
||||
else
|
||||
return "MV78200-Rev-Unsupported";
|
||||
} else {
|
||||
return "Device-Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
static int __init is_l2_writethrough(void)
|
||||
{
|
||||
return !!(readl(CPU_CONTROL) & L2_WRITETHROUGH);
|
||||
|
@ -737,7 +763,8 @@ void __init mv78xx0_init(void)
|
|||
get_pclk_l2clk(hclk, core_index, &pclk, &l2clk);
|
||||
tclk = get_tclk();
|
||||
|
||||
printk(KERN_INFO "MV78xx0 core #%d, ", core_index);
|
||||
printk(KERN_INFO "%s ", mv78xx0_id());
|
||||
printk("core #%d, ", core_index);
|
||||
printk("PCLK = %dMHz, ", (pclk + 499999) / 1000000);
|
||||
printk("L2 = %dMHz, ", (l2clk + 499999) / 1000000);
|
||||
printk("HCLK = %dMHz, ", (hclk + 499999) / 1000000);
|
||||
|
|
|
@ -29,6 +29,8 @@ void mv78xx0_setup_pcie_io_win(int window, u32 base, u32 size,
|
|||
void mv78xx0_setup_pcie_mem_win(int window, u32 base, u32 size,
|
||||
int maj, int min);
|
||||
|
||||
void mv78xx0_pcie_id(u32 *dev, u32 *rev);
|
||||
|
||||
void mv78xx0_ehci0_init(void);
|
||||
void mv78xx0_ehci1_init(void);
|
||||
void mv78xx0_ehci2_init(void);
|
||||
|
|
|
@ -79,6 +79,18 @@
|
|||
#define IRQ_MASK_HIGH_OFF 0x0014
|
||||
#define TIMER_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0300)
|
||||
|
||||
/*
|
||||
* Supported devices and revisions.
|
||||
*/
|
||||
#define MV78X00_Z0_DEV_ID 0x6381
|
||||
#define MV78X00_REV_Z0 1
|
||||
|
||||
#define MV78100_DEV_ID 0x7810
|
||||
#define MV78100_REV_A0 1
|
||||
|
||||
#define MV78200_DEV_ID 0x7820
|
||||
#define MV78200_REV_A0 1
|
||||
|
||||
/*
|
||||
* Register Map
|
||||
*/
|
||||
|
|
|
@ -33,6 +33,12 @@ static struct resource pcie_io_space;
|
|||
static struct resource pcie_mem_space;
|
||||
|
||||
|
||||
void __init mv78xx0_pcie_id(u32 *dev, u32 *rev)
|
||||
{
|
||||
*dev = orion_pcie_dev_id((void __iomem *)PCIE00_VIRT_BASE);
|
||||
*rev = orion_pcie_rev((void __iomem *)PCIE00_VIRT_BASE);
|
||||
}
|
||||
|
||||
static void __init mv78xx0_pcie_preinit(void)
|
||||
{
|
||||
int i;
|
||||
|
|
Загрузка…
Ссылка в новой задаче