diff options
Diffstat (limited to 'arch/arm/mach-pxa/spitz.c')
-rw-r--r-- | arch/arm/mach-pxa/spitz.c | 322 |
1 files changed, 207 insertions, 115 deletions
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index dda310fe71c8..4b50f144fa48 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
17 | #include <linux/delay.h> | 17 | #include <linux/delay.h> |
18 | #include <linux/gpio_keys.h> | ||
18 | #include <linux/gpio.h> | 19 | #include <linux/gpio.h> |
19 | #include <linux/leds.h> | 20 | #include <linux/leds.h> |
20 | #include <linux/mtd/physmap.h> | 21 | #include <linux/mtd/physmap.h> |
@@ -24,6 +25,7 @@ | |||
24 | #include <linux/spi/ads7846.h> | 25 | #include <linux/spi/ads7846.h> |
25 | #include <linux/spi/corgi_lcd.h> | 26 | #include <linux/spi/corgi_lcd.h> |
26 | #include <linux/mtd/sharpsl.h> | 27 | #include <linux/mtd/sharpsl.h> |
28 | #include <linux/input/matrix_keypad.h> | ||
27 | 29 | ||
28 | #include <asm/setup.h> | 30 | #include <asm/setup.h> |
29 | #include <asm/mach-types.h> | 31 | #include <asm/mach-types.h> |
@@ -111,6 +113,26 @@ static unsigned long spitz_pin_config[] __initdata = { | |||
111 | GPIO105_GPIO, /* SPITZ_GPIO_CF_IRQ */ | 113 | GPIO105_GPIO, /* SPITZ_GPIO_CF_IRQ */ |
112 | GPIO106_GPIO, /* SPITZ_GPIO_CF2_IRQ */ | 114 | GPIO106_GPIO, /* SPITZ_GPIO_CF2_IRQ */ |
113 | 115 | ||
116 | /* GPIO matrix keypad */ | ||
117 | GPIO88_GPIO, /* column 0 */ | ||
118 | GPIO23_GPIO, /* column 1 */ | ||
119 | GPIO24_GPIO, /* column 2 */ | ||
120 | GPIO25_GPIO, /* column 3 */ | ||
121 | GPIO26_GPIO, /* column 4 */ | ||
122 | GPIO27_GPIO, /* column 5 */ | ||
123 | GPIO52_GPIO, /* column 6 */ | ||
124 | GPIO103_GPIO, /* column 7 */ | ||
125 | GPIO107_GPIO, /* column 8 */ | ||
126 | GPIO108_GPIO, /* column 9 */ | ||
127 | GPIO114_GPIO, /* column 10 */ | ||
128 | GPIO12_GPIO, /* row 0 */ | ||
129 | GPIO17_GPIO, /* row 1 */ | ||
130 | GPIO91_GPIO, /* row 2 */ | ||
131 | GPIO34_GPIO, /* row 3 */ | ||
132 | GPIO36_GPIO, /* row 4 */ | ||
133 | GPIO38_GPIO, /* row 5 */ | ||
134 | GPIO39_GPIO, /* row 6 */ | ||
135 | |||
114 | /* I2C */ | 136 | /* I2C */ |
115 | GPIO117_I2C_SCL, | 137 | GPIO117_I2C_SCL, |
116 | GPIO118_I2C_SDA, | 138 | GPIO118_I2C_SDA, |
@@ -242,9 +264,152 @@ EXPORT_SYMBOL(spitzscoop2_device); | |||
242 | /* | 264 | /* |
243 | * Spitz Keyboard Device | 265 | * Spitz Keyboard Device |
244 | */ | 266 | */ |
267 | #define SPITZ_KEY_CALENDAR KEY_F1 | ||
268 | #define SPITZ_KEY_ADDRESS KEY_F2 | ||
269 | #define SPITZ_KEY_FN KEY_F3 | ||
270 | #define SPITZ_KEY_CANCEL KEY_F4 | ||
271 | #define SPITZ_KEY_EXOK KEY_F5 | ||
272 | #define SPITZ_KEY_EXCANCEL KEY_F6 | ||
273 | #define SPITZ_KEY_EXJOGDOWN KEY_F7 | ||
274 | #define SPITZ_KEY_EXJOGUP KEY_F8 | ||
275 | #define SPITZ_KEY_JAP1 KEY_LEFTALT | ||
276 | #define SPITZ_KEY_JAP2 KEY_RIGHTCTRL | ||
277 | #define SPITZ_KEY_SYNC KEY_F9 | ||
278 | #define SPITZ_KEY_MAIL KEY_F10 | ||
279 | #define SPITZ_KEY_OK KEY_F11 | ||
280 | #define SPITZ_KEY_MENU KEY_F12 | ||
281 | |||
282 | static const uint32_t spitzkbd_keymap[] = { | ||
283 | KEY(0, 0, KEY_LEFTCTRL), | ||
284 | KEY(0, 1, KEY_1), | ||
285 | KEY(0, 2, KEY_3), | ||
286 | KEY(0, 3, KEY_5), | ||
287 | KEY(0, 4, KEY_6), | ||
288 | KEY(0, 5, KEY_7), | ||
289 | KEY(0, 6, KEY_9), | ||
290 | KEY(0, 7, KEY_0), | ||
291 | KEY(0, 8, KEY_BACKSPACE), | ||
292 | KEY(0, 9, SPITZ_KEY_EXOK), /* EXOK */ | ||
293 | KEY(0, 10, SPITZ_KEY_EXCANCEL), /* EXCANCEL */ | ||
294 | KEY(1, 1, KEY_2), | ||
295 | KEY(1, 2, KEY_4), | ||
296 | KEY(1, 3, KEY_R), | ||
297 | KEY(1, 4, KEY_Y), | ||
298 | KEY(1, 5, KEY_8), | ||
299 | KEY(1, 6, KEY_I), | ||
300 | KEY(1, 7, KEY_O), | ||
301 | KEY(1, 8, KEY_P), | ||
302 | KEY(1, 9, SPITZ_KEY_EXJOGDOWN), /* EXJOGDOWN */ | ||
303 | KEY(1, 10, SPITZ_KEY_EXJOGUP), /* EXJOGUP */ | ||
304 | KEY(2, 0, KEY_TAB), | ||
305 | KEY(2, 1, KEY_Q), | ||
306 | KEY(2, 2, KEY_E), | ||
307 | KEY(2, 3, KEY_T), | ||
308 | KEY(2, 4, KEY_G), | ||
309 | KEY(2, 5, KEY_U), | ||
310 | KEY(2, 6, KEY_J), | ||
311 | KEY(2, 7, KEY_K), | ||
312 | KEY(3, 0, SPITZ_KEY_ADDRESS), /* ADDRESS */ | ||
313 | KEY(3, 1, KEY_W), | ||
314 | KEY(3, 2, KEY_S), | ||
315 | KEY(3, 3, KEY_F), | ||
316 | KEY(3, 4, KEY_V), | ||
317 | KEY(3, 5, KEY_H), | ||
318 | KEY(3, 6, KEY_M), | ||
319 | KEY(3, 7, KEY_L), | ||
320 | KEY(3, 9, KEY_RIGHTSHIFT), | ||
321 | KEY(4, 0, SPITZ_KEY_CALENDAR), /* CALENDAR */ | ||
322 | KEY(4, 1, KEY_A), | ||
323 | KEY(4, 2, KEY_D), | ||
324 | KEY(4, 3, KEY_C), | ||
325 | KEY(4, 4, KEY_B), | ||
326 | KEY(4, 5, KEY_N), | ||
327 | KEY(4, 6, KEY_DOT), | ||
328 | KEY(4, 8, KEY_ENTER), | ||
329 | KEY(4, 9, KEY_LEFTSHIFT), | ||
330 | KEY(5, 0, SPITZ_KEY_MAIL), /* MAIL */ | ||
331 | KEY(5, 1, KEY_Z), | ||
332 | KEY(5, 2, KEY_X), | ||
333 | KEY(5, 3, KEY_MINUS), | ||
334 | KEY(5, 4, KEY_SPACE), | ||
335 | KEY(5, 5, KEY_COMMA), | ||
336 | KEY(5, 7, KEY_UP), | ||
337 | KEY(5, 10, SPITZ_KEY_FN), /* FN */ | ||
338 | KEY(6, 0, KEY_SYSRQ), | ||
339 | KEY(6, 1, SPITZ_KEY_JAP1), /* JAP1 */ | ||
340 | KEY(6, 2, SPITZ_KEY_JAP2), /* JAP2 */ | ||
341 | KEY(6, 3, SPITZ_KEY_CANCEL), /* CANCEL */ | ||
342 | KEY(6, 4, SPITZ_KEY_OK), /* OK */ | ||
343 | KEY(6, 5, SPITZ_KEY_MENU), /* MENU */ | ||
344 | KEY(6, 6, KEY_LEFT), | ||
345 | KEY(6, 7, KEY_DOWN), | ||
346 | KEY(6, 8, KEY_RIGHT), | ||
347 | }; | ||
348 | |||
349 | static const struct matrix_keymap_data spitzkbd_keymap_data = { | ||
350 | .keymap = spitzkbd_keymap, | ||
351 | .keymap_size = ARRAY_SIZE(spitzkbd_keymap), | ||
352 | }; | ||
353 | |||
354 | static const uint32_t spitzkbd_row_gpios[] = | ||
355 | { 12, 17, 91, 34, 36, 38, 39 }; | ||
356 | static const uint32_t spitzkbd_col_gpios[] = | ||
357 | { 88, 23, 24, 25, 26, 27, 52, 103, 107, 108, 114 }; | ||
358 | |||
359 | static struct matrix_keypad_platform_data spitzkbd_pdata = { | ||
360 | .keymap_data = &spitzkbd_keymap_data, | ||
361 | .row_gpios = spitzkbd_row_gpios, | ||
362 | .col_gpios = spitzkbd_col_gpios, | ||
363 | .num_row_gpios = ARRAY_SIZE(spitzkbd_row_gpios), | ||
364 | .num_col_gpios = ARRAY_SIZE(spitzkbd_col_gpios), | ||
365 | .col_scan_delay_us = 10, | ||
366 | .debounce_ms = 10, | ||
367 | .wakeup = 1, | ||
368 | }; | ||
369 | |||
245 | static struct platform_device spitzkbd_device = { | 370 | static struct platform_device spitzkbd_device = { |
246 | .name = "spitz-keyboard", | 371 | .name = "matrix-keypad", |
247 | .id = -1, | 372 | .id = -1, |
373 | .dev = { | ||
374 | .platform_data = &spitzkbd_pdata, | ||
375 | }, | ||
376 | }; | ||
377 | |||
378 | |||
379 | static struct gpio_keys_button spitz_gpio_keys[] = { | ||
380 | { | ||
381 | .type = EV_PWR, | ||
382 | .code = KEY_SUSPEND, | ||
383 | .gpio = SPITZ_GPIO_ON_KEY, | ||
384 | .desc = "On/Off", | ||
385 | .wakeup = 1, | ||
386 | }, | ||
387 | /* Two buttons detecting the lid state */ | ||
388 | { | ||
389 | .type = EV_SW, | ||
390 | .code = 0, | ||
391 | .gpio = SPITZ_GPIO_SWA, | ||
392 | .desc = "Display Down", | ||
393 | }, | ||
394 | { | ||
395 | .type = EV_SW, | ||
396 | .code = 1, | ||
397 | .gpio = SPITZ_GPIO_SWB, | ||
398 | .desc = "Lid Closed", | ||
399 | }, | ||
400 | }; | ||
401 | |||
402 | static struct gpio_keys_platform_data spitz_gpio_keys_platform_data = { | ||
403 | .buttons = spitz_gpio_keys, | ||
404 | .nbuttons = ARRAY_SIZE(spitz_gpio_keys), | ||
405 | }; | ||
406 | |||
407 | static struct platform_device spitz_gpio_keys_device = { | ||
408 | .name = "gpio-keys", | ||
409 | .id = -1, | ||
410 | .dev = { | ||
411 | .platform_data = &spitz_gpio_keys_platform_data, | ||
412 | }, | ||
248 | }; | 413 | }; |
249 | 414 | ||
250 | 415 | ||
@@ -296,6 +461,7 @@ static struct ads7846_platform_data spitz_ads7846_info = { | |||
296 | .vref_delay_usecs = 100, | 461 | .vref_delay_usecs = 100, |
297 | .x_plate_ohms = 419, | 462 | .x_plate_ohms = 419, |
298 | .y_plate_ohms = 486, | 463 | .y_plate_ohms = 486, |
464 | .pressure_max = 1024, | ||
299 | .gpio_pendown = SPITZ_GPIO_TP_INT, | 465 | .gpio_pendown = SPITZ_GPIO_TP_INT, |
300 | .wait_for_sync = spitz_wait_for_hsync, | 466 | .wait_for_sync = spitz_wait_for_hsync, |
301 | }; | 467 | }; |
@@ -378,45 +544,6 @@ static inline void spitz_init_spi(void) {} | |||
378 | * The card detect interrupt isn't debounced so we delay it by 250ms | 544 | * The card detect interrupt isn't debounced so we delay it by 250ms |
379 | * to give the card a chance to fully insert/eject. | 545 | * to give the card a chance to fully insert/eject. |
380 | */ | 546 | */ |
381 | |||
382 | static struct pxamci_platform_data spitz_mci_platform_data; | ||
383 | |||
384 | static int spitz_mci_init(struct device *dev, irq_handler_t spitz_detect_int, void *data) | ||
385 | { | ||
386 | int err; | ||
387 | |||
388 | err = gpio_request(SPITZ_GPIO_nSD_DETECT, "nSD_DETECT"); | ||
389 | if (err) | ||
390 | goto err_out; | ||
391 | |||
392 | err = gpio_request(SPITZ_GPIO_nSD_WP, "nSD_WP"); | ||
393 | if (err) | ||
394 | goto err_free_1; | ||
395 | |||
396 | gpio_direction_input(SPITZ_GPIO_nSD_DETECT); | ||
397 | gpio_direction_input(SPITZ_GPIO_nSD_WP); | ||
398 | |||
399 | spitz_mci_platform_data.detect_delay = msecs_to_jiffies(250); | ||
400 | |||
401 | err = request_irq(SPITZ_IRQ_GPIO_nSD_DETECT, spitz_detect_int, | ||
402 | IRQF_DISABLED | IRQF_TRIGGER_RISING | | ||
403 | IRQF_TRIGGER_FALLING, | ||
404 | "MMC card detect", data); | ||
405 | if (err) { | ||
406 | pr_err("%s: MMC/SD: can't request MMC card detect IRQ\n", | ||
407 | __func__); | ||
408 | goto err_free_2; | ||
409 | } | ||
410 | return 0; | ||
411 | |||
412 | err_free_2: | ||
413 | gpio_free(SPITZ_GPIO_nSD_WP); | ||
414 | err_free_1: | ||
415 | gpio_free(SPITZ_GPIO_nSD_DETECT); | ||
416 | err_out: | ||
417 | return err; | ||
418 | } | ||
419 | |||
420 | static void spitz_mci_setpower(struct device *dev, unsigned int vdd) | 547 | static void spitz_mci_setpower(struct device *dev, unsigned int vdd) |
421 | { | 548 | { |
422 | struct pxamci_platform_data* p_d = dev->platform_data; | 549 | struct pxamci_platform_data* p_d = dev->platform_data; |
@@ -427,24 +554,12 @@ static void spitz_mci_setpower(struct device *dev, unsigned int vdd) | |||
427 | spitz_card_pwr_ctrl(SPITZ_PWR_SD, 0x0000); | 554 | spitz_card_pwr_ctrl(SPITZ_PWR_SD, 0x0000); |
428 | } | 555 | } |
429 | 556 | ||
430 | static int spitz_mci_get_ro(struct device *dev) | ||
431 | { | ||
432 | return gpio_get_value(SPITZ_GPIO_nSD_WP); | ||
433 | } | ||
434 | |||
435 | static void spitz_mci_exit(struct device *dev, void *data) | ||
436 | { | ||
437 | free_irq(SPITZ_IRQ_GPIO_nSD_DETECT, data); | ||
438 | gpio_free(SPITZ_GPIO_nSD_WP); | ||
439 | gpio_free(SPITZ_GPIO_nSD_DETECT); | ||
440 | } | ||
441 | |||
442 | static struct pxamci_platform_data spitz_mci_platform_data = { | 557 | static struct pxamci_platform_data spitz_mci_platform_data = { |
443 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, | 558 | .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, |
444 | .init = spitz_mci_init, | 559 | .setpower = spitz_mci_setpower, |
445 | .get_ro = spitz_mci_get_ro, | 560 | .gpio_card_detect = SPITZ_GPIO_nSD_DETECT, |
446 | .setpower = spitz_mci_setpower, | 561 | .gpio_card_ro = SPITZ_GPIO_nSD_WP, |
447 | .exit = spitz_mci_exit, | 562 | .gpio_power = -1, |
448 | }; | 563 | }; |
449 | 564 | ||
450 | 565 | ||
@@ -484,50 +599,10 @@ static struct pxaohci_platform_data spitz_ohci_platform_data = { | |||
484 | /* | 599 | /* |
485 | * Irda | 600 | * Irda |
486 | */ | 601 | */ |
487 | static int spitz_irda_startup(struct device *dev) | ||
488 | { | ||
489 | int rc; | ||
490 | |||
491 | rc = gpio_request(SPITZ_GPIO_IR_ON, "IrDA on"); | ||
492 | if (rc) | ||
493 | goto err; | ||
494 | |||
495 | rc = gpio_direction_output(SPITZ_GPIO_IR_ON, 1); | ||
496 | if (rc) | ||
497 | goto err_dir; | ||
498 | |||
499 | return 0; | ||
500 | |||
501 | err_dir: | ||
502 | gpio_free(SPITZ_GPIO_IR_ON); | ||
503 | err: | ||
504 | return rc; | ||
505 | } | ||
506 | |||
507 | static void spitz_irda_shutdown(struct device *dev) | ||
508 | { | ||
509 | gpio_free(SPITZ_GPIO_IR_ON); | ||
510 | } | ||
511 | |||
512 | static void spitz_irda_transceiver_mode(struct device *dev, int mode) | ||
513 | { | ||
514 | gpio_set_value(SPITZ_GPIO_IR_ON, mode & IR_OFF); | ||
515 | pxa2xx_transceiver_mode(dev, mode); | ||
516 | } | ||
517 | |||
518 | #ifdef CONFIG_MACH_AKITA | ||
519 | static void akita_irda_transceiver_mode(struct device *dev, int mode) | ||
520 | { | ||
521 | gpio_set_value(AKITA_GPIO_IR_ON, mode & IR_OFF); | ||
522 | pxa2xx_transceiver_mode(dev, mode); | ||
523 | } | ||
524 | #endif | ||
525 | 602 | ||
526 | static struct pxaficp_platform_data spitz_ficp_platform_data = { | 603 | static struct pxaficp_platform_data spitz_ficp_platform_data = { |
604 | /* .gpio_pwdown is set in spitz_init() and akita_init() accordingly */ | ||
527 | .transceiver_cap = IR_SIRMODE | IR_OFF, | 605 | .transceiver_cap = IR_SIRMODE | IR_OFF, |
528 | .transceiver_mode = spitz_irda_transceiver_mode, | ||
529 | .startup = spitz_irda_startup, | ||
530 | .shutdown = spitz_irda_shutdown, | ||
531 | }; | 606 | }; |
532 | 607 | ||
533 | 608 | ||
@@ -652,6 +727,7 @@ static struct platform_device sharpsl_rom_device = { | |||
652 | static struct platform_device *devices[] __initdata = { | 727 | static struct platform_device *devices[] __initdata = { |
653 | &spitzscoop_device, | 728 | &spitzscoop_device, |
654 | &spitzkbd_device, | 729 | &spitzkbd_device, |
730 | &spitz_gpio_keys_device, | ||
655 | &spitzled_device, | 731 | &spitzled_device, |
656 | &sharpsl_nand_device, | 732 | &sharpsl_nand_device, |
657 | &sharpsl_rom_device, | 733 | &sharpsl_rom_device, |
@@ -692,9 +768,14 @@ static void __init common_init(void) | |||
692 | 768 | ||
693 | pxa2xx_mfp_config(ARRAY_AND_SIZE(spitz_pin_config)); | 769 | pxa2xx_mfp_config(ARRAY_AND_SIZE(spitz_pin_config)); |
694 | 770 | ||
771 | pxa_set_ffuart_info(NULL); | ||
772 | pxa_set_btuart_info(NULL); | ||
773 | pxa_set_stuart_info(NULL); | ||
774 | |||
695 | spitz_init_spi(); | 775 | spitz_init_spi(); |
696 | 776 | ||
697 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 777 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
778 | spitz_mci_platform_data.detect_delay = msecs_to_jiffies(250); | ||
698 | pxa_set_mci_info(&spitz_mci_platform_data); | 779 | pxa_set_mci_info(&spitz_mci_platform_data); |
699 | pxa_set_ohci_info(&spitz_ohci_platform_data); | 780 | pxa_set_ohci_info(&spitz_ohci_platform_data); |
700 | pxa_set_ficp_info(&spitz_ficp_platform_data); | 781 | pxa_set_ficp_info(&spitz_ficp_platform_data); |
@@ -702,9 +783,36 @@ static void __init common_init(void) | |||
702 | pxa_set_i2c_info(NULL); | 783 | pxa_set_i2c_info(NULL); |
703 | } | 784 | } |
704 | 785 | ||
786 | #if defined(CONFIG_MACH_AKITA) || defined(CONFIG_MACH_BORZOI) | ||
787 | static struct nand_bbt_descr sharpsl_akita_bbt = { | ||
788 | .options = 0, | ||
789 | .offs = 4, | ||
790 | .len = 1, | ||
791 | .pattern = scan_ff_pattern | ||
792 | }; | ||
793 | |||
794 | static struct nand_ecclayout akita_oobinfo = { | ||
795 | .eccbytes = 24, | ||
796 | .eccpos = { | ||
797 | 0x5, 0x1, 0x2, 0x3, 0x6, 0x7, 0x15, 0x11, | ||
798 | 0x12, 0x13, 0x16, 0x17, 0x25, 0x21, 0x22, 0x23, | ||
799 | 0x26, 0x27, 0x35, 0x31, 0x32, 0x33, 0x36, 0x37}, | ||
800 | .oobfree = {{0x08, 0x09}} | ||
801 | }; | ||
802 | #endif | ||
803 | |||
705 | #if defined(CONFIG_MACH_SPITZ) || defined(CONFIG_MACH_BORZOI) | 804 | #if defined(CONFIG_MACH_SPITZ) || defined(CONFIG_MACH_BORZOI) |
706 | static void __init spitz_init(void) | 805 | static void __init spitz_init(void) |
707 | { | 806 | { |
807 | spitz_ficp_platform_data.gpio_pwdown = SPITZ_GPIO_IR_ON; | ||
808 | |||
809 | #ifdef CONFIG_MACH_BORZOI | ||
810 | if (machine_is_borzoi()) { | ||
811 | sharpsl_nand_platform_data.badblock_pattern = &sharpsl_akita_bbt; | ||
812 | sharpsl_nand_platform_data.ecc_layout = &akita_oobinfo; | ||
813 | } | ||
814 | #endif | ||
815 | |||
708 | platform_scoop_config = &spitz_pcmcia_config; | 816 | platform_scoop_config = &spitz_pcmcia_config; |
709 | 817 | ||
710 | common_init(); | 818 | common_init(); |
@@ -729,25 +837,9 @@ static struct i2c_board_info akita_i2c_board_info[] = { | |||
729 | }, | 837 | }, |
730 | }; | 838 | }; |
731 | 839 | ||
732 | static struct nand_bbt_descr sharpsl_akita_bbt = { | ||
733 | .options = 0, | ||
734 | .offs = 4, | ||
735 | .len = 1, | ||
736 | .pattern = scan_ff_pattern | ||
737 | }; | ||
738 | |||
739 | static struct nand_ecclayout akita_oobinfo = { | ||
740 | .eccbytes = 24, | ||
741 | .eccpos = { | ||
742 | 0x5, 0x1, 0x2, 0x3, 0x6, 0x7, 0x15, 0x11, | ||
743 | 0x12, 0x13, 0x16, 0x17, 0x25, 0x21, 0x22, 0x23, | ||
744 | 0x26, 0x27, 0x35, 0x31, 0x32, 0x33, 0x36, 0x37}, | ||
745 | .oobfree = {{0x08, 0x09}} | ||
746 | }; | ||
747 | |||
748 | static void __init akita_init(void) | 840 | static void __init akita_init(void) |
749 | { | 841 | { |
750 | spitz_ficp_platform_data.transceiver_mode = akita_irda_transceiver_mode; | 842 | spitz_ficp_platform_data.gpio_pwdown = AKITA_GPIO_IR_ON; |
751 | 843 | ||
752 | sharpsl_nand_platform_data.badblock_pattern = &sharpsl_akita_bbt; | 844 | sharpsl_nand_platform_data.badblock_pattern = &sharpsl_akita_bbt; |
753 | sharpsl_nand_platform_data.ecc_layout = &akita_oobinfo; | 845 | sharpsl_nand_platform_data.ecc_layout = &akita_oobinfo; |