Loading arch/arm/mach-pxa/Kconfig +11 −0 Original line number Diff line number Diff line Loading @@ -425,6 +425,17 @@ config PALM_TREO bool depends on ARCH_PXA_PALM config MACH_CENTRO bool "Palm Centro 685 (GSM)" default y depends on ARCH_PXA_PALM select PXA27x select IWMMXT select PALM_TREO help Say Y here if you intend to run this kernel on Palm Centro 685 (GSM) smartphone. config MACH_TREO680 bool "Palm Treo 680" default y Loading arch/arm/mach-pxa/include/mach/palmtreo.h +7 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ * * currently supported: * Palm Treo 680 (GSM) * Palm Centro 685 (GSM) * * Author: Tomas Cech <sleep_walker@suse.cz> * Loading Loading @@ -45,6 +46,12 @@ #define GPIO_NR_TREO680_BT_EN 43 #endif /* CONFIG_MACH_TREO680 */ /* Centro685 specific GPIOs */ #define GPIO_NR_CENTRO_SD_POWER 21 #define GPIO_NR_CENTRO_VIBRATE_EN 22 #define GPIO_NR_CENTRO_KEYB_BL 33 #define GPIO_NR_CENTRO_BT_EN 80 /* Various addresses */ #define TREO_PHYS_RAM_START 0xa0000000 #define TREO_PHYS_IO_START 0x40000000 Loading arch/arm/mach-pxa/palmtreo.c +161 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ * * currently supported: * Palm Treo 680 (GSM) * Palm Centro 685 (GSM) * * Author: Tomas Cech <sleep_walker@suse.cz> * Loading Loading @@ -160,6 +161,21 @@ static unsigned long treo680_pin_config[] __initdata = { }; #endif /* CONFIG_MACH_TREO680 */ #ifdef CONFIG_MACH_CENTRO static unsigned long centro685_pin_config[] __initdata = { /* Bluetooth attached to BT UART*/ MFP_CFG_OUT(GPIO80, AF0, DRIVE_LOW), /* power: LOW = off */ GPIO42_BTUART_RXD, GPIO43_BTUART_TXD, GPIO44_BTUART_CTS, GPIO45_BTUART_RTS, /* MATRIX KEYPAD - different wake up source */ GPIO100_KP_MKIN_0, GPIO99_KP_MKIN_5 | WAKEUP_ON_LEVEL_HIGH, }; #endif /* CONFIG_MACH_CENTRO */ /****************************************************************************** * SD/MMC card controller ******************************************************************************/ Loading @@ -172,6 +188,16 @@ static struct pxamci_platform_data treo680_mci_platform_data = { }; #endif /* CONFIG_MACH_TREO680 */ #ifdef CONFIG_MACH_CENTRO static struct pxamci_platform_data centro_mci_platform_data = { .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, .gpio_card_detect = GPIO_NR_TREO_SD_DETECT_N, .gpio_card_ro = -1, .gpio_power = GPIO_NR_CENTRO_SD_POWER, .gpio_power_invert = 1, }; #endif /* CONFIG_MACH_CENTRO */ /****************************************************************************** * GPIO keyboard ******************************************************************************/ Loading Loading @@ -247,6 +273,78 @@ static struct pxa27x_keypad_platform_data treo680_keypad_platform_data = { }; #endif /* CONFIG_MACH_TREO680 */ #ifdef CONFIG_MACH_CENTRO static unsigned int centro_matrix_keys[] = { KEY(0, 0, KEY_F9), /* Home */ KEY(0, 1, KEY_LEFT), KEY(0, 2, KEY_LEFTCTRL), /* Alternate */ KEY(0, 3, KEY_L), KEY(0, 4, KEY_A), KEY(0, 5, KEY_Q), KEY(0, 6, KEY_P), KEY(1, 0, KEY_RIGHTCTRL), /* Menu */ KEY(1, 1, KEY_RIGHT), KEY(1, 2, KEY_LEFTSHIFT), /* Left shift */ KEY(1, 3, KEY_Z), KEY(1, 4, KEY_S), KEY(1, 5, KEY_W), KEY(2, 0, KEY_F1), /* Phone */ KEY(2, 1, KEY_UP), KEY(2, 2, KEY_0), KEY(2, 3, KEY_X), KEY(2, 4, KEY_D), KEY(2, 5, KEY_E), KEY(3, 0, KEY_F10), /* Calendar */ KEY(3, 1, KEY_DOWN), KEY(3, 2, KEY_SPACE), KEY(3, 3, KEY_C), KEY(3, 4, KEY_F), KEY(3, 5, KEY_R), KEY(4, 0, KEY_F12), /* Mail */ KEY(4, 1, KEY_KPENTER), KEY(4, 2, KEY_RIGHTALT), /* Alt */ KEY(4, 3, KEY_V), KEY(4, 4, KEY_G), KEY(4, 5, KEY_T), KEY(5, 0, KEY_F8), /* Red/Off/Power */ KEY(5, 1, KEY_PAGEUP), /* Side up */ KEY(5, 2, KEY_DOT), KEY(5, 3, KEY_B), KEY(5, 4, KEY_H), KEY(5, 5, KEY_Y), KEY(6, 0, KEY_TAB), /* Side Activate */ KEY(6, 1, KEY_PAGEDOWN), /* Side down */ KEY(6, 2, KEY_ENTER), KEY(6, 3, KEY_N), KEY(6, 4, KEY_J), KEY(6, 5, KEY_U), KEY(7, 0, KEY_F6), /* Green/Call */ KEY(7, 1, KEY_O), KEY(7, 2, KEY_BACKSPACE), KEY(7, 3, KEY_M), KEY(7, 4, KEY_K), KEY(7, 5, KEY_I), }; static struct pxa27x_keypad_platform_data centro_keypad_platform_data = { .matrix_key_rows = 8, .matrix_key_cols = 7, .matrix_key_map = centro_matrix_keys, .matrix_key_map_size = ARRAY_SIZE(centro_matrix_keys), .direct_key_map = { KEY_CONNECT }, .direct_key_num = 1, .debounce_interval = 30, }; #endif /* CONFIG_MACH_CENTRO */ /****************************************************************************** * aSoC audio ******************************************************************************/ Loading Loading @@ -423,6 +521,40 @@ static struct platform_device treo680_leds = { }; #endif /* CONFIG_MACH_TREO680 */ #ifdef CONFIG_MACH_CENTRO static struct gpio_led centro_gpio_leds[] = { { .name = "centro:vibra:vibra", .default_trigger = "none", .gpio = GPIO_NR_CENTRO_VIBRATE_EN, }, { .name = "centro:green:led", .default_trigger = "mmc0", .gpio = GPIO_NR_TREO_GREEN_LED, }, { .name = "centro:white:keybbl", .default_trigger = "none", .active_low = 1, .gpio = GPIO_NR_CENTRO_KEYB_BL, }, }; static struct gpio_led_platform_data centro_gpio_led_info = { .leds = centro_gpio_leds, .num_leds = ARRAY_SIZE(centro_gpio_leds), }; static struct platform_device centro_leds = { .name = "leds-gpio", .id = -1, .dev = { .platform_data = ¢ro_gpio_led_info, } }; #endif /* CONFIG_MACH_CENTRO */ /****************************************************************************** * Framebuffer ******************************************************************************/ Loading Loading @@ -484,6 +616,12 @@ static struct platform_device *treo680_devices[] __initdata = { }; #endif /* CONFIG_MACH_TREO680 */ #ifdef CONFIG_MACH_CENTRO static struct platform_device *centro_devices[] __initdata = { ¢ro_leds, }; #endif /* CONFIG_MACH_CENTRO */ /* setup udc GPIOs initial state */ static void __init treo_udc_init(void) { Loading Loading @@ -549,3 +687,26 @@ MACHINE_START(TREO680, "Palm Treo 680") .init_machine = treo680_init, MACHINE_END #endif /* CONFIG_MACH_TREO680 */ #ifdef CONFIG_MACH_CENTRO static void __init centro_init(void) { treo_init(); pxa2xx_mfp_config(ARRAY_AND_SIZE(centro685_pin_config)); pxa_set_mci_info(¢ro_mci_platform_data); pxa_set_keypad_info(¢ro_keypad_platform_data); platform_add_devices(ARRAY_AND_SIZE(centro_devices)); } MACHINE_START(CENTRO, "Palm Centro 685") .phys_io = TREO_PHYS_IO_START, .io_pg_offst = io_p2v(0x40000000), .boot_params = 0xa0000100, .map_io = pxa_map_io, .init_irq = pxa27x_init_irq, .timer = &pxa_timer, .init_machine = centro_init, MACHINE_END #endif /* CONFIG_MACH_CENTRO */ arch/arm/mm/mmu.c +1 −1 Original line number Diff line number Diff line Loading @@ -881,7 +881,7 @@ void __init reserve_node_zero(pg_data_t *pgdat) BOOTMEM_EXCLUSIVE); } if (machine_is_treo680()) { if (machine_is_treo680() || machine_is_centro()) { reserve_bootmem_node(pgdat, 0xa0000000, 0x1000, BOOTMEM_EXCLUSIVE); reserve_bootmem_node(pgdat, 0xa2000000, 0x1000, Loading Loading
arch/arm/mach-pxa/Kconfig +11 −0 Original line number Diff line number Diff line Loading @@ -425,6 +425,17 @@ config PALM_TREO bool depends on ARCH_PXA_PALM config MACH_CENTRO bool "Palm Centro 685 (GSM)" default y depends on ARCH_PXA_PALM select PXA27x select IWMMXT select PALM_TREO help Say Y here if you intend to run this kernel on Palm Centro 685 (GSM) smartphone. config MACH_TREO680 bool "Palm Treo 680" default y Loading
arch/arm/mach-pxa/include/mach/palmtreo.h +7 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ * * currently supported: * Palm Treo 680 (GSM) * Palm Centro 685 (GSM) * * Author: Tomas Cech <sleep_walker@suse.cz> * Loading Loading @@ -45,6 +46,12 @@ #define GPIO_NR_TREO680_BT_EN 43 #endif /* CONFIG_MACH_TREO680 */ /* Centro685 specific GPIOs */ #define GPIO_NR_CENTRO_SD_POWER 21 #define GPIO_NR_CENTRO_VIBRATE_EN 22 #define GPIO_NR_CENTRO_KEYB_BL 33 #define GPIO_NR_CENTRO_BT_EN 80 /* Various addresses */ #define TREO_PHYS_RAM_START 0xa0000000 #define TREO_PHYS_IO_START 0x40000000 Loading
arch/arm/mach-pxa/palmtreo.c +161 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ * * currently supported: * Palm Treo 680 (GSM) * Palm Centro 685 (GSM) * * Author: Tomas Cech <sleep_walker@suse.cz> * Loading Loading @@ -160,6 +161,21 @@ static unsigned long treo680_pin_config[] __initdata = { }; #endif /* CONFIG_MACH_TREO680 */ #ifdef CONFIG_MACH_CENTRO static unsigned long centro685_pin_config[] __initdata = { /* Bluetooth attached to BT UART*/ MFP_CFG_OUT(GPIO80, AF0, DRIVE_LOW), /* power: LOW = off */ GPIO42_BTUART_RXD, GPIO43_BTUART_TXD, GPIO44_BTUART_CTS, GPIO45_BTUART_RTS, /* MATRIX KEYPAD - different wake up source */ GPIO100_KP_MKIN_0, GPIO99_KP_MKIN_5 | WAKEUP_ON_LEVEL_HIGH, }; #endif /* CONFIG_MACH_CENTRO */ /****************************************************************************** * SD/MMC card controller ******************************************************************************/ Loading @@ -172,6 +188,16 @@ static struct pxamci_platform_data treo680_mci_platform_data = { }; #endif /* CONFIG_MACH_TREO680 */ #ifdef CONFIG_MACH_CENTRO static struct pxamci_platform_data centro_mci_platform_data = { .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, .gpio_card_detect = GPIO_NR_TREO_SD_DETECT_N, .gpio_card_ro = -1, .gpio_power = GPIO_NR_CENTRO_SD_POWER, .gpio_power_invert = 1, }; #endif /* CONFIG_MACH_CENTRO */ /****************************************************************************** * GPIO keyboard ******************************************************************************/ Loading Loading @@ -247,6 +273,78 @@ static struct pxa27x_keypad_platform_data treo680_keypad_platform_data = { }; #endif /* CONFIG_MACH_TREO680 */ #ifdef CONFIG_MACH_CENTRO static unsigned int centro_matrix_keys[] = { KEY(0, 0, KEY_F9), /* Home */ KEY(0, 1, KEY_LEFT), KEY(0, 2, KEY_LEFTCTRL), /* Alternate */ KEY(0, 3, KEY_L), KEY(0, 4, KEY_A), KEY(0, 5, KEY_Q), KEY(0, 6, KEY_P), KEY(1, 0, KEY_RIGHTCTRL), /* Menu */ KEY(1, 1, KEY_RIGHT), KEY(1, 2, KEY_LEFTSHIFT), /* Left shift */ KEY(1, 3, KEY_Z), KEY(1, 4, KEY_S), KEY(1, 5, KEY_W), KEY(2, 0, KEY_F1), /* Phone */ KEY(2, 1, KEY_UP), KEY(2, 2, KEY_0), KEY(2, 3, KEY_X), KEY(2, 4, KEY_D), KEY(2, 5, KEY_E), KEY(3, 0, KEY_F10), /* Calendar */ KEY(3, 1, KEY_DOWN), KEY(3, 2, KEY_SPACE), KEY(3, 3, KEY_C), KEY(3, 4, KEY_F), KEY(3, 5, KEY_R), KEY(4, 0, KEY_F12), /* Mail */ KEY(4, 1, KEY_KPENTER), KEY(4, 2, KEY_RIGHTALT), /* Alt */ KEY(4, 3, KEY_V), KEY(4, 4, KEY_G), KEY(4, 5, KEY_T), KEY(5, 0, KEY_F8), /* Red/Off/Power */ KEY(5, 1, KEY_PAGEUP), /* Side up */ KEY(5, 2, KEY_DOT), KEY(5, 3, KEY_B), KEY(5, 4, KEY_H), KEY(5, 5, KEY_Y), KEY(6, 0, KEY_TAB), /* Side Activate */ KEY(6, 1, KEY_PAGEDOWN), /* Side down */ KEY(6, 2, KEY_ENTER), KEY(6, 3, KEY_N), KEY(6, 4, KEY_J), KEY(6, 5, KEY_U), KEY(7, 0, KEY_F6), /* Green/Call */ KEY(7, 1, KEY_O), KEY(7, 2, KEY_BACKSPACE), KEY(7, 3, KEY_M), KEY(7, 4, KEY_K), KEY(7, 5, KEY_I), }; static struct pxa27x_keypad_platform_data centro_keypad_platform_data = { .matrix_key_rows = 8, .matrix_key_cols = 7, .matrix_key_map = centro_matrix_keys, .matrix_key_map_size = ARRAY_SIZE(centro_matrix_keys), .direct_key_map = { KEY_CONNECT }, .direct_key_num = 1, .debounce_interval = 30, }; #endif /* CONFIG_MACH_CENTRO */ /****************************************************************************** * aSoC audio ******************************************************************************/ Loading Loading @@ -423,6 +521,40 @@ static struct platform_device treo680_leds = { }; #endif /* CONFIG_MACH_TREO680 */ #ifdef CONFIG_MACH_CENTRO static struct gpio_led centro_gpio_leds[] = { { .name = "centro:vibra:vibra", .default_trigger = "none", .gpio = GPIO_NR_CENTRO_VIBRATE_EN, }, { .name = "centro:green:led", .default_trigger = "mmc0", .gpio = GPIO_NR_TREO_GREEN_LED, }, { .name = "centro:white:keybbl", .default_trigger = "none", .active_low = 1, .gpio = GPIO_NR_CENTRO_KEYB_BL, }, }; static struct gpio_led_platform_data centro_gpio_led_info = { .leds = centro_gpio_leds, .num_leds = ARRAY_SIZE(centro_gpio_leds), }; static struct platform_device centro_leds = { .name = "leds-gpio", .id = -1, .dev = { .platform_data = ¢ro_gpio_led_info, } }; #endif /* CONFIG_MACH_CENTRO */ /****************************************************************************** * Framebuffer ******************************************************************************/ Loading Loading @@ -484,6 +616,12 @@ static struct platform_device *treo680_devices[] __initdata = { }; #endif /* CONFIG_MACH_TREO680 */ #ifdef CONFIG_MACH_CENTRO static struct platform_device *centro_devices[] __initdata = { ¢ro_leds, }; #endif /* CONFIG_MACH_CENTRO */ /* setup udc GPIOs initial state */ static void __init treo_udc_init(void) { Loading Loading @@ -549,3 +687,26 @@ MACHINE_START(TREO680, "Palm Treo 680") .init_machine = treo680_init, MACHINE_END #endif /* CONFIG_MACH_TREO680 */ #ifdef CONFIG_MACH_CENTRO static void __init centro_init(void) { treo_init(); pxa2xx_mfp_config(ARRAY_AND_SIZE(centro685_pin_config)); pxa_set_mci_info(¢ro_mci_platform_data); pxa_set_keypad_info(¢ro_keypad_platform_data); platform_add_devices(ARRAY_AND_SIZE(centro_devices)); } MACHINE_START(CENTRO, "Palm Centro 685") .phys_io = TREO_PHYS_IO_START, .io_pg_offst = io_p2v(0x40000000), .boot_params = 0xa0000100, .map_io = pxa_map_io, .init_irq = pxa27x_init_irq, .timer = &pxa_timer, .init_machine = centro_init, MACHINE_END #endif /* CONFIG_MACH_CENTRO */
arch/arm/mm/mmu.c +1 −1 Original line number Diff line number Diff line Loading @@ -881,7 +881,7 @@ void __init reserve_node_zero(pg_data_t *pgdat) BOOTMEM_EXCLUSIVE); } if (machine_is_treo680()) { if (machine_is_treo680() || machine_is_centro()) { reserve_bootmem_node(pgdat, 0xa0000000, 0x1000, BOOTMEM_EXCLUSIVE); reserve_bootmem_node(pgdat, 0xa2000000, 0x1000, Loading