diff options
| -rw-r--r-- | arch/arm/mach-pxa/mainstone.c | 138 |
1 files changed, 81 insertions, 57 deletions
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c index 75be0c74a640..7fa5a3779e0d 100644 --- a/arch/arm/mach-pxa/mainstone.c +++ b/arch/arm/mach-pxa/mainstone.c | |||
| @@ -40,7 +40,7 @@ | |||
| 40 | 40 | ||
| 41 | #include <asm/arch/pxa-regs.h> | 41 | #include <asm/arch/pxa-regs.h> |
| 42 | #include <asm/arch/pxa2xx-regs.h> | 42 | #include <asm/arch/pxa2xx-regs.h> |
| 43 | #include <asm/arch/pxa2xx-gpio.h> | 43 | #include <asm/arch/mfp-pxa27x.h> |
| 44 | #include <asm/arch/mainstone.h> | 44 | #include <asm/arch/mainstone.h> |
| 45 | #include <asm/arch/audio.h> | 45 | #include <asm/arch/audio.h> |
| 46 | #include <asm/arch/pxafb.h> | 46 | #include <asm/arch/pxafb.h> |
| @@ -51,6 +51,81 @@ | |||
| 51 | #include "generic.h" | 51 | #include "generic.h" |
| 52 | #include "devices.h" | 52 | #include "devices.h" |
| 53 | 53 | ||
| 54 | static unsigned long mainstone_pin_config[] = { | ||
| 55 | /* Chip Select */ | ||
| 56 | GPIO15_nCS_1, | ||
| 57 | |||
| 58 | /* LCD - 16bpp Active TFT */ | ||
| 59 | GPIO58_LCD_LDD_0, | ||
| 60 | GPIO59_LCD_LDD_1, | ||
| 61 | GPIO60_LCD_LDD_2, | ||
| 62 | GPIO61_LCD_LDD_3, | ||
| 63 | GPIO62_LCD_LDD_4, | ||
| 64 | GPIO63_LCD_LDD_5, | ||
| 65 | GPIO64_LCD_LDD_6, | ||
| 66 | GPIO65_LCD_LDD_7, | ||
| 67 | GPIO66_LCD_LDD_8, | ||
| 68 | GPIO67_LCD_LDD_9, | ||
| 69 | GPIO68_LCD_LDD_10, | ||
| 70 | GPIO69_LCD_LDD_11, | ||
| 71 | GPIO70_LCD_LDD_12, | ||
| 72 | GPIO71_LCD_LDD_13, | ||
| 73 | GPIO72_LCD_LDD_14, | ||
| 74 | GPIO73_LCD_LDD_15, | ||
| 75 | GPIO74_LCD_FCLK, | ||
| 76 | GPIO75_LCD_LCLK, | ||
| 77 | GPIO76_LCD_PCLK, | ||
| 78 | GPIO77_LCD_BIAS, | ||
| 79 | GPIO16_PWM0_OUT, /* Backlight */ | ||
| 80 | |||
| 81 | /* MMC */ | ||
| 82 | GPIO32_MMC_CLK, | ||
| 83 | GPIO112_MMC_CMD, | ||
| 84 | GPIO92_MMC_DAT_0, | ||
| 85 | GPIO109_MMC_DAT_1, | ||
| 86 | GPIO110_MMC_DAT_2, | ||
| 87 | GPIO111_MMC_DAT_3, | ||
| 88 | |||
| 89 | /* USB Host Port 1 */ | ||
| 90 | GPIO88_USBH1_PWR, | ||
| 91 | GPIO89_USBH1_PEN, | ||
| 92 | |||
| 93 | /* PC Card */ | ||
| 94 | GPIO48_nPOE, | ||
| 95 | GPIO49_nPWE, | ||
| 96 | GPIO50_nPIOR, | ||
| 97 | GPIO51_nPIOW, | ||
| 98 | GPIO85_nPCE_1, | ||
| 99 | GPIO54_nPCE_2, | ||
| 100 | GPIO79_PSKTSEL, | ||
| 101 | GPIO55_nPREG, | ||
| 102 | GPIO56_nPWAIT, | ||
| 103 | GPIO57_nIOIS16, | ||
| 104 | |||
| 105 | /* AC97 */ | ||
| 106 | GPIO45_AC97_SYSCLK, | ||
| 107 | |||
| 108 | /* Keypad */ | ||
| 109 | GPIO93_KP_DKIN_0 | WAKEUP_ON_LEVEL_HIGH, | ||
| 110 | GPIO94_KP_DKIN_1 | WAKEUP_ON_LEVEL_HIGH, | ||
| 111 | GPIO95_KP_DKIN_2 | WAKEUP_ON_LEVEL_HIGH, | ||
| 112 | GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH, | ||
| 113 | GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH, | ||
| 114 | GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH, | ||
| 115 | GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH, | ||
| 116 | GPIO98_KP_MKIN_4 | WAKEUP_ON_LEVEL_HIGH, | ||
| 117 | GPIO99_KP_MKIN_5 | WAKEUP_ON_LEVEL_HIGH, | ||
| 118 | GPIO103_KP_MKOUT_0, | ||
| 119 | GPIO104_KP_MKOUT_1, | ||
| 120 | GPIO105_KP_MKOUT_2, | ||
| 121 | GPIO106_KP_MKOUT_3, | ||
| 122 | GPIO107_KP_MKOUT_4, | ||
| 123 | GPIO108_KP_MKOUT_5, | ||
| 124 | GPIO96_KP_MKOUT_6, | ||
| 125 | |||
| 126 | /* GPIO */ | ||
| 127 | GPIO1_GPIO | WAKEUP_ON_EDGE_BOTH, | ||
| 128 | }; | ||
| 54 | 129 | ||
| 55 | static unsigned long mainstone_irq_enabled; | 130 | static unsigned long mainstone_irq_enabled; |
| 56 | 131 | ||
| @@ -279,13 +354,13 @@ static int mainstone_backlight_update_status(struct backlight_device *bl) | |||
| 279 | bl->props.fb_blank != FB_BLANK_UNBLANK) | 354 | bl->props.fb_blank != FB_BLANK_UNBLANK) |
| 280 | brightness = 0; | 355 | brightness = 0; |
| 281 | 356 | ||
| 282 | if (brightness != 0) { | 357 | if (brightness != 0) |
| 283 | pxa_gpio_mode(GPIO16_PWM0_MD); | ||
| 284 | pxa_set_cken(CKEN_PWM0, 1); | 358 | pxa_set_cken(CKEN_PWM0, 1); |
| 285 | } | 359 | |
| 286 | PWM_CTRL0 = 0; | 360 | PWM_CTRL0 = 0; |
| 287 | PWM_PWDUTY0 = brightness; | 361 | PWM_PWDUTY0 = brightness; |
| 288 | PWM_PERVAL0 = bl->props.max_brightness; | 362 | PWM_PERVAL0 = bl->props.max_brightness; |
| 363 | |||
| 289 | if (brightness == 0) | 364 | if (brightness == 0) |
| 290 | pxa_set_cken(CKEN_PWM0, 0); | 365 | pxa_set_cken(CKEN_PWM0, 0); |
| 291 | return 0; /* pointless return value */ | 366 | return 0; /* pointless return value */ |
| @@ -363,16 +438,6 @@ static int mainstone_mci_init(struct device *dev, irq_handler_t mstone_detect_in | |||
| 363 | { | 438 | { |
| 364 | int err; | 439 | int err; |
| 365 | 440 | ||
| 366 | /* | ||
| 367 | * setup GPIO for PXA27x MMC controller | ||
| 368 | */ | ||
| 369 | pxa_gpio_mode(GPIO32_MMCCLK_MD); | ||
| 370 | pxa_gpio_mode(GPIO112_MMCCMD_MD); | ||
| 371 | pxa_gpio_mode(GPIO92_MMCDAT0_MD); | ||
| 372 | pxa_gpio_mode(GPIO109_MMCDAT1_MD); | ||
| 373 | pxa_gpio_mode(GPIO110_MMCDAT2_MD); | ||
| 374 | pxa_gpio_mode(GPIO111_MMCDAT3_MD); | ||
| 375 | |||
| 376 | /* make sure SD/Memory Stick multiplexer's signals | 441 | /* make sure SD/Memory Stick multiplexer's signals |
| 377 | * are routed to MMC controller | 442 | * are routed to MMC controller |
| 378 | */ | 443 | */ |
| @@ -444,10 +509,6 @@ static struct platform_device *platform_devices[] __initdata = { | |||
| 444 | 509 | ||
| 445 | static int mainstone_ohci_init(struct device *dev) | 510 | static int mainstone_ohci_init(struct device *dev) |
| 446 | { | 511 | { |
| 447 | /* setup Port1 GPIO pin. */ | ||
| 448 | pxa_gpio_mode( 88 | GPIO_ALT_FN_1_IN); /* USBHPWR1 */ | ||
| 449 | pxa_gpio_mode( 89 | GPIO_ALT_FN_2_OUT); /* USBHPEN1 */ | ||
| 450 | |||
| 451 | /* Set the Power Control Polarity Low and Power Sense | 512 | /* Set the Power Control Polarity Low and Power Sense |
| 452 | Polarity Low to active low. */ | 513 | Polarity Low to active low. */ |
| 453 | UHCHR = (UHCHR | UHCHR_PCPL | UHCHR_PSPL) & | 514 | UHCHR = (UHCHR | UHCHR_PCPL | UHCHR_PSPL) & |
| @@ -465,6 +526,8 @@ static void __init mainstone_init(void) | |||
| 465 | { | 526 | { |
| 466 | int SW7 = 0; /* FIXME: get from SCR (Mst doc section 3.2.1.1) */ | 527 | int SW7 = 0; /* FIXME: get from SCR (Mst doc section 3.2.1.1) */ |
| 467 | 528 | ||
| 529 | pxa2xx_mfp_config(ARRAY_AND_SIZE(mainstone_pin_config)); | ||
| 530 | |||
| 468 | mst_flash_data[0].width = (BOOT_DEF & 1) ? 2 : 4; | 531 | mst_flash_data[0].width = (BOOT_DEF & 1) ? 2 : 4; |
| 469 | mst_flash_data[1].width = 4; | 532 | mst_flash_data[1].width = 4; |
| 470 | 533 | ||
| @@ -481,31 +544,6 @@ static void __init mainstone_init(void) | |||
| 481 | */ | 544 | */ |
| 482 | ARB_CNTRL = ARB_CORE_PARK | 0x234; | 545 | ARB_CNTRL = ARB_CORE_PARK | 0x234; |
| 483 | 546 | ||
| 484 | /* | ||
| 485 | * On Mainstone, we route AC97_SYSCLK via GPIO45 to | ||
| 486 | * the audio daughter card | ||
| 487 | */ | ||
| 488 | pxa_gpio_mode(GPIO45_SYSCLK_AC97_MD); | ||
| 489 | |||
| 490 | GPSR(GPIO48_nPOE) = | ||
| 491 | GPIO_bit(GPIO48_nPOE) | | ||
| 492 | GPIO_bit(GPIO49_nPWE) | | ||
| 493 | GPIO_bit(GPIO50_nPIOR) | | ||
| 494 | GPIO_bit(GPIO51_nPIOW) | | ||
| 495 | GPIO_bit(GPIO85_nPCE_1) | | ||
| 496 | GPIO_bit(GPIO54_nPCE_2); | ||
| 497 | |||
| 498 | pxa_gpio_mode(GPIO48_nPOE_MD); | ||
| 499 | pxa_gpio_mode(GPIO49_nPWE_MD); | ||
| 500 | pxa_gpio_mode(GPIO50_nPIOR_MD); | ||
| 501 | pxa_gpio_mode(GPIO51_nPIOW_MD); | ||
| 502 | pxa_gpio_mode(GPIO85_nPCE_1_MD); | ||
| 503 | pxa_gpio_mode(GPIO54_nPCE_2_MD); | ||
| 504 | pxa_gpio_mode(GPIO79_pSKTSEL_MD); | ||
| 505 | pxa_gpio_mode(GPIO55_nPREG_MD); | ||
| 506 | pxa_gpio_mode(GPIO56_nPWAIT_MD); | ||
| 507 | pxa_gpio_mode(GPIO57_nIOIS16_MD); | ||
| 508 | |||
| 509 | platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); | 547 | platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); |
| 510 | 548 | ||
| 511 | /* reading Mainstone's "Virtual Configuration Register" | 549 | /* reading Mainstone's "Virtual Configuration Register" |
| @@ -538,23 +576,9 @@ static void __init mainstone_map_io(void) | |||
| 538 | pxa_map_io(); | 576 | pxa_map_io(); |
| 539 | iotable_init(mainstone_io_desc, ARRAY_SIZE(mainstone_io_desc)); | 577 | iotable_init(mainstone_io_desc, ARRAY_SIZE(mainstone_io_desc)); |
| 540 | 578 | ||
| 541 | /* initialize sleep mode regs (wake-up sources, etc) */ | ||
| 542 | PGSR0 = 0x00008800; | ||
| 543 | PGSR1 = 0x00000002; | ||
| 544 | PGSR2 = 0x0001FC00; | ||
| 545 | PGSR3 = 0x00001F81; | ||
| 546 | PWER = 0xC0000002; | ||
| 547 | PRER = 0x00000002; | ||
| 548 | PFER = 0x00000002; | ||
| 549 | /* for use I SRAM as framebuffer. */ | 579 | /* for use I SRAM as framebuffer. */ |
| 550 | PSLR |= 0xF04; | 580 | PSLR |= 0xF04; |
| 551 | PCFR = 0x66; | 581 | PCFR = 0x66; |
| 552 | /* For Keypad wakeup. */ | ||
| 553 | KPC &=~KPC_ASACT; | ||
| 554 | KPC |=KPC_AS; | ||
| 555 | PKWR = 0x000FD000; | ||
| 556 | /* Need read PKWR back after set it. */ | ||
| 557 | PKWR; | ||
| 558 | } | 582 | } |
| 559 | 583 | ||
| 560 | MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)") | 584 | MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)") |
