diff options
Diffstat (limited to 'arch/blackfin/mach-bf533/boards/stamp.c')
-rw-r--r-- | arch/blackfin/mach-bf533/boards/stamp.c | 103 |
1 files changed, 98 insertions, 5 deletions
diff --git a/arch/blackfin/mach-bf533/boards/stamp.c b/arch/blackfin/mach-bf533/boards/stamp.c index 8fde8d832850..ac52b040b336 100644 --- a/arch/blackfin/mach-bf533/boards/stamp.c +++ b/arch/blackfin/mach-bf533/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) |
@@ -108,6 +109,50 @@ static struct platform_device net2272_bfin_device = { | |||
108 | }; | 109 | }; |
109 | #endif | 110 | #endif |
110 | 111 | ||
112 | static struct mtd_partition stamp_partitions[] = { | ||
113 | { | ||
114 | .name = "Bootloader", | ||
115 | .size = 0x20000, | ||
116 | .offset = 0, | ||
117 | }, { | ||
118 | .name = "Kernel", | ||
119 | .size = 0xE0000, | ||
120 | .offset = MTDPART_OFS_APPEND, | ||
121 | }, { | ||
122 | .name = "RootFS", | ||
123 | .size = MTDPART_SIZ_FULL, | ||
124 | .offset = MTDPART_OFS_APPEND, | ||
125 | } | ||
126 | }; | ||
127 | |||
128 | static struct physmap_flash_data stamp_flash_data = { | ||
129 | .width = 2, | ||
130 | .parts = stamp_partitions, | ||
131 | .nr_parts = ARRAY_SIZE(stamp_partitions), | ||
132 | }; | ||
133 | |||
134 | static struct resource stamp_flash_resource[] = { | ||
135 | { | ||
136 | .name = "cfi_probe", | ||
137 | .start = 0x20000000, | ||
138 | .end = 0x203fffff, | ||
139 | .flags = IORESOURCE_MEM, | ||
140 | }, { | ||
141 | .start = CONFIG_ENET_FLASH_PIN, | ||
142 | .flags = IORESOURCE_IRQ, | ||
143 | } | ||
144 | }; | ||
145 | |||
146 | static struct platform_device stamp_flash_device = { | ||
147 | .name = "BF5xx-Flash", | ||
148 | .id = 0, | ||
149 | .dev = { | ||
150 | .platform_data = &stamp_flash_data, | ||
151 | }, | ||
152 | .num_resources = ARRAY_SIZE(stamp_flash_resource), | ||
153 | .resource = stamp_flash_resource, | ||
154 | }; | ||
155 | |||
111 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 156 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
112 | /* all SPI peripherals info goes here */ | 157 | /* all SPI peripherals info goes here */ |
113 | 158 | ||
@@ -373,6 +418,49 @@ static struct platform_device bfin_pata_device = { | |||
373 | }; | 418 | }; |
374 | #endif | 419 | #endif |
375 | 420 | ||
421 | #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) | ||
422 | #include <linux/input.h> | ||
423 | #include <linux/gpio_keys.h> | ||
424 | |||
425 | static struct gpio_keys_button bfin_gpio_keys_table[] = { | ||
426 | {BTN_0, GPIO_PF5, 1, "gpio-keys: BTN0"}, | ||
427 | {BTN_1, GPIO_PF6, 1, "gpio-keys: BTN1"}, | ||
428 | {BTN_2, GPIO_PF8, 1, "gpio-keys: BTN2"}, | ||
429 | }; | ||
430 | |||
431 | static struct gpio_keys_platform_data bfin_gpio_keys_data = { | ||
432 | .buttons = bfin_gpio_keys_table, | ||
433 | .nbuttons = ARRAY_SIZE(bfin_gpio_keys_table), | ||
434 | }; | ||
435 | |||
436 | static struct platform_device bfin_device_gpiokeys = { | ||
437 | .name = "gpio-keys", | ||
438 | .dev = { | ||
439 | .platform_data = &bfin_gpio_keys_data, | ||
440 | }, | ||
441 | }; | ||
442 | #endif | ||
443 | |||
444 | #if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) | ||
445 | #include <linux/i2c-gpio.h> | ||
446 | |||
447 | static struct i2c_gpio_platform_data i2c_gpio_data = { | ||
448 | .sda_pin = 2, | ||
449 | .scl_pin = 3, | ||
450 | .sda_is_open_drain = 0, | ||
451 | .scl_is_open_drain = 0, | ||
452 | .udelay = 40, | ||
453 | }; | ||
454 | |||
455 | static struct platform_device i2c_gpio_device = { | ||
456 | .name = "i2c-gpio", | ||
457 | .id = 0, | ||
458 | .dev = { | ||
459 | .platform_data = &i2c_gpio_data, | ||
460 | }, | ||
461 | }; | ||
462 | #endif | ||
463 | |||
376 | static struct platform_device *stamp_devices[] __initdata = { | 464 | static struct platform_device *stamp_devices[] __initdata = { |
377 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) | 465 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) |
378 | &rtc_device, | 466 | &rtc_device, |
@@ -406,6 +494,15 @@ static struct platform_device *stamp_devices[] __initdata = { | |||
406 | #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) | 494 | #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) |
407 | &bfin_pata_device, | 495 | &bfin_pata_device, |
408 | #endif | 496 | #endif |
497 | |||
498 | #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) | ||
499 | &bfin_device_gpiokeys, | ||
500 | #endif | ||
501 | |||
502 | #if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) | ||
503 | &i2c_gpio_device, | ||
504 | #endif | ||
505 | &stamp_flash_device, | ||
409 | }; | 506 | }; |
410 | 507 | ||
411 | static int __init stamp_init(void) | 508 | static int __init stamp_init(void) |
@@ -418,12 +515,10 @@ static int __init stamp_init(void) | |||
418 | return ret; | 515 | return ret; |
419 | 516 | ||
420 | #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) | 517 | #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) |
421 | # if defined(CONFIG_BFIN_SHARED_FLASH_ENET) | ||
422 | /* setup BF533_STAMP CPLD to route AMS3 to Ethernet MAC */ | 518 | /* setup BF533_STAMP CPLD to route AMS3 to Ethernet MAC */ |
423 | bfin_write_FIO_DIR(bfin_read_FIO_DIR() | (1 << CONFIG_ENET_FLASH_PIN)); | 519 | bfin_write_FIO_DIR(bfin_read_FIO_DIR() | (1 << CONFIG_ENET_FLASH_PIN)); |
424 | bfin_write_FIO_FLAG_S(1 << CONFIG_ENET_FLASH_PIN); | 520 | bfin_write_FIO_FLAG_S(1 << CONFIG_ENET_FLASH_PIN); |
425 | SSYNC(); | 521 | SSYNC(); |
426 | # endif | ||
427 | #endif | 522 | #endif |
428 | 523 | ||
429 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 524 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
@@ -440,10 +535,8 @@ arch_initcall(stamp_init); | |||
440 | 535 | ||
441 | void native_machine_restart(char *cmd) | 536 | void native_machine_restart(char *cmd) |
442 | { | 537 | { |
443 | #if defined(CONFIG_BFIN_SHARED_FLASH_ENET) | 538 | #define BIT_TO_SET (1 << CONFIG_ENET_FLASH_PIN) |
444 | # define BIT_TO_SET (1 << CONFIG_ENET_FLASH_PIN) | ||
445 | bfin_write_FIO_INEN(~BIT_TO_SET); | 539 | bfin_write_FIO_INEN(~BIT_TO_SET); |
446 | bfin_write_FIO_DIR(BIT_TO_SET); | 540 | bfin_write_FIO_DIR(BIT_TO_SET); |
447 | bfin_write_FIO_FLAG_C(BIT_TO_SET); | 541 | bfin_write_FIO_FLAG_C(BIT_TO_SET); |
448 | #endif | ||
449 | } | 542 | } |