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

board-sh2007.c (3268B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * SH-2007 board support.
      4 *
      5 * Copyright (C) 2003, 2004  SUGIOKA Toshinobu
      6 * Copyright (C) 2010  Hitoshi Mitake <mitake@dcl.info.waseda.ac.jp>
      7 */
      8#include <linux/init.h>
      9#include <linux/irq.h>
     10#include <linux/regulator/fixed.h>
     11#include <linux/regulator/machine.h>
     12#include <linux/smsc911x.h>
     13#include <linux/platform_device.h>
     14#include <linux/ata_platform.h>
     15#include <linux/io.h>
     16#include <asm/machvec.h>
     17#include <mach/sh2007.h>
     18
     19/* Dummy supplies, where voltage doesn't matter */
     20static struct regulator_consumer_supply dummy_supplies[] = {
     21	REGULATOR_SUPPLY("vddvario", "smsc911x.0"),
     22	REGULATOR_SUPPLY("vdd33a", "smsc911x.0"),
     23	REGULATOR_SUPPLY("vddvario", "smsc911x.1"),
     24	REGULATOR_SUPPLY("vdd33a", "smsc911x.1"),
     25};
     26
     27struct smsc911x_platform_config smc911x_info = {
     28	.flags		= SMSC911X_USE_32BIT,
     29	.irq_polarity	= SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
     30	.irq_type	= SMSC911X_IRQ_TYPE_PUSH_PULL,
     31};
     32
     33static struct resource smsc9118_0_resources[] = {
     34	[0] = {
     35		.start	= SMC0_BASE,
     36		.end	= SMC0_BASE + 0xff,
     37		.flags	= IORESOURCE_MEM,
     38	},
     39	[1] = {
     40		.start	= evt2irq(0x240),
     41		.end	= evt2irq(0x240),
     42		.flags	= IORESOURCE_IRQ,
     43	}
     44};
     45
     46static struct resource smsc9118_1_resources[] = {
     47	[0] = {
     48		.start	= SMC1_BASE,
     49		.end	= SMC1_BASE + 0xff,
     50		.flags	= IORESOURCE_MEM,
     51	},
     52	[1] = {
     53		.start	= evt2irq(0x280),
     54		.end	= evt2irq(0x280),
     55		.flags	= IORESOURCE_IRQ,
     56	}
     57};
     58
     59static struct platform_device smsc9118_0_device = {
     60	.name		= "smsc911x",
     61	.id		= 0,
     62	.num_resources	= ARRAY_SIZE(smsc9118_0_resources),
     63	.resource	= smsc9118_0_resources,
     64	.dev = {
     65		.platform_data = &smc911x_info,
     66	},
     67};
     68
     69static struct platform_device smsc9118_1_device = {
     70	.name		= "smsc911x",
     71	.id		= 1,
     72	.num_resources	= ARRAY_SIZE(smsc9118_1_resources),
     73	.resource	= smsc9118_1_resources,
     74	.dev = {
     75		.platform_data = &smc911x_info,
     76	},
     77};
     78
     79static struct resource cf_resources[] = {
     80	[0] = {
     81		.start	= CF_BASE + CF_OFFSET,
     82		.end	= CF_BASE + CF_OFFSET + 0x0f,
     83		.flags	= IORESOURCE_MEM,
     84	},
     85	[1] = {
     86		.start	= CF_BASE + CF_OFFSET + 0x206,
     87		.end	= CF_BASE + CF_OFFSET + 0x20f,
     88		.flags	= IORESOURCE_MEM,
     89	},
     90	[2] = {
     91		.start	= evt2irq(0x2c0),
     92		.end	= evt2irq(0x2c0),
     93		.flags	= IORESOURCE_IRQ,
     94	},
     95};
     96
     97static struct platform_device cf_device  = {
     98	.name		= "pata_platform",
     99	.id		= 0,
    100	.num_resources	= ARRAY_SIZE(cf_resources),
    101	.resource	= cf_resources,
    102};
    103
    104static struct platform_device *sh2007_devices[] __initdata = {
    105	&smsc9118_0_device,
    106	&smsc9118_1_device,
    107	&cf_device,
    108};
    109
    110static int __init sh2007_io_init(void)
    111{
    112	regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
    113
    114	platform_add_devices(sh2007_devices, ARRAY_SIZE(sh2007_devices));
    115	return 0;
    116}
    117subsys_initcall(sh2007_io_init);
    118
    119static void __init sh2007_init_irq(void)
    120{
    121	plat_irq_setup_pins(IRQ_MODE_IRQ);
    122}
    123
    124/*
    125 * Initialize the board
    126 */
    127static void __init sh2007_setup(char **cmdline_p)
    128{
    129	pr_info("SH-2007 Setup...");
    130
    131	/* setup wait control registers for area 5 */
    132	__raw_writel(CS5BCR_D, CS5BCR);
    133	__raw_writel(CS5WCR_D, CS5WCR);
    134	__raw_writel(CS5PCR_D, CS5PCR);
    135
    136	pr_cont(" done.\n");
    137}
    138
    139/*
    140 * The Machine Vector
    141 */
    142struct sh_machine_vector mv_sh2007 __initmv = {
    143	.mv_setup		= sh2007_setup,
    144	.mv_name		= "sh2007",
    145	.mv_init_irq		= sh2007_init_irq,
    146};