Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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