mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
24e8c1a611
The PB1550 is more or less a DB1550 without the PCI IDE controller, a more complicated (read: configurable) Flash setup and some other minor changes. Like the DB1550 it can be automatically detected by reading the CPLD ID register bits. This patch adds PB1550 detection and setup to the DB1550 code. Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/4337/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
95 lines
2.0 KiB
C
95 lines
2.0 KiB
C
/*
|
|
* DB1200/PB1200 / DB1550 / DB1300 board support.
|
|
*
|
|
* These 4 boards can reliably be supported in a single kernel image.
|
|
*/
|
|
|
|
#include <asm/mach-au1x00/au1000.h>
|
|
#include <asm/mach-db1x00/bcsr.h>
|
|
|
|
int __init db1200_board_setup(void);
|
|
int __init db1200_dev_setup(void);
|
|
int __init db1300_board_setup(void);
|
|
int __init db1300_dev_setup(void);
|
|
int __init db1550_board_setup(void);
|
|
int __init db1550_dev_setup(void);
|
|
int __init db1550_pci_setup(int);
|
|
|
|
static const char *board_type_str(void)
|
|
{
|
|
switch (BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI))) {
|
|
case BCSR_WHOAMI_PB1200_DDR1:
|
|
case BCSR_WHOAMI_PB1200_DDR2:
|
|
return "PB1200";
|
|
case BCSR_WHOAMI_DB1200:
|
|
return "DB1200";
|
|
case BCSR_WHOAMI_DB1300:
|
|
return "DB1300";
|
|
case BCSR_WHOAMI_DB1550:
|
|
return "DB1550";
|
|
case BCSR_WHOAMI_PB1550_SDR:
|
|
case BCSR_WHOAMI_PB1550_DDR:
|
|
return "PB1550";
|
|
default:
|
|
return "(unknown)";
|
|
}
|
|
}
|
|
|
|
const char *get_system_type(void)
|
|
{
|
|
return board_type_str();
|
|
}
|
|
|
|
void __init board_setup(void)
|
|
{
|
|
int ret;
|
|
|
|
switch (alchemy_get_cputype()) {
|
|
case ALCHEMY_CPU_AU1550:
|
|
ret = db1550_board_setup();
|
|
break;
|
|
case ALCHEMY_CPU_AU1200:
|
|
ret = db1200_board_setup();
|
|
break;
|
|
case ALCHEMY_CPU_AU1300:
|
|
ret = db1300_board_setup();
|
|
break;
|
|
default:
|
|
pr_err("unsupported CPU on board\n");
|
|
ret = -ENODEV;
|
|
}
|
|
if (ret)
|
|
panic("cannot initialize board support\n");
|
|
}
|
|
|
|
int __init db1235_arch_init(void)
|
|
{
|
|
int id = BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI));
|
|
if (id == BCSR_WHOAMI_DB1550)
|
|
return db1550_pci_setup(0);
|
|
else if ((id == BCSR_WHOAMI_PB1550_SDR) ||
|
|
(id == BCSR_WHOAMI_PB1550_DDR))
|
|
return db1550_pci_setup(1);
|
|
|
|
return 0;
|
|
}
|
|
arch_initcall(db1235_arch_init);
|
|
|
|
int __init db1235_dev_init(void)
|
|
{
|
|
switch (BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI))) {
|
|
case BCSR_WHOAMI_PB1200_DDR1:
|
|
case BCSR_WHOAMI_PB1200_DDR2:
|
|
case BCSR_WHOAMI_DB1200:
|
|
return db1200_dev_setup();
|
|
case BCSR_WHOAMI_DB1300:
|
|
return db1300_dev_setup();
|
|
case BCSR_WHOAMI_DB1550:
|
|
case BCSR_WHOAMI_PB1550_SDR:
|
|
case BCSR_WHOAMI_PB1550_DDR:
|
|
return db1550_dev_setup();
|
|
}
|
|
return 0;
|
|
}
|
|
device_initcall(db1235_dev_init);
|