~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/sh/boards/board-edosk7760.c

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 // SPDX-License-Identifier: GPL-2.0+
  2 /*
  3  * Renesas Europe EDOSK7760 Board Support
  4  *
  5  * Copyright (C) 2008 SPES Societa' Progettazione Elettronica e Software Ltd.
  6  * Author: Luca Santini <luca.santini@spesonline.com>
  7  */
  8 #include <linux/init.h>
  9 #include <linux/types.h>
 10 #include <linux/platform_device.h>
 11 #include <linux/smc91x.h>
 12 #include <linux/interrupt.h>
 13 #include <linux/sh_intc.h>
 14 #include <linux/i2c.h>
 15 #include <linux/mtd/physmap.h>
 16 #include <asm/machvec.h>
 17 #include <asm/io.h>
 18 #include <asm/addrspace.h>
 19 #include <asm/delay.h>
 20 #include <asm/i2c-sh7760.h>
 21 #include <linux/sizes.h>
 22 
 23 /* Bus state controller registers for CS4 area */
 24 #define BSC_CS4BCR      0xA4FD0010
 25 #define BSC_CS4WCR      0xA4FD0030
 26 
 27 #define SMC_IOBASE      0xA2000000
 28 #define SMC_IO_OFFSET   0x300
 29 #define SMC_IOADDR      (SMC_IOBASE + SMC_IO_OFFSET)
 30 
 31 /* NOR flash */
 32 static struct mtd_partition edosk7760_nor_flash_partitions[] = {
 33         {
 34                 .name = "bootloader",
 35                 .offset = 0,
 36                 .size = SZ_256K,
 37                 .mask_flags = MTD_WRITEABLE,    /* Read-only */
 38         }, {
 39                 .name = "kernel",
 40                 .offset = MTDPART_OFS_APPEND,
 41                 .size = SZ_2M,
 42         }, {
 43                 .name = "fs",
 44                 .offset = MTDPART_OFS_APPEND,
 45                 .size = (26 << 20),
 46         }, {
 47                 .name = "other",
 48                 .offset = MTDPART_OFS_APPEND,
 49                 .size = MTDPART_SIZ_FULL,
 50         },
 51 };
 52 
 53 static struct physmap_flash_data edosk7760_nor_flash_data = {
 54         .width          = 4,
 55         .parts          = edosk7760_nor_flash_partitions,
 56         .nr_parts       = ARRAY_SIZE(edosk7760_nor_flash_partitions),
 57 };
 58 
 59 static struct resource edosk7760_nor_flash_resources[] = {
 60         [0] = {
 61                 .name   = "NOR Flash",
 62                 .start  = 0x00000000,
 63                 .end    = 0x00000000 + SZ_32M - 1,
 64                 .flags  = IORESOURCE_MEM,
 65         }
 66 };
 67 
 68 static struct platform_device edosk7760_nor_flash_device = {
 69         .name           = "physmap-flash",
 70         .resource       = edosk7760_nor_flash_resources,
 71         .num_resources  = ARRAY_SIZE(edosk7760_nor_flash_resources),
 72         .dev            = {
 73                 .platform_data = &edosk7760_nor_flash_data,
 74         },
 75 };
 76 
 77 /* i2c initialization functions */
 78 static struct sh7760_i2c_platdata i2c_pd = {
 79         .speed_khz      = 400,
 80 };
 81 
 82 static struct resource sh7760_i2c1_res[] = {
 83         {
 84                 .start  = SH7760_I2C1_MMIO,
 85                 .end    = SH7760_I2C1_MMIOEND,
 86                 .flags  = IORESOURCE_MEM,
 87         },{
 88                 .start  = evt2irq(0x9e0),
 89                 .end    = evt2irq(0x9e0),
 90                 .flags  = IORESOURCE_IRQ,
 91         },
 92 };
 93 
 94 static struct platform_device sh7760_i2c1_dev = {
 95         .dev    = {
 96                 .platform_data  = &i2c_pd,
 97         },
 98 
 99         .name           = SH7760_I2C_DEVNAME,
100         .id             = 1,
101         .resource       = sh7760_i2c1_res,
102         .num_resources  = ARRAY_SIZE(sh7760_i2c1_res),
103 };
104 
105 static struct resource sh7760_i2c0_res[] = {
106         {
107                 .start  = SH7760_I2C0_MMIO,
108                 .end    = SH7760_I2C0_MMIOEND,
109                 .flags  = IORESOURCE_MEM,
110         }, {
111                 .start  = evt2irq(0x9c0),
112                 .end    = evt2irq(0x9c0),
113                 .flags  = IORESOURCE_IRQ,
114         },
115 };
116 
117 static struct platform_device sh7760_i2c0_dev = {
118         .dev    = {
119                 .platform_data  = &i2c_pd,
120         },
121         .name           = SH7760_I2C_DEVNAME,
122         .id             = 0,
123         .resource       = sh7760_i2c0_res,
124         .num_resources  = ARRAY_SIZE(sh7760_i2c0_res),
125 };
126 
127 /* eth initialization functions */
128 static struct smc91x_platdata smc91x_info = {
129         .flags = SMC91X_USE_16BIT | SMC91X_IO_SHIFT_1 | IORESOURCE_IRQ_LOWLEVEL,
130 };
131 
132 static struct resource smc91x_res[] = {
133         [0] = {
134                 .start  = SMC_IOADDR,
135                 .end    = SMC_IOADDR + SZ_32 - 1,
136                 .flags  = IORESOURCE_MEM,
137         },
138         [1] = {
139                 .start  = evt2irq(0x2a0),
140                 .end    = evt2irq(0x2a0),
141                 .flags  = IORESOURCE_IRQ ,
142         }
143 };
144 
145 static struct platform_device smc91x_dev = {
146         .name           = "smc91x",
147         .id             = -1,
148         .num_resources  = ARRAY_SIZE(smc91x_res),
149         .resource       = smc91x_res,
150 
151         .dev    = {
152                 .platform_data  = &smc91x_info,
153         },
154 };
155 
156 /* platform init code */
157 static struct platform_device *edosk7760_devices[] __initdata = {
158         &smc91x_dev,
159         &edosk7760_nor_flash_device,
160         &sh7760_i2c0_dev,
161         &sh7760_i2c1_dev,
162 };
163 
164 static int __init init_edosk7760_devices(void)
165 {
166         plat_irq_setup_pins(IRQ_MODE_IRQ);
167 
168         return platform_add_devices(edosk7760_devices,
169                                     ARRAY_SIZE(edosk7760_devices));
170 }
171 device_initcall(init_edosk7760_devices);
172 
173 /*
174  * The Machine Vector
175  */
176 struct sh_machine_vector mv_edosk7760 __initmv = {
177         .mv_name        = "EDOSK7760",
178 };
179 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php