root/arch/arm/mach-s3c24xx/s3c2443.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. s3c2443_init
  2. s3c2443_init_uarts
  3. s3c2443_map_io
  4. s3c2443_core_init

   1 // SPDX-License-Identifier: GPL-2.0
   2 //
   3 // Copyright (c) 2007 Simtec Electronics
   4 //   Ben Dooks <ben@simtec.co.uk>
   5 //
   6 // Samsung S3C2443 Mobile CPU support
   7 
   8 #include <linux/kernel.h>
   9 #include <linux/types.h>
  10 #include <linux/interrupt.h>
  11 #include <linux/list.h>
  12 #include <linux/timer.h>
  13 #include <linux/init.h>
  14 #include <linux/gpio.h>
  15 #include <linux/platform_device.h>
  16 #include <linux/serial_core.h>
  17 #include <linux/device.h>
  18 #include <linux/clk.h>
  19 #include <linux/io.h>
  20 #include <linux/reboot.h>
  21 
  22 #include <asm/mach/arch.h>
  23 #include <asm/mach/map.h>
  24 #include <asm/mach/irq.h>
  25 
  26 #include <mach/hardware.h>
  27 #include <mach/gpio-samsung.h>
  28 #include <asm/irq.h>
  29 #include <asm/system_misc.h>
  30 
  31 #include <mach/regs-s3c2443-clock.h>
  32 #include <mach/rtc-core.h>
  33 
  34 #include <plat/gpio-core.h>
  35 #include <plat/gpio-cfg.h>
  36 #include <plat/gpio-cfg-helpers.h>
  37 #include <plat/devs.h>
  38 #include <plat/cpu.h>
  39 #include <plat/adc-core.h>
  40 
  41 #include "fb-core.h"
  42 #include "nand-core.h"
  43 #include "spi-core.h"
  44 
  45 static struct map_desc s3c2443_iodesc[] __initdata = {
  46         IODESC_ENT(WATCHDOG),
  47         IODESC_ENT(CLKPWR),
  48         IODESC_ENT(TIMER),
  49 };
  50 
  51 struct bus_type s3c2443_subsys = {
  52         .name = "s3c2443-core",
  53         .dev_name = "s3c2443-core",
  54 };
  55 
  56 static struct device s3c2443_dev = {
  57         .bus            = &s3c2443_subsys,
  58 };
  59 
  60 int __init s3c2443_init(void)
  61 {
  62         printk("S3C2443: Initialising architecture\n");
  63 
  64         s3c_nand_setname("s3c2412-nand");
  65         s3c_fb_setname("s3c2443-fb");
  66 
  67         s3c_adc_setname("s3c2443-adc");
  68         s3c_rtc_setname("s3c2443-rtc");
  69 
  70         /* change WDT IRQ number */
  71         s3c_device_wdt.resource[1].start = IRQ_S3C2443_WDT;
  72         s3c_device_wdt.resource[1].end   = IRQ_S3C2443_WDT;
  73 
  74         return device_register(&s3c2443_dev);
  75 }
  76 
  77 void __init s3c2443_init_uarts(struct s3c2410_uartcfg *cfg, int no)
  78 {
  79         s3c24xx_init_uartdevs("s3c2440-uart", s3c2410_uart_resources, cfg, no);
  80 }
  81 
  82 /* s3c2443_map_io
  83  *
  84  * register the standard cpu IO areas, and any passed in from the
  85  * machine specific initialisation.
  86  */
  87 
  88 void __init s3c2443_map_io(void)
  89 {
  90         s3c24xx_gpiocfg_default.set_pull = s3c2443_gpio_setpull;
  91         s3c24xx_gpiocfg_default.get_pull = s3c2443_gpio_getpull;
  92 
  93         /* initialize device information early */
  94         s3c64xx_spi_setname("s3c2443-spi");
  95 
  96         iotable_init(s3c2443_iodesc, ARRAY_SIZE(s3c2443_iodesc));
  97 }
  98 
  99 /* need to register the subsystem before we actually register the device, and
 100  * we also need to ensure that it has been initialised before any of the
 101  * drivers even try to use it (even if not on an s3c2443 based system)
 102  * as a driver which may support both 2443 and 2440 may try and use it.
 103 */
 104 
 105 static int __init s3c2443_core_init(void)
 106 {
 107         return subsys_system_register(&s3c2443_subsys, NULL);
 108 }
 109 
 110 core_initcall(s3c2443_core_init);

/* [<][>][^][v][top][bottom][index][help] */