^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Hardware definitions for Palm Tungsten|T5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Author: Marek Vasut <marek.vasut@gmail.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * Based on work of:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) * Ales Snuparek <snuparek@atlas.cz>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) * Justin Kendrick <twilightsentry@gmail.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) * RichardT5 <richard_t5@users.sourceforge.net>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) * (find more info at www.hackndev.com)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #include <linux/platform_device.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #include <linux/delay.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #include <linux/irq.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #include <linux/gpio_keys.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #include <linux/input.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #include <linux/memblock.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #include <linux/pda_power.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #include <linux/pwm_backlight.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #include <linux/gpio.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #include <linux/wm97xx.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #include <linux/power_supply.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #include <asm/mach-types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #include <asm/mach/arch.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #include <asm/mach/map.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #include "pxa27x.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #include <mach/audio.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #include "palmt5.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #include <linux/platform_data/mmc-pxamci.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #include <linux/platform_data/video-pxafb.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #include <linux/platform_data/irda-pxaficp.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) #include <linux/platform_data/keypad-pxa27x.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #include "udc.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #include <linux/platform_data/asoc-palm27x.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) #include "palm27x.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) #include "generic.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) #include "devices.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) /******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) * Pin configuration
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) static unsigned long palmt5_pin_config[] __initdata = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) /* MMC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) GPIO32_MMC_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) GPIO92_MMC_DAT_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) GPIO109_MMC_DAT_1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) GPIO110_MMC_DAT_2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) GPIO111_MMC_DAT_3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) GPIO112_MMC_CMD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) GPIO14_GPIO, /* SD detect */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) GPIO114_GPIO, /* SD power */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) GPIO115_GPIO, /* SD r/o switch */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) /* AC97 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) GPIO28_AC97_BITCLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) GPIO29_AC97_SDATA_IN_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) GPIO30_AC97_SDATA_OUT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) GPIO31_AC97_SYNC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) GPIO89_AC97_SYSCLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) GPIO95_AC97_nRESET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) /* IrDA */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) GPIO40_GPIO, /* ir disable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) GPIO46_FICP_RXD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) GPIO47_FICP_TXD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) /* USB */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) GPIO15_GPIO, /* usb detect */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) GPIO93_GPIO, /* usb power */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) /* MATRIX KEYPAD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) GPIO103_KP_MKOUT_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) GPIO104_KP_MKOUT_1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) GPIO105_KP_MKOUT_2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) /* LCD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) GPIOxx_LCD_TFT_16BPP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) /* PWM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) GPIO16_PWM0_OUT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) /* FFUART */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) GPIO34_FFUART_RXD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) GPIO39_FFUART_TXD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) /* MISC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) GPIO10_GPIO, /* hotsync button */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) GPIO90_GPIO, /* power detect */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) GPIO107_GPIO, /* earphone detect */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) /******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) * GPIO keyboard
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) #if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) static const unsigned int palmt5_matrix_keys[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) KEY(0, 0, KEY_POWER),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) KEY(0, 1, KEY_F1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) KEY(0, 2, KEY_ENTER),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) KEY(1, 0, KEY_F2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) KEY(1, 1, KEY_F3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) KEY(1, 2, KEY_F4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) KEY(2, 0, KEY_UP),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) KEY(2, 2, KEY_DOWN),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) KEY(3, 0, KEY_RIGHT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) KEY(3, 2, KEY_LEFT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) static struct matrix_keymap_data palmt5_matrix_keymap_data = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) .keymap = palmt5_matrix_keys,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) .keymap_size = ARRAY_SIZE(palmt5_matrix_keys),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) static struct pxa27x_keypad_platform_data palmt5_keypad_platform_data = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) .matrix_key_rows = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) .matrix_key_cols = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) .matrix_keymap_data = &palmt5_matrix_keymap_data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) .debounce_interval = 30,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) static void __init palmt5_kpc_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) pxa_set_keypad_info(&palmt5_keypad_platform_data);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) static inline void palmt5_kpc_init(void) {}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) /******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) * GPIO keys
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) static struct gpio_keys_button palmt5_pxa_buttons[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) {KEY_F8, GPIO_NR_PALMT5_HOTSYNC_BUTTON_N, 1, "HotSync Button" },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) static struct gpio_keys_platform_data palmt5_pxa_keys_data = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) .buttons = palmt5_pxa_buttons,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) .nbuttons = ARRAY_SIZE(palmt5_pxa_buttons),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) static struct platform_device palmt5_pxa_keys = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) .name = "gpio-keys",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) .id = -1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) .dev = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) .platform_data = &palmt5_pxa_keys_data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) static void __init palmt5_keys_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) platform_device_register(&palmt5_pxa_keys);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) static inline void palmt5_keys_init(void) {}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) /******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) * Machine init
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) static void __init palmt5_reserve(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) memblock_reserve(0xa0200000, 0x1000);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) static struct gpiod_lookup_table palmt5_mci_gpio_table = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) .dev_id = "pxa2xx-mci.0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) .table = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMT5_SD_DETECT_N,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) "cd", GPIO_ACTIVE_LOW),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMT5_SD_READONLY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) "wp", GPIO_ACTIVE_LOW),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMT5_SD_POWER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) "power", GPIO_ACTIVE_HIGH),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) { },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) static void __init palmt5_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) pxa2xx_mfp_config(ARRAY_AND_SIZE(palmt5_pin_config));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) pxa_set_ffuart_info(NULL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) pxa_set_btuart_info(NULL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) pxa_set_stuart_info(NULL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) palm27x_mmc_init(&palmt5_mci_gpio_table);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) palm27x_pm_init(PALMT5_STR_BASE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) palm27x_lcd_init(-1, &palm_320x480_lcd_mode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) palm27x_udc_init(GPIO_NR_PALMT5_USB_DETECT_N,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) GPIO_NR_PALMT5_USB_PULLUP, 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) palm27x_irda_init(GPIO_NR_PALMT5_IR_DISABLE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) palm27x_ac97_init(PALMT5_BAT_MIN_VOLTAGE, PALMT5_BAT_MAX_VOLTAGE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) GPIO_NR_PALMT5_EARPHONE_DETECT, 95);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) palm27x_pwm_init(GPIO_NR_PALMT5_BL_POWER, GPIO_NR_PALMT5_LCD_POWER);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) palm27x_power_init(GPIO_NR_PALMT5_POWER_DETECT, -1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) palm27x_pmic_init();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) palmt5_kpc_init();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) palmt5_keys_init();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) MACHINE_START(PALMT5, "Palm Tungsten|T5")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) .atag_offset = 0x100,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) .map_io = pxa27x_map_io,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) .reserve = palmt5_reserve,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) .nr_irqs = PXA_NR_IRQS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) .init_irq = pxa27x_init_irq,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) .handle_irq = pxa27x_handle_irq,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) .init_time = pxa_timer_init,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) .init_machine = palmt5_init,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) .restart = pxa_restart,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) MACHINE_END