Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2)  *  linux/arch/m68k/sun3/config.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  *  Copyright (C) 1996,1997 Pekka Pietik{inen
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  * This file is subject to the terms and conditions of the GNU General Public
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  * License.  See the file COPYING in the main directory of this archive
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  * for more details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) #include <linux/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) #include <linux/kernel.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #include <linux/mm.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) #include <linux/seq_file.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) #include <linux/tty.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) #include <linux/console.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) #include <linux/init.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) #include <linux/memblock.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) #include <linux/platform_device.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) #include <asm/oplib.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) #include <asm/setup.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) #include <asm/contregs.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) #include <asm/movs.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) #include <asm/pgalloc.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) #include <asm/sun3-head.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) #include <asm/sun3mmu.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) #include <asm/machdep.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) #include <asm/machines.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) #include <asm/idprom.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) #include <asm/intersil.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) #include <asm/irq.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) #include <asm/sections.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) #include <asm/segment.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) #include <asm/sun3ints.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) char sun3_reserved_pmeg[SUN3_PMEGS_NUM];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) static void sun3_sched_init(irq_handler_t handler);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) extern void sun3_get_model (char* model);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) extern int sun3_hwclk(int set, struct rtc_time *t);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) volatile char* clock_va;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) extern unsigned long availmem;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) unsigned long num_pages;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) static void sun3_get_hardware_list(struct seq_file *m)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	seq_printf(m, "PROM Revision:\t%s\n", romvec->pv_monid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) void __init sun3_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 	unsigned char enable_register;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	m68k_machtype= MACH_SUN3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 	m68k_cputype = CPU_68020;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 	m68k_fputype = FPU_68881; /* mc68881 actually */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 	m68k_mmutype = MMU_SUN3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 	clock_va    =          (char *) 0xfe06000;	/* dark  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 	sun3_intreg = (unsigned char *) 0xfe0a000;	/* magic */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 	sun3_disable_interrupts();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 	prom_init((void *)LINUX_OPPROM_BEGVM);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 	GET_CONTROL_BYTE(AC_SENABLE,enable_register);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 	enable_register |= 0x50; /* Enable FPU */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 	SET_CONTROL_BYTE(AC_SENABLE,enable_register);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	GET_CONTROL_BYTE(AC_SENABLE,enable_register);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 	/* This code looks suspicious, because it doesn't subtract
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73)            memory belonging to the kernel from the available space */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 	memset(sun3_reserved_pmeg, 0, sizeof(sun3_reserved_pmeg));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	/* Reserve important PMEGS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 	/* FIXME: These should be probed instead of hardcoded */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 	for (i=0; i<8; i++)		/* Kernel PMEGs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 		sun3_reserved_pmeg[i] = 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	sun3_reserved_pmeg[247] = 1;	/* ROM mapping  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 	sun3_reserved_pmeg[248] = 1;	/* AMD Ethernet */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 	sun3_reserved_pmeg[251] = 1;	/* VB area      */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 	sun3_reserved_pmeg[254] = 1;	/* main I/O     */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 	sun3_reserved_pmeg[249] = 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 	sun3_reserved_pmeg[252] = 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 	sun3_reserved_pmeg[253] = 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 	set_fs(KERNEL_DS);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) /* Without this, Bad Things happen when something calls arch_reset. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) static void sun3_reboot (void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 	prom_reboot ("vmlinux");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) static void sun3_halt (void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 	prom_halt ();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) /* sun3 bootmem allocation */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) static void __init sun3_bootmem_alloc(unsigned long memory_start,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 				      unsigned long memory_end)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 	unsigned long start_page;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 	/* align start/end to page boundaries */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 	memory_start = ((memory_start + (PAGE_SIZE-1)) & PAGE_MASK);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 	memory_end = memory_end & PAGE_MASK;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 	start_page = __pa(memory_start) >> PAGE_SHIFT;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 	max_pfn = num_pages = __pa(memory_end) >> PAGE_SHIFT;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 	high_memory = (void *)memory_end;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 	availmem = memory_start;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 	m68k_setup_node(0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) void __init config_sun3(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 	unsigned long memory_start, memory_end;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 	pr_info("ARCH: SUN3\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 	idprom_init();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 	/* Subtract kernel memory from available memory */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)         mach_sched_init      =  sun3_sched_init;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137)         mach_init_IRQ        =  sun3_init_IRQ;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)         mach_reset           =  sun3_reboot;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 	mach_get_model	     =  sun3_get_model;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 	mach_hwclk           =  sun3_hwclk;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 	mach_halt	     =  sun3_halt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 	mach_get_hardware_list = sun3_get_hardware_list;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 	memory_start = ((((unsigned long)_end) + 0x2000) & ~0x1fff);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) // PROM seems to want the last couple of physical pages. --m
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 	memory_end   = *(romvec->pv_sun3mem) + PAGE_OFFSET - 2*PAGE_SIZE;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 	m68k_num_memory=1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149)         m68k_memory[0].size=*(romvec->pv_sun3mem);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 	sun3_bootmem_alloc(memory_start, memory_end);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) static void __init sun3_sched_init(irq_handler_t timer_routine)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 	sun3_disable_interrupts();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157)         intersil_clock->cmd_reg=(INTERSIL_RUN|INTERSIL_INT_DISABLE|INTERSIL_24H_MODE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158)         intersil_clock->int_reg=INTERSIL_HZ_100_MASK;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 	intersil_clear();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160)         sun3_enable_irq(5);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161)         intersil_clock->cmd_reg=(INTERSIL_RUN|INTERSIL_INT_ENABLE|INTERSIL_24H_MODE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162)         sun3_enable_interrupts();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163)         intersil_clear();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) #if IS_ENABLED(CONFIG_SUN3_SCSI)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) static const struct resource sun3_scsi_vme_rsrc[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 		.flags = IORESOURCE_IRQ,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 		.start = SUN3_VEC_VMESCSI0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 		.end   = SUN3_VEC_VMESCSI0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 	}, {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) 		.flags = IORESOURCE_MEM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) 		.start = 0xff200000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 		.end   = 0xff200021,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) 	}, {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 		.flags = IORESOURCE_IRQ,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 		.start = SUN3_VEC_VMESCSI1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 		.end   = SUN3_VEC_VMESCSI1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) 	}, {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 		.flags = IORESOURCE_MEM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 		.start = 0xff204000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 		.end   = 0xff204021,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189)  * Int: level 2 autovector
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190)  * IO: type 1, base 0x00140000, 5 bits phys space: A<4..0>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) static const struct resource sun3_scsi_rsrc[] __initconst = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 		.flags = IORESOURCE_IRQ,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 		.start = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) 		.end   = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 	}, {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) 		.flags = IORESOURCE_MEM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) 		.start = 0x00140000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) 		.end   = 0x0014001f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) 	},
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) int __init sun3_platform_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) 	switch (idprom->id_machtype) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) 	case SM_SUN3 | SM_3_160:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) 	case SM_SUN3 | SM_3_260:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 		platform_device_register_simple("sun3_scsi_vme", -1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 			sun3_scsi_vme_rsrc, ARRAY_SIZE(sun3_scsi_vme_rsrc));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 		break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) 	case SM_SUN3 | SM_3_50:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) 	case SM_SUN3 | SM_3_60:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) 		platform_device_register_simple("sun3_scsi", -1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) 			sun3_scsi_rsrc, ARRAY_SIZE(sun3_scsi_rsrc));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) 		break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) arch_initcall(sun3_platform_init);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) #endif