File Index
Files and directories
Sign in
FILE

db1xxx.c

File preview with syntax highlighting.

linux-6.19.14/arch/mips/alchemy/devboards/db1xxx.c C
  1// SPDX-License-Identifier: GPL-2.0
  2/*
  3 * Alchemy DB/PB1xxx board support.
  4 */
  5
  6#include <asm/prom.h>
  7#include <asm/mach-au1x00/au1000.h>
  8#include <asm/mach-db1x00/bcsr.h>
  9
 10int __init db1000_board_setup(void);
 11int __init db1000_dev_setup(void);
 12int __init db1500_pci_setup(void);
 13int __init db1200_board_setup(void);
 14int __init db1200_dev_setup(void);
 15int __init db1300_board_setup(void);
 16int __init db1300_dev_setup(void);
 17int __init db1550_board_setup(void);
 18int __init db1550_dev_setup(void);
 19int __init db1550_pci_setup(int);
 20
 21static const char *board_type_str(void)
 22{
 23	switch (BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI))) {
 24	case BCSR_WHOAMI_DB1000:
 25		return "DB1000";
 26	case BCSR_WHOAMI_DB1500:
 27		return "DB1500";
 28	case BCSR_WHOAMI_DB1100:
 29		return "DB1100";
 30	case BCSR_WHOAMI_PB1500:
 31	case BCSR_WHOAMI_PB1500R2:
 32		return "PB1500";
 33	case BCSR_WHOAMI_PB1100:
 34		return "PB1100";
 35	case BCSR_WHOAMI_PB1200_DDR1:
 36	case BCSR_WHOAMI_PB1200_DDR2:
 37		return "PB1200";
 38	case BCSR_WHOAMI_DB1200:
 39		return "DB1200";
 40	case BCSR_WHOAMI_DB1300:
 41		return "DB1300";
 42	case BCSR_WHOAMI_DB1550:
 43		return "DB1550";
 44	case BCSR_WHOAMI_PB1550_SDR:
 45	case BCSR_WHOAMI_PB1550_DDR:
 46		return "PB1550";
 47	default:
 48		return "(unknown)";
 49	}
 50}
 51
 52const char *get_system_type(void)
 53{
 54	return board_type_str();
 55}
 56
 57void __init board_setup(void)
 58{
 59	int ret;
 60
 61	switch (alchemy_get_cputype()) {
 62	case ALCHEMY_CPU_AU1000:
 63	case ALCHEMY_CPU_AU1500:
 64	case ALCHEMY_CPU_AU1100:
 65		ret = db1000_board_setup();
 66		break;
 67	case ALCHEMY_CPU_AU1550:
 68		ret = db1550_board_setup();
 69		break;
 70	case ALCHEMY_CPU_AU1200:
 71		ret = db1200_board_setup();
 72		break;
 73	case ALCHEMY_CPU_AU1300:
 74		ret = db1300_board_setup();
 75		break;
 76	default:
 77		pr_err("unsupported CPU on board\n");
 78		ret = -ENODEV;
 79	}
 80	if (ret)
 81		panic("cannot initialize board support");
 82}
 83
 84static int __init db1xxx_arch_init(void)
 85{
 86	int id = BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI));
 87	if (id == BCSR_WHOAMI_DB1550)
 88		return db1550_pci_setup(0);
 89	else if ((id == BCSR_WHOAMI_PB1550_SDR) ||
 90		 (id == BCSR_WHOAMI_PB1550_DDR))
 91		return db1550_pci_setup(1);
 92	else if ((id == BCSR_WHOAMI_DB1500) || (id == BCSR_WHOAMI_PB1500) ||
 93		 (id == BCSR_WHOAMI_PB1500R2))
 94		return db1500_pci_setup();
 95
 96	return 0;
 97}
 98arch_initcall(db1xxx_arch_init);
 99
100static int __init db1xxx_dev_init(void)
101{
102	mips_set_machine_name(board_type_str());
103	switch (BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI))) {
104	case BCSR_WHOAMI_DB1000:
105	case BCSR_WHOAMI_DB1500:
106	case BCSR_WHOAMI_DB1100:
107	case BCSR_WHOAMI_PB1500:
108	case BCSR_WHOAMI_PB1500R2:
109	case BCSR_WHOAMI_PB1100:
110		return db1000_dev_setup();
111	case BCSR_WHOAMI_PB1200_DDR1:
112	case BCSR_WHOAMI_PB1200_DDR2:
113	case BCSR_WHOAMI_DB1200:
114		return db1200_dev_setup();
115	case BCSR_WHOAMI_DB1300:
116		return db1300_dev_setup();
117	case BCSR_WHOAMI_DB1550:
118	case BCSR_WHOAMI_PB1550_SDR:
119	case BCSR_WHOAMI_PB1550_DDR:
120		return db1550_dev_setup();
121	}
122	return 0;
123}
124device_initcall(db1xxx_dev_init);
~/ Read-only file preview.