root/arch/arm/mach-omap1/board-palmte.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. palmte_misc_gpio_setup
  2. palmte_mmc_init
  3. palmte_mmc_init
  4. omap_palmte_init

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * linux/arch/arm/mach-omap1/board-palmte.c
   4  *
   5  * Modified from board-generic.c
   6  *
   7  * Support for the Palm Tungsten E PDA.
   8  *
   9  * Original version : Laurent Gonzalez
  10  *
  11  * Maintainers : http://palmtelinux.sf.net
  12  *                palmtelinux-developpers@lists.sf.net
  13  *
  14  * Copyright (c) 2006 Andrzej Zaborowski  <balrog@zabor.org>
  15  */
  16 #include <linux/gpio.h>
  17 #include <linux/kernel.h>
  18 #include <linux/init.h>
  19 #include <linux/input.h>
  20 #include <linux/platform_device.h>
  21 #include <linux/mtd/mtd.h>
  22 #include <linux/mtd/partitions.h>
  23 #include <linux/mtd/physmap.h>
  24 #include <linux/spi/spi.h>
  25 #include <linux/interrupt.h>
  26 #include <linux/apm-emulation.h>
  27 #include <linux/omapfb.h>
  28 #include <linux/platform_data/omap1_bl.h>
  29 
  30 #include <asm/mach-types.h>
  31 #include <asm/mach/arch.h>
  32 #include <asm/mach/map.h>
  33 
  34 #include "flash.h"
  35 #include <mach/mux.h>
  36 #include <mach/tc.h>
  37 #include <linux/omap-dma.h>
  38 #include <linux/platform_data/keypad-omap.h>
  39 
  40 #include <mach/hardware.h>
  41 #include <mach/usb.h>
  42 
  43 #include "mmc.h"
  44 #include "common.h"
  45 
  46 #define PALMTE_USBDETECT_GPIO   0
  47 #define PALMTE_USB_OR_DC_GPIO   1
  48 #define PALMTE_TSC_GPIO         4
  49 #define PALMTE_PINTDAV_GPIO     6
  50 #define PALMTE_MMC_WP_GPIO      8
  51 #define PALMTE_MMC_POWER_GPIO   9
  52 #define PALMTE_HDQ_GPIO         11
  53 #define PALMTE_HEADPHONES_GPIO  14
  54 #define PALMTE_SPEAKER_GPIO     15
  55 #define PALMTE_DC_GPIO          OMAP_MPUIO(2)
  56 #define PALMTE_MMC_SWITCH_GPIO  OMAP_MPUIO(4)
  57 #define PALMTE_MMC1_GPIO        OMAP_MPUIO(6)
  58 #define PALMTE_MMC2_GPIO        OMAP_MPUIO(7)
  59 #define PALMTE_MMC3_GPIO        OMAP_MPUIO(11)
  60 
  61 static const unsigned int palmte_keymap[] = {
  62         KEY(0, 0, KEY_F1),              /* Calendar */
  63         KEY(1, 0, KEY_F2),              /* Contacts */
  64         KEY(2, 0, KEY_F3),              /* Tasks List */
  65         KEY(3, 0, KEY_F4),              /* Note Pad */
  66         KEY(4, 0, KEY_POWER),
  67         KEY(0, 1, KEY_LEFT),
  68         KEY(1, 1, KEY_DOWN),
  69         KEY(2, 1, KEY_UP),
  70         KEY(3, 1, KEY_RIGHT),
  71         KEY(4, 1, KEY_ENTER),
  72 };
  73 
  74 static const struct matrix_keymap_data palmte_keymap_data = {
  75         .keymap         = palmte_keymap,
  76         .keymap_size    = ARRAY_SIZE(palmte_keymap),
  77 };
  78 
  79 static struct omap_kp_platform_data palmte_kp_data = {
  80         .rows   = 8,
  81         .cols   = 8,
  82         .keymap_data = &palmte_keymap_data,
  83         .rep    = true,
  84         .delay  = 12,
  85 };
  86 
  87 static struct resource palmte_kp_resources[] = {
  88         [0]     = {
  89                 .start  = INT_KEYBOARD,
  90                 .end    = INT_KEYBOARD,
  91                 .flags  = IORESOURCE_IRQ,
  92         },
  93 };
  94 
  95 static struct platform_device palmte_kp_device = {
  96         .name           = "omap-keypad",
  97         .id             = -1,
  98         .dev            = {
  99                 .platform_data  = &palmte_kp_data,
 100         },
 101         .num_resources  = ARRAY_SIZE(palmte_kp_resources),
 102         .resource       = palmte_kp_resources,
 103 };
 104 
 105 static struct mtd_partition palmte_rom_partitions[] = {
 106         /* PalmOS "Small ROM", contains the bootloader and the debugger */
 107         {
 108                 .name           = "smallrom",
 109                 .offset         = 0,
 110                 .size           = 0xa000,
 111                 .mask_flags     = MTD_WRITEABLE,
 112         },
 113         /* PalmOS "Big ROM", a filesystem with all the OS code and data */
 114         {
 115                 .name           = "bigrom",
 116                 .offset         = SZ_128K,
 117                 /*
 118                  * 0x5f0000 bytes big in the multi-language ("EFIGS") version,
 119                  * 0x7b0000 bytes in the English-only ("enUS") version.
 120                  */
 121                 .size           = 0x7b0000,
 122                 .mask_flags     = MTD_WRITEABLE,
 123         },
 124 };
 125 
 126 static struct physmap_flash_data palmte_rom_data = {
 127         .width          = 2,
 128         .set_vpp        = omap1_set_vpp,
 129         .parts          = palmte_rom_partitions,
 130         .nr_parts       = ARRAY_SIZE(palmte_rom_partitions),
 131 };
 132 
 133 static struct resource palmte_rom_resource = {
 134         .start          = OMAP_CS0_PHYS,
 135         .end            = OMAP_CS0_PHYS + SZ_8M - 1,
 136         .flags          = IORESOURCE_MEM,
 137 };
 138 
 139 static struct platform_device palmte_rom_device = {
 140         .name           = "physmap-flash",
 141         .id             = -1,
 142         .dev            = {
 143                 .platform_data  = &palmte_rom_data,
 144         },
 145         .num_resources  = 1,
 146         .resource       = &palmte_rom_resource,
 147 };
 148 
 149 static struct platform_device palmte_lcd_device = {
 150         .name           = "lcd_palmte",
 151         .id             = -1,
 152 };
 153 
 154 static struct omap_backlight_config palmte_backlight_config = {
 155         .default_intensity      = 0xa0,
 156 };
 157 
 158 static struct platform_device palmte_backlight_device = {
 159         .name           = "omap-bl",
 160         .id             = -1,
 161         .dev            = {
 162                 .platform_data  = &palmte_backlight_config,
 163         },
 164 };
 165 
 166 static struct platform_device *palmte_devices[] __initdata = {
 167         &palmte_rom_device,
 168         &palmte_kp_device,
 169         &palmte_lcd_device,
 170         &palmte_backlight_device,
 171 };
 172 
 173 static struct omap_usb_config palmte_usb_config __initdata = {
 174         .register_dev   = 1,    /* Mini-B only receptacle */
 175         .hmc_mode       = 0,
 176         .pins[0]        = 2,
 177 };
 178 
 179 static const struct omap_lcd_config palmte_lcd_config __initconst = {
 180         .ctrl_name      = "internal",
 181 };
 182 
 183 static struct spi_board_info palmte_spi_info[] __initdata = {
 184         {
 185                 .modalias       = "tsc2102",
 186                 .bus_num        = 2,    /* uWire (officially) */
 187                 .chip_select    = 0,    /* As opposed to 3 */
 188                 .max_speed_hz   = 8000000,
 189         },
 190 };
 191 
 192 static void __init palmte_misc_gpio_setup(void)
 193 {
 194         /* Set TSC2102 PINTDAV pin as input (used by TSC2102 driver) */
 195         if (gpio_request(PALMTE_PINTDAV_GPIO, "TSC2102 PINTDAV") < 0) {
 196                 printk(KERN_ERR "Could not reserve PINTDAV GPIO!\n");
 197                 return;
 198         }
 199         gpio_direction_input(PALMTE_PINTDAV_GPIO);
 200 
 201         /* Set USB-or-DC-IN pin as input (unused) */
 202         if (gpio_request(PALMTE_USB_OR_DC_GPIO, "USB/DC-IN") < 0) {
 203                 printk(KERN_ERR "Could not reserve cable signal GPIO!\n");
 204                 return;
 205         }
 206         gpio_direction_input(PALMTE_USB_OR_DC_GPIO);
 207 }
 208 
 209 #if IS_ENABLED(CONFIG_MMC_OMAP)
 210 
 211 static struct omap_mmc_platform_data _palmte_mmc_config = {
 212         .nr_slots                       = 1,
 213         .slots[0]                       = {
 214                 .ocr_mask               = MMC_VDD_32_33|MMC_VDD_33_34,
 215                 .name                   = "mmcblk",
 216         },
 217 };
 218 
 219 static struct omap_mmc_platform_data *palmte_mmc_config[OMAP15XX_NR_MMC] = {
 220         [0] = &_palmte_mmc_config,
 221 };
 222 
 223 static void palmte_mmc_init(void)
 224 {
 225         omap1_init_mmc(palmte_mmc_config, OMAP15XX_NR_MMC);
 226 }
 227 
 228 #else /* CONFIG_MMC_OMAP */
 229 
 230 static void palmte_mmc_init(void)
 231 {
 232 }
 233 
 234 #endif /* CONFIG_MMC_OMAP */
 235 
 236 static void __init omap_palmte_init(void)
 237 {
 238         /* mux pins for uarts */
 239         omap_cfg_reg(UART1_TX);
 240         omap_cfg_reg(UART1_RTS);
 241         omap_cfg_reg(UART2_TX);
 242         omap_cfg_reg(UART2_RTS);
 243         omap_cfg_reg(UART3_TX);
 244         omap_cfg_reg(UART3_RX);
 245 
 246         platform_add_devices(palmte_devices, ARRAY_SIZE(palmte_devices));
 247 
 248         palmte_spi_info[0].irq = gpio_to_irq(PALMTE_PINTDAV_GPIO);
 249         spi_register_board_info(palmte_spi_info, ARRAY_SIZE(palmte_spi_info));
 250         palmte_misc_gpio_setup();
 251         omap_serial_init();
 252         omap1_usb_init(&palmte_usb_config);
 253         omap_register_i2c_bus(1, 100, NULL, 0);
 254 
 255         omapfb_set_lcd_config(&palmte_lcd_config);
 256         palmte_mmc_init();
 257 }
 258 
 259 MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E")
 260         .atag_offset    = 0x100,
 261         .map_io         = omap15xx_map_io,
 262         .init_early     = omap1_init_early,
 263         .init_irq       = omap1_init_irq,
 264         .handle_irq     = omap1_handle_irq,
 265         .init_machine   = omap_palmte_init,
 266         .init_late      = omap1_init_late,
 267         .init_time      = omap1_timer_init,
 268         .restart        = omap1_restart,
 269 MACHINE_END

/* [<][>][^][v][top][bottom][index][help] */