diff options
Diffstat (limited to 'arch/blackfin/mach-bf537/boards/stamp.c')
-rw-r--r-- | arch/blackfin/mach-bf537/boards/stamp.c | 80 |
1 files changed, 74 insertions, 6 deletions
diff --git a/arch/blackfin/mach-bf537/boards/stamp.c b/arch/blackfin/mach-bf537/boards/stamp.c index 07b0dc273d2f..772541548b76 100644 --- a/arch/blackfin/mach-bf537/boards/stamp.c +++ b/arch/blackfin/mach-bf537/boards/stamp.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <linux/platform_device.h> | 32 | #include <linux/platform_device.h> |
33 | #include <linux/mtd/mtd.h> | 33 | #include <linux/mtd/mtd.h> |
34 | #include <linux/mtd/partitions.h> | 34 | #include <linux/mtd/partitions.h> |
35 | #include <linux/mtd/physmap.h> | ||
35 | #include <linux/spi/spi.h> | 36 | #include <linux/spi/spi.h> |
36 | #include <linux/spi/flash.h> | 37 | #include <linux/spi/flash.h> |
37 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) | 38 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) |
@@ -103,6 +104,30 @@ void __exit bfin_isp1761_exit(void) | |||
103 | arch_initcall(bfin_isp1761_init); | 104 | arch_initcall(bfin_isp1761_init); |
104 | #endif | 105 | #endif |
105 | 106 | ||
107 | #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) | ||
108 | #include <linux/input.h> | ||
109 | #include <linux/gpio_keys.h> | ||
110 | |||
111 | static struct gpio_keys_button bfin_gpio_keys_table[] = { | ||
112 | {BTN_0, GPIO_PF2, 1, "gpio-keys: BTN0"}, | ||
113 | {BTN_1, GPIO_PF3, 1, "gpio-keys: BTN1"}, | ||
114 | {BTN_2, GPIO_PF4, 1, "gpio-keys: BTN2"}, | ||
115 | {BTN_3, GPIO_PF5, 1, "gpio-keys: BTN3"}, | ||
116 | }; | ||
117 | |||
118 | static struct gpio_keys_platform_data bfin_gpio_keys_data = { | ||
119 | .buttons = bfin_gpio_keys_table, | ||
120 | .nbuttons = ARRAY_SIZE(bfin_gpio_keys_table), | ||
121 | }; | ||
122 | |||
123 | static struct platform_device bfin_device_gpiokeys = { | ||
124 | .name = "gpio-keys", | ||
125 | .dev = { | ||
126 | .platform_data = &bfin_gpio_keys_data, | ||
127 | }, | ||
128 | }; | ||
129 | #endif | ||
130 | |||
106 | #if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE) | 131 | #if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE) |
107 | static struct resource bfin_pcmcia_cf_resources[] = { | 132 | static struct resource bfin_pcmcia_cf_resources[] = { |
108 | { | 133 | { |
@@ -226,12 +251,7 @@ static struct resource sl811_hcd_resources[] = { | |||
226 | void sl811_port_power(struct device *dev, int is_on) | 251 | void sl811_port_power(struct device *dev, int is_on) |
227 | { | 252 | { |
228 | gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS"); | 253 | gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS"); |
229 | gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS); | 254 | gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS, is_on); |
230 | |||
231 | if (is_on) | ||
232 | gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 1); | ||
233 | else | ||
234 | gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 0); | ||
235 | } | 255 | } |
236 | #endif | 256 | #endif |
237 | 257 | ||
@@ -320,6 +340,49 @@ static struct platform_device net2272_bfin_device = { | |||
320 | }; | 340 | }; |
321 | #endif | 341 | #endif |
322 | 342 | ||
343 | static struct mtd_partition stamp_partitions[] = { | ||
344 | { | ||
345 | .name = "Bootloader", | ||
346 | .size = 0x20000, | ||
347 | .offset = 0, | ||
348 | }, { | ||
349 | .name = "Kernel", | ||
350 | .size = 0xE0000, | ||
351 | .offset = MTDPART_OFS_APPEND, | ||
352 | }, { | ||
353 | .name = "RootFS", | ||
354 | .size = 0x400000 - 0x20000 - 0xE0000 - 0x10000, | ||
355 | .offset = MTDPART_OFS_APPEND, | ||
356 | }, { | ||
357 | .name = "MAC Address", | ||
358 | .size = MTDPART_SIZ_FULL, | ||
359 | .offset = 0x3F0000, | ||
360 | .mask_flags = MTD_WRITEABLE, | ||
361 | } | ||
362 | }; | ||
363 | |||
364 | static struct physmap_flash_data stamp_flash_data = { | ||
365 | .width = 2, | ||
366 | .parts = stamp_partitions, | ||
367 | .nr_parts = ARRAY_SIZE(stamp_partitions), | ||
368 | }; | ||
369 | |||
370 | static struct resource stamp_flash_resource = { | ||
371 | .start = 0x20000000, | ||
372 | .end = 0x203fffff, | ||
373 | .flags = IORESOURCE_MEM, | ||
374 | }; | ||
375 | |||
376 | static struct platform_device stamp_flash_device = { | ||
377 | .name = "physmap-flash", | ||
378 | .id = 0, | ||
379 | .dev = { | ||
380 | .platform_data = &stamp_flash_data, | ||
381 | }, | ||
382 | .num_resources = 1, | ||
383 | .resource = &stamp_flash_resource, | ||
384 | }; | ||
385 | |||
323 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 386 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
324 | /* all SPI peripherals info goes here */ | 387 | /* all SPI peripherals info goes here */ |
325 | 388 | ||
@@ -738,6 +801,11 @@ static struct platform_device *stamp_devices[] __initdata = { | |||
738 | #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) | 801 | #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) |
739 | &bfin_pata_device, | 802 | &bfin_pata_device, |
740 | #endif | 803 | #endif |
804 | |||
805 | #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) | ||
806 | &bfin_device_gpiokeys, | ||
807 | #endif | ||
808 | &stamp_flash_device, | ||
741 | }; | 809 | }; |
742 | 810 | ||
743 | static int __init stamp_init(void) | 811 | static int __init stamp_init(void) |