root/arch/sh/kernel/cpu/sh5/setup-sh5.c

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

DEFINITIONS

This source file includes following definitions.
  1. sh5_devices_setup
  2. plat_early_device_setup

   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3  * SH5-101/SH5-103 CPU Setup
   4  *
   5  *  Copyright (C) 2009  Paul Mundt
   6  */
   7 #include <linux/platform_device.h>
   8 #include <linux/init.h>
   9 #include <linux/serial.h>
  10 #include <linux/serial_sci.h>
  11 #include <linux/io.h>
  12 #include <linux/mm.h>
  13 #include <linux/sh_timer.h>
  14 #include <asm/addrspace.h>
  15 
  16 static struct plat_sci_port scif0_platform_data = {
  17         .flags          = UPF_IOREMAP,
  18         .scscr          = SCSCR_REIE,
  19         .type           = PORT_SCIF,
  20 };
  21 
  22 static struct resource scif0_resources[] = {
  23         DEFINE_RES_MEM(PHYS_PERIPHERAL_BLOCK + 0x01030000, 0x100),
  24         DEFINE_RES_IRQ(39),
  25         DEFINE_RES_IRQ(40),
  26         DEFINE_RES_IRQ(42),
  27 };
  28 
  29 static struct platform_device scif0_device = {
  30         .name           = "sh-sci",
  31         .id             = 0,
  32         .resource       = scif0_resources,
  33         .num_resources  = ARRAY_SIZE(scif0_resources),
  34         .dev            = {
  35                 .platform_data  = &scif0_platform_data,
  36         },
  37 };
  38 
  39 static struct resource rtc_resources[] = {
  40         [0] = {
  41                 .start  = PHYS_PERIPHERAL_BLOCK + 0x01040000,
  42                 .end    = PHYS_PERIPHERAL_BLOCK + 0x01040000 + 0x58 - 1,
  43                 .flags  = IORESOURCE_IO,
  44         },
  45         [1] = {
  46                 /* Period IRQ */
  47                 .start  = IRQ_PRI,
  48                 .flags  = IORESOURCE_IRQ,
  49         },
  50         [2] = {
  51                 /* Carry IRQ */
  52                 .start  = IRQ_CUI,
  53                 .flags  = IORESOURCE_IRQ,
  54         },
  55         [3] = {
  56                 /* Alarm IRQ */
  57                 .start  = IRQ_ATI,
  58                 .flags  = IORESOURCE_IRQ,
  59         },
  60 };
  61 
  62 static struct platform_device rtc_device = {
  63         .name           = "sh-rtc",
  64         .id             = -1,
  65         .num_resources  = ARRAY_SIZE(rtc_resources),
  66         .resource       = rtc_resources,
  67 };
  68 
  69 #define TMU_BLOCK_OFF   0x01020000
  70 #define TMU_BASE        PHYS_PERIPHERAL_BLOCK + TMU_BLOCK_OFF
  71 
  72 static struct sh_timer_config tmu0_platform_data = {
  73         .channels_mask = 7,
  74 };
  75 
  76 static struct resource tmu0_resources[] = {
  77         DEFINE_RES_MEM(TMU_BASE, 0x30),
  78         DEFINE_RES_IRQ(IRQ_TUNI0),
  79         DEFINE_RES_IRQ(IRQ_TUNI1),
  80         DEFINE_RES_IRQ(IRQ_TUNI2),
  81 };
  82 
  83 static struct platform_device tmu0_device = {
  84         .name           = "sh-tmu",
  85         .id             = 0,
  86         .dev = {
  87                 .platform_data  = &tmu0_platform_data,
  88         },
  89         .resource       = tmu0_resources,
  90         .num_resources  = ARRAY_SIZE(tmu0_resources),
  91 };
  92 
  93 static struct platform_device *sh5_early_devices[] __initdata = {
  94         &scif0_device,
  95         &tmu0_device,
  96 };
  97 
  98 static struct platform_device *sh5_devices[] __initdata = {
  99         &rtc_device,
 100 };
 101 
 102 static int __init sh5_devices_setup(void)
 103 {
 104         int ret;
 105 
 106         ret = platform_add_devices(sh5_early_devices,
 107                                    ARRAY_SIZE(sh5_early_devices));
 108         if (unlikely(ret != 0))
 109                 return ret;
 110 
 111         return platform_add_devices(sh5_devices,
 112                                     ARRAY_SIZE(sh5_devices));
 113 }
 114 arch_initcall(sh5_devices_setup);
 115 
 116 void __init plat_early_device_setup(void)
 117 {
 118         early_platform_add_devices(sh5_early_devices,
 119                                    ARRAY_SIZE(sh5_early_devices));
 120 }

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