-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 77579 b: refs/heads/master c: e5c271e h: refs/heads/master i: 77577: 8316a22 77575: 1b4fb7e v: v3
- Loading branch information
Philipp Zabel
authored and
Russell King
committed
Jan 28, 2008
1 parent
875923e
commit f4394c4
Showing
5 changed files
with
337 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 3abcd199db312abeec617083be8a7655cab73ec8 | ||
refs/heads/master: e5c271ec3bdfaca5e8d47a9e63cfc0bf889881aa |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,218 @@ | ||
/* | ||
* Support for HTC Magician PDA phones: | ||
* i-mate JAM, O2 Xda mini, Orange SPV M500, Qtek s100, Qtek s110 | ||
* and T-Mobile MDA Compact. | ||
* | ||
* Copyright (c) 2006-2007 Philipp Zabel | ||
* | ||
* Based on hx4700.c, spitz.c and others. | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
* | ||
*/ | ||
|
||
#include <linux/kernel.h> | ||
#include <linux/init.h> | ||
#include <linux/platform_device.h> | ||
#include <linux/gpio_keys.h> | ||
#include <linux/input.h> | ||
#include <linux/mtd/mtd.h> | ||
#include <linux/mtd/map.h> | ||
#include <linux/mtd/physmap.h> | ||
|
||
#include <asm/gpio.h> | ||
#include <asm/hardware.h> | ||
#include <asm/mach-types.h> | ||
#include <asm/mach/arch.h> | ||
#include <asm/arch/magician.h> | ||
#include <asm/arch/pxa-regs.h> | ||
#include <asm/arch/pxafb.h> | ||
#include <asm/arch/irda.h> | ||
#include <asm/arch/ohci.h> | ||
|
||
#include "generic.h" | ||
|
||
/* | ||
* IRDA | ||
*/ | ||
|
||
static void magician_irda_transceiver_mode(struct device *dev, int mode) | ||
{ | ||
gpio_set_value(GPIO83_MAGICIAN_nIR_EN, mode & IR_OFF); | ||
} | ||
|
||
static struct pxaficp_platform_data magician_ficp_info = { | ||
.transceiver_cap = IR_SIRMODE | IR_OFF, | ||
.transceiver_mode = magician_irda_transceiver_mode, | ||
}; | ||
|
||
/* | ||
* GPIO Keys | ||
*/ | ||
|
||
static struct gpio_keys_button magician_button_table[] = { | ||
{KEY_POWER, GPIO0_MAGICIAN_KEY_POWER, 0, "Power button"}, | ||
{KEY_ESC, GPIO37_MAGICIAN_KEY_HANGUP, 0, "Hangup button"}, | ||
{KEY_F10, GPIO38_MAGICIAN_KEY_CONTACTS, 0, "Contacts button"}, | ||
{KEY_CALENDAR, GPIO90_MAGICIAN_KEY_CALENDAR, 0, "Calendar button"}, | ||
{KEY_CAMERA, GPIO91_MAGICIAN_KEY_CAMERA, 0, "Camera button"}, | ||
{KEY_UP, GPIO93_MAGICIAN_KEY_UP, 0, "Up button"}, | ||
{KEY_DOWN, GPIO94_MAGICIAN_KEY_DOWN, 0, "Down button"}, | ||
{KEY_LEFT, GPIO95_MAGICIAN_KEY_LEFT, 0, "Left button"}, | ||
{KEY_RIGHT, GPIO96_MAGICIAN_KEY_RIGHT, 0, "Right button"}, | ||
{KEY_KPENTER, GPIO97_MAGICIAN_KEY_ENTER, 0, "Action button"}, | ||
{KEY_RECORD, GPIO98_MAGICIAN_KEY_RECORD, 0, "Record button"}, | ||
{KEY_VOLUMEUP, GPIO100_MAGICIAN_KEY_VOL_UP, 0, "Volume up"}, | ||
{KEY_VOLUMEDOWN, GPIO101_MAGICIAN_KEY_VOL_DOWN, 0, "Volume down"}, | ||
{KEY_PHONE, GPIO102_MAGICIAN_KEY_PHONE, 0, "Phone button"}, | ||
{KEY_PLAY, GPIO99_MAGICIAN_HEADPHONE_IN, 0, "Headset button"}, | ||
}; | ||
|
||
static struct gpio_keys_platform_data gpio_keys_data = { | ||
.buttons = magician_button_table, | ||
.nbuttons = ARRAY_SIZE(magician_button_table), | ||
}; | ||
|
||
static struct platform_device gpio_keys = { | ||
.name = "gpio-keys", | ||
.dev = { | ||
.platform_data = &gpio_keys_data, | ||
}, | ||
.id = -1, | ||
}; | ||
|
||
/* | ||
* LCD - Toppoly TD028STEB1 | ||
*/ | ||
|
||
static struct pxafb_mode_info toppoly_modes[] = { | ||
{ | ||
.pixclock = 96153, | ||
.bpp = 16, | ||
.xres = 240, | ||
.yres = 320, | ||
.hsync_len = 11, | ||
.vsync_len = 3, | ||
.left_margin = 19, | ||
.upper_margin = 2, | ||
.right_margin = 10, | ||
.lower_margin = 2, | ||
.sync = 0, | ||
}, | ||
}; | ||
|
||
static struct pxafb_mach_info toppoly_info = { | ||
.modes = toppoly_modes, | ||
.num_modes = 1, | ||
.fixed_modes = 1, | ||
.lccr0 = LCCR0_Color | LCCR0_Sngl | LCCR0_Act, | ||
.lccr3 = LCCR3_PixRsEdg, | ||
}; | ||
|
||
/* | ||
* Backlight | ||
*/ | ||
|
||
static void magician_set_bl_intensity(int intensity) | ||
{ | ||
if (intensity) { | ||
PWM_CTRL0 = 1; | ||
PWM_PERVAL0 = 0xc8; | ||
PWM_PWDUTY0 = intensity; | ||
pxa_set_cken(CKEN_PWM0, 1); | ||
} else { | ||
pxa_set_cken(CKEN_PWM0, 0); | ||
} | ||
} | ||
|
||
static struct generic_bl_info backlight_info = { | ||
.default_intensity = 0x64, | ||
.limit_mask = 0x0b, | ||
.max_intensity = 0xc7, | ||
.set_bl_intensity = magician_set_bl_intensity, | ||
}; | ||
|
||
static struct platform_device backlight = { | ||
.name = "corgi-bl", | ||
.dev = { | ||
.platform_data = &backlight_info, | ||
}, | ||
.id = -1, | ||
}; | ||
|
||
|
||
/* | ||
* USB OHCI | ||
*/ | ||
|
||
static int magician_ohci_init(struct device *dev) | ||
{ | ||
UHCHR = (UHCHR | UHCHR_SSEP2 | UHCHR_PCPL | UHCHR_CGR) & | ||
~(UHCHR_SSEP1 | UHCHR_SSEP3 | UHCHR_SSE); | ||
|
||
return 0; | ||
} | ||
|
||
static struct pxaohci_platform_data magician_ohci_info = { | ||
.port_mode = PMM_PERPORT_MODE, | ||
.init = magician_ohci_init, | ||
.power_budget = 0, | ||
}; | ||
|
||
|
||
/* | ||
* StrataFlash | ||
*/ | ||
|
||
#define PXA_CS_SIZE 0x04000000 | ||
|
||
static struct resource strataflash_resource = { | ||
.start = PXA_CS0_PHYS, | ||
.end = PXA_CS0_PHYS + PXA_CS_SIZE - 1, | ||
.flags = IORESOURCE_MEM, | ||
}; | ||
|
||
static struct physmap_flash_data strataflash_data = { | ||
.width = 4, | ||
}; | ||
|
||
static struct platform_device strataflash = { | ||
.name = "physmap-flash", | ||
.id = -1, | ||
.num_resources = 1, | ||
.resource = &strataflash_resource, | ||
.dev = { | ||
.platform_data = &strataflash_data, | ||
}, | ||
}; | ||
|
||
/* | ||
* Platform devices | ||
*/ | ||
|
||
static struct platform_device *devices[] __initdata = { | ||
&gpio_keys, | ||
&backlight, | ||
&strataflash, | ||
}; | ||
|
||
static void __init magician_init(void) | ||
{ | ||
platform_add_devices(devices, ARRAY_SIZE(devices)); | ||
pxa_set_ohci_info(&magician_ohci_info); | ||
pxa_set_ficp_info(&magician_ficp_info); | ||
set_pxa_fb_info(&toppoly_info); | ||
} | ||
|
||
|
||
MACHINE_START(MAGICIAN, "HTC Magician") | ||
.phys_io = 0x40000000, | ||
.io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | ||
.boot_params = 0xa0000100, | ||
.map_io = pxa_map_io, | ||
.init_irq = pxa27x_init_irq, | ||
.init_machine = magician_init, | ||
.timer = &pxa_timer, | ||
MACHINE_END |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
/* | ||
* GPIO and IRQ definitions for HTC Magician PDA phones | ||
* | ||
* Copyright (c) 2007 Philipp Zabel | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
* | ||
*/ | ||
|
||
#ifndef _MAGICIAN_H_ | ||
#define _MAGICIAN_H_ | ||
|
||
#include <asm/arch/pxa-regs.h> | ||
|
||
/* | ||
* PXA GPIOs | ||
*/ | ||
|
||
#define GPIO0_MAGICIAN_KEY_POWER 0 | ||
#define GPIO9_MAGICIAN_UNKNOWN 9 | ||
#define GPIO10_MAGICIAN_GSM_IRQ 10 | ||
#define GPIO11_MAGICIAN_GSM_OUT1 11 | ||
#define GPIO13_MAGICIAN_CPLD_IRQ 13 | ||
#define GPIO18_MAGICIAN_UNKNOWN 18 | ||
#define GPIO22_MAGICIAN_VIBRA_EN 22 | ||
#define GPIO26_MAGICIAN_GSM_POWER 26 | ||
#define GPIO27_MAGICIAN_USBC_PUEN 27 | ||
#define GPIO30_MAGICIAN_nCHARGE_EN 30 | ||
#define GPIO37_MAGICIAN_KEY_HANGUP 37 | ||
#define GPIO38_MAGICIAN_KEY_CONTACTS 38 | ||
#define GPIO40_MAGICIAN_GSM_OUT2 40 | ||
#define GPIO48_MAGICIAN_UNKNOWN 48 | ||
#define GPIO56_MAGICIAN_UNKNOWN 56 | ||
#define GPIO57_MAGICIAN_CAM_RESET 57 | ||
#define GPIO83_MAGICIAN_nIR_EN 83 | ||
#define GPIO86_MAGICIAN_GSM_RESET 86 | ||
#define GPIO87_MAGICIAN_GSM_SELECT 87 | ||
#define GPIO90_MAGICIAN_KEY_CALENDAR 90 | ||
#define GPIO91_MAGICIAN_KEY_CAMERA 91 | ||
#define GPIO93_MAGICIAN_KEY_UP 93 | ||
#define GPIO94_MAGICIAN_KEY_DOWN 94 | ||
#define GPIO95_MAGICIAN_KEY_LEFT 95 | ||
#define GPIO96_MAGICIAN_KEY_RIGHT 96 | ||
#define GPIO97_MAGICIAN_KEY_ENTER 97 | ||
#define GPIO98_MAGICIAN_KEY_RECORD 98 | ||
#define GPIO99_MAGICIAN_HEADPHONE_IN 99 | ||
#define GPIO100_MAGICIAN_KEY_VOL_UP 100 | ||
#define GPIO101_MAGICIAN_KEY_VOL_DOWN 101 | ||
#define GPIO102_MAGICIAN_KEY_PHONE 102 | ||
#define GPIO103_MAGICIAN_LED_KP 103 | ||
#define GPIO104_MAGICIAN_LCD_POWER_1 104 | ||
#define GPIO105_MAGICIAN_LCD_POWER_2 105 | ||
#define GPIO106_MAGICIAN_LCD_POWER_3 106 | ||
#define GPIO107_MAGICIAN_DS1WM_IRQ 107 | ||
#define GPIO108_MAGICIAN_GSM_READY 108 | ||
#define GPIO114_MAGICIAN_UNKNOWN 114 | ||
#define GPIO115_MAGICIAN_nPEN_IRQ 115 | ||
#define GPIO116_MAGICIAN_nCAM_EN 116 | ||
#define GPIO119_MAGICIAN_UNKNOWN 119 | ||
#define GPIO120_MAGICIAN_UNKNOWN 120 | ||
|
||
/* | ||
* PXA GPIO alternate function mode & direction | ||
*/ | ||
|
||
#define GPIO0_MAGICIAN_KEY_POWER_MD (0 | GPIO_IN) | ||
#define GPIO9_MAGICIAN_UNKNOWN_MD (9 | GPIO_IN) | ||
#define GPIO10_MAGICIAN_GSM_IRQ_MD (10 | GPIO_IN) | ||
#define GPIO11_MAGICIAN_GSM_OUT1_MD (11 | GPIO_OUT) | ||
#define GPIO13_MAGICIAN_CPLD_IRQ_MD (13 | GPIO_IN) | ||
#define GPIO18_MAGICIAN_UNKNOWN_MD (18 | GPIO_OUT) | ||
#define GPIO22_MAGICIAN_VIBRA_EN_MD (22 | GPIO_OUT) | ||
#define GPIO26_MAGICIAN_GSM_POWER_MD (26 | GPIO_OUT) | ||
#define GPIO27_MAGICIAN_USBC_PUEN_MD (27 | GPIO_OUT) | ||
#define GPIO30_MAGICIAN_nCHARGE_EN_MD (30 | GPIO_OUT) | ||
#define GPIO37_MAGICIAN_KEY_HANGUP_MD (37 | GPIO_OUT) | ||
#define GPIO38_MAGICIAN_KEY_CONTACTS_MD (38 | GPIO_OUT) | ||
#define GPIO40_MAGICIAN_GSM_OUT2_MD (40 | GPIO_OUT) | ||
#define GPIO48_MAGICIAN_UNKNOWN_MD (48 | GPIO_OUT) | ||
#define GPIO56_MAGICIAN_UNKNOWN_MD (56 | GPIO_OUT) | ||
#define GPIO57_MAGICIAN_CAM_RESET_MD (57 | GPIO_OUT) | ||
#define GPIO83_MAGICIAN_nIR_EN_MD (83 | GPIO_OUT) | ||
#define GPIO86_MAGICIAN_GSM_RESET_MD (86 | GPIO_OUT) | ||
#define GPIO87_MAGICIAN_GSM_SELECT_MD (87 | GPIO_OUT) | ||
#define GPIO90_MAGICIAN_KEY_CALENDAR_MD (90 | GPIO_OUT) | ||
#define GPIO91_MAGICIAN_KEY_CAMERA_MD (91 | GPIO_OUT) | ||
#define GPIO93_MAGICIAN_KEY_UP_MD (93 | GPIO_IN) | ||
#define GPIO94_MAGICIAN_KEY_DOWN_MD (94 | GPIO_IN) | ||
#define GPIO95_MAGICIAN_KEY_LEFT_MD (95 | GPIO_IN) | ||
#define GPIO96_MAGICIAN_KEY_RIGHT_MD (96 | GPIO_IN) | ||
#define GPIO97_MAGICIAN_KEY_ENTER_MD (97 | GPIO_IN) | ||
#define GPIO98_MAGICIAN_KEY_RECORD_MD (98 | GPIO_IN) | ||
#define GPIO99_MAGICIAN_HEADPHONE_IN_MD (99 | GPIO_IN) | ||
#define GPIO100_MAGICIAN_KEY_VOL_UP_MD (100 | GPIO_IN) | ||
#define GPIO101_MAGICIAN_KEY_VOL_DOWN_MD (101 | GPIO_IN) | ||
#define GPIO102_MAGICIAN_KEY_PHONE_MD (102 | GPIO_IN) | ||
#define GPIO103_MAGICIAN_LED_KP_MD (103 | GPIO_OUT) | ||
#define GPIO104_MAGICIAN_LCD_POWER_1_MD (104 | GPIO_OUT) | ||
#define GPIO105_MAGICIAN_LCD_POWER_2_MD (105 | GPIO_OUT) | ||
#define GPIO106_MAGICIAN_LCD_POWER_3_MD (106 | GPIO_OUT) | ||
#define GPIO107_MAGICIAN_DS1WM_IRQ_MD (107 | GPIO_IN) | ||
#define GPIO108_MAGICIAN_GSM_READY_MD (108 | GPIO_IN) | ||
#define GPIO114_MAGICIAN_UNKNOWN_MD (114 | GPIO_OUT) | ||
#define GPIO115_MAGICIAN_nPEN_IRQ_MD (115 | GPIO_IN) | ||
#define GPIO116_MAGICIAN_nCAM_EN_MD (116 | GPIO_OUT) | ||
#define GPIO119_MAGICIAN_UNKNOWN_MD (119 | GPIO_OUT) | ||
#define GPIO120_MAGICIAN_UNKNOWN_MD (120 | GPIO_OUT) | ||
|
||
#endif /* _MAGICIAN_H_ */ |