cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

s3c244x.c (3006B)


      1// SPDX-License-Identifier: GPL-2.0
      2//
      3// Copyright (c) 2004-2006 Simtec Electronics
      4//   Ben Dooks <ben@simtec.co.uk>
      5//
      6// Samsung S3C2440 and S3C2442 Mobile CPU support (not S3C2443)
      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/serial_core.h>
     15#include <linux/serial_s3c.h>
     16#include <linux/platform_device.h>
     17#include <linux/reboot.h>
     18#include <linux/device.h>
     19#include <linux/syscore_ops.h>
     20#include <linux/clk.h>
     21#include <linux/io.h>
     22
     23#include <asm/system_misc.h>
     24#include <asm/mach/arch.h>
     25#include <asm/mach/map.h>
     26#include <asm/mach/irq.h>
     27
     28#include "map.h"
     29#include <asm/irq.h>
     30
     31#include "regs-clock.h"
     32#include "regs-gpio.h"
     33
     34#include "devs.h"
     35#include "cpu.h"
     36#include "pm.h"
     37
     38#include "s3c24xx.h"
     39#include "nand-core-s3c24xx.h"
     40#include "regs-dsc-s3c24xx.h"
     41
     42static struct map_desc s3c244x_iodesc[] __initdata __maybe_unused = {
     43	IODESC_ENT(CLKPWR),
     44	IODESC_ENT(TIMER),
     45	IODESC_ENT(WATCHDOG),
     46};
     47
     48/* uart initialisation */
     49
     50void __init s3c244x_init_uarts(struct s3c2410_uartcfg *cfg, int no)
     51{
     52	s3c24xx_init_uartdevs("s3c2440-uart", s3c2410_uart_resources, cfg, no);
     53}
     54
     55void __init s3c244x_map_io(void)
     56{
     57	/* register our io-tables */
     58
     59	iotable_init(s3c244x_iodesc, ARRAY_SIZE(s3c244x_iodesc));
     60
     61	/* rename any peripherals used differing from the s3c2410 */
     62
     63	s3c_device_sdi.name  = "s3c2440-sdi";
     64	s3c_device_i2c0.name  = "s3c2440-i2c";
     65	s3c_nand_setname("s3c2440-nand");
     66	s3c_device_ts.name = "s3c2440-ts";
     67	s3c_device_usbgadget.name = "s3c2440-usbgadget";
     68	s3c2410_device_dclk.name = "s3c2440-dclk";
     69}
     70
     71/* Since the S3C2442 and S3C2440 share items, put both subsystems here */
     72
     73struct bus_type s3c2440_subsys = {
     74	.name		= "s3c2440-core",
     75	.dev_name	= "s3c2440-core",
     76};
     77
     78struct bus_type s3c2442_subsys = {
     79	.name		= "s3c2442-core",
     80	.dev_name	= "s3c2442-core",
     81};
     82
     83/* need to register the subsystem before we actually register the device, and
     84 * we also need to ensure that it has been initialised before any of the
     85 * drivers even try to use it (even if not on an s3c2440 based system)
     86 * as a driver which may support both 2410 and 2440 may try and use it.
     87*/
     88
     89static int __init s3c2440_core_init(void)
     90{
     91	return subsys_system_register(&s3c2440_subsys, NULL);
     92}
     93
     94core_initcall(s3c2440_core_init);
     95
     96static int __init s3c2442_core_init(void)
     97{
     98	return subsys_system_register(&s3c2442_subsys, NULL);
     99}
    100
    101core_initcall(s3c2442_core_init);
    102
    103
    104#ifdef CONFIG_PM_SLEEP
    105static struct sleep_save s3c244x_sleep[] = {
    106	SAVE_ITEM(S3C2440_DSC0),
    107	SAVE_ITEM(S3C2440_DSC1),
    108	SAVE_ITEM(S3C2440_GPJDAT),
    109	SAVE_ITEM(S3C2440_GPJCON),
    110	SAVE_ITEM(S3C2440_GPJUP)
    111};
    112
    113static int s3c244x_suspend(void)
    114{
    115	s3c_pm_do_save(s3c244x_sleep, ARRAY_SIZE(s3c244x_sleep));
    116	return 0;
    117}
    118
    119static void s3c244x_resume(void)
    120{
    121	s3c_pm_do_restore(s3c244x_sleep, ARRAY_SIZE(s3c244x_sleep));
    122}
    123
    124struct syscore_ops s3c244x_pm_syscore_ops = {
    125	.suspend	= s3c244x_suspend,
    126	.resume		= s3c244x_resume,
    127};
    128#endif