| 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 */
 
 
  |