diff options
Diffstat (limited to 'arch/blackfin/mach-bf561/boards/ezkit.c')
-rw-r--r-- | arch/blackfin/mach-bf561/boards/ezkit.c | 64 |
1 files changed, 59 insertions, 5 deletions
diff --git a/arch/blackfin/mach-bf561/boards/ezkit.c b/arch/blackfin/mach-bf561/boards/ezkit.c index 14eb4f9a68ea..9720b5c307ab 100644 --- a/arch/blackfin/mach-bf561/boards/ezkit.c +++ b/arch/blackfin/mach-bf561/boards/ezkit.c | |||
@@ -32,12 +32,61 @@ | |||
32 | #include <linux/spi/spi.h> | 32 | #include <linux/spi/spi.h> |
33 | #include <asm/irq.h> | 33 | #include <asm/irq.h> |
34 | #include <asm/bfin5xx_spi.h> | 34 | #include <asm/bfin5xx_spi.h> |
35 | #include <linux/interrupt.h> | ||
36 | #include <linux/irq.h> | ||
35 | 37 | ||
36 | /* | 38 | /* |
37 | * Name the Board for the /proc/cpuinfo | 39 | * Name the Board for the /proc/cpuinfo |
38 | */ | 40 | */ |
39 | char *bfin_board_name = "ADDS-BF561-EZKIT"; | 41 | char *bfin_board_name = "ADDS-BF561-EZKIT"; |
40 | 42 | ||
43 | #define ISP1761_BASE 0x2C0F0000 | ||
44 | #define ISP1761_IRQ IRQ_PF10 | ||
45 | |||
46 | #if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE) | ||
47 | static struct resource bfin_isp1761_resources[] = { | ||
48 | [0] = { | ||
49 | .name = "isp1761-regs", | ||
50 | .start = ISP1761_BASE + 0x00000000, | ||
51 | .end = ISP1761_BASE + 0x000fffff, | ||
52 | .flags = IORESOURCE_MEM, | ||
53 | }, | ||
54 | [1] = { | ||
55 | .start = ISP1761_IRQ, | ||
56 | .end = ISP1761_IRQ, | ||
57 | .flags = IORESOURCE_IRQ, | ||
58 | }, | ||
59 | }; | ||
60 | |||
61 | static struct platform_device bfin_isp1761_device = { | ||
62 | .name = "isp1761", | ||
63 | .id = 0, | ||
64 | .num_resources = ARRAY_SIZE(bfin_isp1761_resources), | ||
65 | .resource = bfin_isp1761_resources, | ||
66 | }; | ||
67 | |||
68 | static struct platform_device *bfin_isp1761_devices[] = { | ||
69 | &bfin_isp1761_device, | ||
70 | }; | ||
71 | |||
72 | int __init bfin_isp1761_init(void) | ||
73 | { | ||
74 | unsigned int num_devices=ARRAY_SIZE(bfin_isp1761_devices); | ||
75 | |||
76 | printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); | ||
77 | set_irq_type(ISP1761_IRQ, IRQF_TRIGGER_FALLING); | ||
78 | |||
79 | return platform_add_devices(bfin_isp1761_devices, num_devices); | ||
80 | } | ||
81 | |||
82 | void __exit bfin_isp1761_exit(void) | ||
83 | { | ||
84 | platform_device_unregister(&bfin_isp1761_device); | ||
85 | } | ||
86 | |||
87 | arch_initcall(bfin_isp1761_init); | ||
88 | #endif | ||
89 | |||
41 | /* | 90 | /* |
42 | * USB-LAN EzExtender board | 91 | * USB-LAN EzExtender board |
43 | * Driver needs to know address, irq and flag pin. | 92 | * Driver needs to know address, irq and flag pin. |
@@ -135,13 +184,18 @@ static int __init ezkit_init(void) | |||
135 | { | 184 | { |
136 | int ret; | 185 | int ret; |
137 | 186 | ||
138 | printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); | 187 | printk(KERN_INFO "%s(): registering device resources\n", __func__); |
139 | ret = platform_add_devices(ezkit_devices, | 188 | |
140 | ARRAY_SIZE(ezkit_devices)); | 189 | ret = platform_add_devices(ezkit_devices, ARRAY_SIZE(ezkit_devices)); |
141 | if (ret < 0) | 190 | if (ret < 0) |
142 | return ret; | 191 | return ret; |
143 | return spi_register_board_info(bfin_spi_board_info, | 192 | |
144 | ARRAY_SIZE(bfin_spi_board_info)); | 193 | #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) |
194 | bfin_write_FIO0_DIR(bfin_read_FIO0_DIR() | (1 << 12)); | ||
195 | SSYNC(); | ||
196 | #endif | ||
197 | |||
198 | return spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info)); | ||
145 | } | 199 | } |
146 | 200 | ||
147 | arch_initcall(ezkit_init); | 201 | arch_initcall(ezkit_init); |