123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- /*
- * HTC Herald board configuration
- * Copyright (C) 2009 Cory Maccarrone <darkstar6262@gmail.com>
- * Copyright (C) 2009 Wing Linux
- *
- * Based on the board-htcwizard.c file from the linwizard project:
- * Copyright (C) 2006 Unai Uribarri
- * Copyright (C) 2008 linwizard.sourceforge.net
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- *
- */
- #include <linux/kernel.h>
- #include <linux/init.h>
- #include <linux/platform_device.h>
- #include <linux/input.h>
- #include <linux/delay.h>
- #include <linux/gpio.h>
- #include <linux/gpio_keys.h>
- #include <linux/i2c.h>
- #include <linux/i2c-gpio.h>
- #include <linux/htcpld.h>
- #include <linux/leds.h>
- #include <linux/spi/spi.h>
- #include <linux/spi/ads7846.h>
- #include <linux/omapfb.h>
- #include <linux/platform_data/keypad-omap.h>
- #include <asm/mach-types.h>
- #include <asm/mach/arch.h>
- #include <mach/omap7xx.h>
- #include "mmc.h"
- #include <mach/irqs.h>
- #include <mach/usb.h>
- #include "common.h"
- /* LCD register definition */
- #define OMAP_LCDC_CONTROL (0xfffec000 + 0x00)
- #define OMAP_LCDC_STATUS (0xfffec000 + 0x10)
- #define OMAP_DMA_LCD_CCR (0xfffee300 + 0xc2)
- #define OMAP_DMA_LCD_CTRL (0xfffee300 + 0xc4)
- #define OMAP_LCDC_CTRL_LCD_EN (1 << 0)
- #define OMAP_LCDC_STAT_DONE (1 << 0)
- /* GPIO definitions for the power button and keyboard slide switch */
- #define HTCHERALD_GPIO_POWER 139
- #define HTCHERALD_GPIO_SLIDE 174
- #define HTCHERALD_GIRQ_BTNS 141
- /* GPIO definitions for the touchscreen */
- #define HTCHERALD_GPIO_TS 76
- /* HTCPLD definitions */
- /*
- * CPLD Logic
- *
- * Chip 3 - 0x03
- *
- * Function 7 6 5 4 3 2 1 0
- * ------------------------------------
- * DPAD light x x x x x x x 1
- * SoundDev x x x x 1 x x x
- * Screen white 1 x x x x x x x
- * MMC power on x x x x x 1 x x
- * Happy times (n) 0 x x x x 1 x x
- *
- * Chip 4 - 0x04
- *
- * Function 7 6 5 4 3 2 1 0
- * ------------------------------------
- * Keyboard light x x x x x x x 1
- * LCD Bright (4) x x x x x 1 1 x
- * LCD Bright (3) x x x x x 0 1 x
- * LCD Bright (2) x x x x x 1 0 x
- * LCD Bright (1) x x x x x 0 0 x
- * LCD Off x x x x 0 x x x
- * LCD image (fb) 1 x x x x x x x
- * LCD image (white) 0 x x x x x x x
- * Caps lock LED x x 1 x x x x x
- *
- * Chip 5 - 0x05
- *
- * Function 7 6 5 4 3 2 1 0
- * ------------------------------------
- * Red (solid) x x x x x 1 x x
- * Red (flash) x x x x x x 1 x
- * Green (GSM flash) x x x x 1 x x x
- * Green (GSM solid) x x x 1 x x x x
- * Green (wifi flash) x x 1 x x x x x
- * Blue (bt flash) x 1 x x x x x x
- * DPAD Int Enable 1 x x x x x x 0
- *
- * (Combinations of the above can be made for different colors.)
- * The direction pad interrupt enable must be set each time the
- * interrupt is handled.
- *
- * Chip 6 - 0x06
- *
- * Function 7 6 5 4 3 2 1 0
- * ------------------------------------
- * Vibrator x x x x 1 x x x
- * Alt LED x x x 1 x x x x
- * Screen white 1 x x x x x x x
- * Screen white x x 1 x x x x x
- * Screen white x 0 x x x x x x
- * Enable kbd dpad x x x x x x 0 x
- * Happy Times 0 1 0 x x x 0 x
- */
- /*
- * HTCPLD GPIO lines start 16 after OMAP_MAX_GPIO_LINES to account
- * for the 16 MPUIO lines.
- */
- #define HTCPLD_GPIO_START_OFFSET (OMAP_MAX_GPIO_LINES + 16)
- #define HTCPLD_IRQ(chip, offset) (OMAP_IRQ_END + 8 * (chip) + (offset))
- #define HTCPLD_BASE(chip, offset) \
- (HTCPLD_GPIO_START_OFFSET + 8 * (chip) + (offset))
- #define HTCPLD_GPIO_LED_DPAD HTCPLD_BASE(0, 0)
- #define HTCPLD_GPIO_LED_KBD HTCPLD_BASE(1, 0)
- #define HTCPLD_GPIO_LED_CAPS HTCPLD_BASE(1, 5)
- #define HTCPLD_GPIO_LED_RED_FLASH HTCPLD_BASE(2, 1)
- #define HTCPLD_GPIO_LED_RED_SOLID HTCPLD_BASE(2, 2)
- #define HTCPLD_GPIO_LED_GREEN_FLASH HTCPLD_BASE(2, 3)
- #define HTCPLD_GPIO_LED_GREEN_SOLID HTCPLD_BASE(2, 4)
- #define HTCPLD_GPIO_LED_WIFI HTCPLD_BASE(2, 5)
- #define HTCPLD_GPIO_LED_BT HTCPLD_BASE(2, 6)
- #define HTCPLD_GPIO_LED_VIBRATE HTCPLD_BASE(3, 3)
- #define HTCPLD_GPIO_LED_ALT HTCPLD_BASE(3, 4)
- #define HTCPLD_GPIO_RIGHT_KBD HTCPLD_BASE(6, 7)
- #define HTCPLD_GPIO_UP_KBD HTCPLD_BASE(6, 6)
- #define HTCPLD_GPIO_LEFT_KBD HTCPLD_BASE(6, 5)
- #define HTCPLD_GPIO_DOWN_KBD HTCPLD_BASE(6, 4)
- #define HTCPLD_GPIO_RIGHT_DPAD HTCPLD_BASE(7, 7)
- #define HTCPLD_GPIO_UP_DPAD HTCPLD_BASE(7, 6)
- #define HTCPLD_GPIO_LEFT_DPAD HTCPLD_BASE(7, 5)
- #define HTCPLD_GPIO_DOWN_DPAD HTCPLD_BASE(7, 4)
- #define HTCPLD_GPIO_ENTER_DPAD HTCPLD_BASE(7, 3)
- /*
- * The htcpld chip requires a gpio write to a specific line
- * to re-enable interrupts after one has occurred.
- */
- #define HTCPLD_GPIO_INT_RESET_HI HTCPLD_BASE(2, 7)
- #define HTCPLD_GPIO_INT_RESET_LO HTCPLD_BASE(2, 0)
- /* Chip 5 */
- #define HTCPLD_IRQ_RIGHT_KBD HTCPLD_IRQ(0, 7)
- #define HTCPLD_IRQ_UP_KBD HTCPLD_IRQ(0, 6)
- #define HTCPLD_IRQ_LEFT_KBD HTCPLD_IRQ(0, 5)
- #define HTCPLD_IRQ_DOWN_KBD HTCPLD_IRQ(0, 4)
- /* Chip 6 */
- #define HTCPLD_IRQ_RIGHT_DPAD HTCPLD_IRQ(1, 7)
- #define HTCPLD_IRQ_UP_DPAD HTCPLD_IRQ(1, 6)
- #define HTCPLD_IRQ_LEFT_DPAD HTCPLD_IRQ(1, 5)
- #define HTCPLD_IRQ_DOWN_DPAD HTCPLD_IRQ(1, 4)
- #define HTCPLD_IRQ_ENTER_DPAD HTCPLD_IRQ(1, 3)
- /* Keyboard definition */
- static const unsigned int htc_herald_keymap[] = {
- KEY(0, 0, KEY_RECORD), /* Mail button */
- KEY(1, 0, KEY_CAMERA), /* Camera */
|