1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun // 3*4882a593Smuzhiyun // Copyright 2008 Simtec Electronics 4*4882a593Smuzhiyun // Copyright 2008 Simtec Electronics 5*4882a593Smuzhiyun // Ben Dooks <ben@simtec.co.uk> 6*4882a593Smuzhiyun // http://armlinux.simtec.co.uk/ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun /* 9*4882a593Smuzhiyun * NOTE: Code in this file is not used when booting with Device Tree support. 10*4882a593Smuzhiyun */ 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #include <linux/kernel.h> 13*4882a593Smuzhiyun #include <linux/types.h> 14*4882a593Smuzhiyun #include <linux/interrupt.h> 15*4882a593Smuzhiyun #include <linux/list.h> 16*4882a593Smuzhiyun #include <linux/timer.h> 17*4882a593Smuzhiyun #include <linux/init.h> 18*4882a593Smuzhiyun #include <linux/clk.h> 19*4882a593Smuzhiyun #include <linux/io.h> 20*4882a593Smuzhiyun #include <linux/device.h> 21*4882a593Smuzhiyun #include <linux/serial_core.h> 22*4882a593Smuzhiyun #include <linux/serial_s3c.h> 23*4882a593Smuzhiyun #include <linux/platform_device.h> 24*4882a593Smuzhiyun #include <linux/of.h> 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun #include <asm/mach/arch.h> 27*4882a593Smuzhiyun #include <asm/mach/map.h> 28*4882a593Smuzhiyun #include <asm/mach/irq.h> 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun #include <asm/irq.h> 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun #include <linux/soc/samsung/s3c-pm.h> 33*4882a593Smuzhiyun #include "regs-clock.h" 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun #include "cpu.h" 36*4882a593Smuzhiyun #include "devs.h" 37*4882a593Smuzhiyun #include "sdhci.h" 38*4882a593Smuzhiyun #include "adc-core.h" 39*4882a593Smuzhiyun #include "iic-core.h" 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun #include "ata-core-s3c64xx.h" 42*4882a593Smuzhiyun #include "s3c64xx.h" 43*4882a593Smuzhiyun #include "onenand-core-s3c64xx.h" 44*4882a593Smuzhiyun s3c6410_map_io(void)45*4882a593Smuzhiyunvoid __init s3c6410_map_io(void) 46*4882a593Smuzhiyun { 47*4882a593Smuzhiyun /* initialise device information early */ 48*4882a593Smuzhiyun s3c6410_default_sdhci0(); 49*4882a593Smuzhiyun s3c6410_default_sdhci1(); 50*4882a593Smuzhiyun s3c6410_default_sdhci2(); 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun /* the i2c devices are directly compatible with s3c2440 */ 53*4882a593Smuzhiyun s3c_i2c0_setname("s3c2440-i2c"); 54*4882a593Smuzhiyun s3c_i2c1_setname("s3c2440-i2c"); 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun s3c_adc_setname("s3c64xx-adc"); 57*4882a593Smuzhiyun s3c_device_nand.name = "s3c6400-nand"; 58*4882a593Smuzhiyun s3c_onenand_setname("s3c6410-onenand"); 59*4882a593Smuzhiyun s3c64xx_onenand1_setname("s3c6410-onenand"); 60*4882a593Smuzhiyun s3c_cfcon_setname("s3c64xx-pata"); 61*4882a593Smuzhiyun } 62*4882a593Smuzhiyun s3c6410_init_irq(void)63*4882a593Smuzhiyunvoid __init s3c6410_init_irq(void) 64*4882a593Smuzhiyun { 65*4882a593Smuzhiyun /* VIC0 is missing IRQ7, VIC1 is fully populated. */ 66*4882a593Smuzhiyun s3c64xx_init_irq(~0 & ~(1 << 7), ~0); 67*4882a593Smuzhiyun } 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun struct bus_type s3c6410_subsys = { 70*4882a593Smuzhiyun .name = "s3c6410-core", 71*4882a593Smuzhiyun .dev_name = "s3c6410-core", 72*4882a593Smuzhiyun }; 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun static struct device s3c6410_dev = { 75*4882a593Smuzhiyun .bus = &s3c6410_subsys, 76*4882a593Smuzhiyun }; 77*4882a593Smuzhiyun s3c6410_core_init(void)78*4882a593Smuzhiyunstatic int __init s3c6410_core_init(void) 79*4882a593Smuzhiyun { 80*4882a593Smuzhiyun /* Not applicable when using DT. */ 81*4882a593Smuzhiyun if (of_have_populated_dt() || !soc_is_s3c64xx()) 82*4882a593Smuzhiyun return 0; 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun return subsys_system_register(&s3c6410_subsys, NULL); 85*4882a593Smuzhiyun } 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun core_initcall(s3c6410_core_init); 88*4882a593Smuzhiyun s3c6410_init(void)89*4882a593Smuzhiyunint __init s3c6410_init(void) 90*4882a593Smuzhiyun { 91*4882a593Smuzhiyun printk("S3C6410: Initialising architecture\n"); 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun return device_register(&s3c6410_dev); 94*4882a593Smuzhiyun } 95