Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
89de3820
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
89de3820
编写于
4月 06, 2009
作者:
R
Russell King
提交者:
Russell King
4月 06, 2009
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'devel' of
git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6
上级
3ef48fac
80748fb8
变更
27
隐藏空白更改
内联
并排
Showing
27 changed file
with
849 addition
and
82 deletion
+849
-82
MAINTAINERS
MAINTAINERS
+1
-1
arch/arm/configs/magician_defconfig
arch/arm/configs/magician_defconfig
+5
-1
arch/arm/mach-pxa/Kconfig
arch/arm/mach-pxa/Kconfig
+9
-0
arch/arm/mach-pxa/Makefile
arch/arm/mach-pxa/Makefile
+1
-0
arch/arm/mach-pxa/cm-x2xx.c
arch/arm/mach-pxa/cm-x2xx.c
+1
-1
arch/arm/mach-pxa/colibri-pxa300.c
arch/arm/mach-pxa/colibri-pxa300.c
+6
-5
arch/arm/mach-pxa/colibri-pxa320.c
arch/arm/mach-pxa/colibri-pxa320.c
+5
-5
arch/arm/mach-pxa/colibri-pxa3xx.c
arch/arm/mach-pxa/colibri-pxa3xx.c
+35
-0
arch/arm/mach-pxa/csb701.c
arch/arm/mach-pxa/csb701.c
+5
-0
arch/arm/mach-pxa/e740.c
arch/arm/mach-pxa/e740.c
+2
-0
arch/arm/mach-pxa/e750.c
arch/arm/mach-pxa/e750.c
+2
-0
arch/arm/mach-pxa/e800.c
arch/arm/mach-pxa/e800.c
+2
-0
arch/arm/mach-pxa/em-x270.c
arch/arm/mach-pxa/em-x270.c
+78
-8
arch/arm/mach-pxa/include/mach/colibri.h
arch/arm/mach-pxa/include/mach/colibri.h
+7
-0
arch/arm/mach-pxa/include/mach/magician.h
arch/arm/mach-pxa/include/mach/magician.h
+2
-2
arch/arm/mach-pxa/include/mach/palmld.h
arch/arm/mach-pxa/include/mach/palmld.h
+1
-0
arch/arm/mach-pxa/include/mach/palmt5.h
arch/arm/mach-pxa/include/mach/palmt5.h
+1
-0
arch/arm/mach-pxa/include/mach/palmte2.h
arch/arm/mach-pxa/include/mach/palmte2.h
+68
-0
arch/arm/mach-pxa/include/mach/palmtx.h
arch/arm/mach-pxa/include/mach/palmtx.h
+2
-0
arch/arm/mach-pxa/magician.c
arch/arm/mach-pxa/magician.c
+41
-43
arch/arm/mach-pxa/mioa701.c
arch/arm/mach-pxa/mioa701.c
+2
-4
arch/arm/mach-pxa/palmld.c
arch/arm/mach-pxa/palmld.c
+32
-4
arch/arm/mach-pxa/palmt5.c
arch/arm/mach-pxa/palmt5.c
+31
-4
arch/arm/mach-pxa/palmte2.c
arch/arm/mach-pxa/palmte2.c
+466
-0
arch/arm/mach-pxa/palmtx.c
arch/arm/mach-pxa/palmtx.c
+31
-4
arch/arm/mach-pxa/tosa.c
arch/arm/mach-pxa/tosa.c
+2
-0
arch/arm/mm/mmu.c
arch/arm/mm/mmu.c
+11
-0
未找到文件。
MAINTAINERS
浏览文件 @
89de3820
...
...
@@ -636,7 +636,7 @@ P: Dirk Opfer
M: dirk@opfer-online.de
S: Maintained
ARM/PALMTX,PALMT5,PALMLD SUPPORT
ARM/PALMTX,PALMT5,PALMLD
,PALMTE2
SUPPORT
P: Marek Vasut
M: marek.vasut@gmail.com
W: http://hackndev.com
...
...
arch/arm/configs/magician_defconfig
浏览文件 @
89de3820
...
...
@@ -1183,7 +1183,11 @@ CONFIG_RTC_INTF_DEV=y
CONFIG_RTC_DRV_SA1100=y
# CONFIG_RTC_DRV_PXA is not set
# CONFIG_DMADEVICES is not set
# CONFIG_REGULATOR is not set
CONFIG_REGULATOR=y
# CONFIG_REGULATOR_DEBUG is not set
# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
CONFIG_REGULATOR_BQ24022=y
# CONFIG_UIO is not set
# CONFIG_STAGING is not set
...
...
arch/arm/mach-pxa/Kconfig
浏览文件 @
89de3820
...
...
@@ -343,6 +343,15 @@ config ARCH_PXA_PALM
bool "PXA based Palm PDAs"
select HAVE_PWM
config MACH_PALMTE2
bool "Palm Tungsten|E2"
default y
depends on ARCH_PXA_PALM
select PXA25x
help
Say Y here if you intend to run this kernel on a Palm Tungsten|E2
handheld computer.
config MACH_PALMT5
bool "Palm Tungsten|T5"
default y
...
...
arch/arm/mach-pxa/Makefile
浏览文件 @
89de3820
...
...
@@ -57,6 +57,7 @@ obj-$(CONFIG_MACH_E740) += e740.o
obj-$(CONFIG_MACH_E750)
+=
e750.o
obj-$(CONFIG_MACH_E400)
+=
e400.o
obj-$(CONFIG_MACH_E800)
+=
e800.o
obj-$(CONFIG_MACH_PALMTE2)
+=
palmte2.o
obj-$(CONFIG_MACH_PALMT5)
+=
palmt5.o
obj-$(CONFIG_MACH_PALMTX)
+=
palmtx.o
obj-$(CONFIG_MACH_PALMLD)
+=
palmld.o
...
...
arch/arm/mach-pxa/cm-x2xx.c
浏览文件 @
89de3820
...
...
@@ -121,7 +121,7 @@ static inline void cmx2xx_init_dm9000(void) {}
/* UCB1400 touchscreen controller */
#if defined(CONFIG_TOUCHSCREEN_UCB1400) || defined(CONFIG_TOUCHSCREEN_UCB1400_MODULE)
static
struct
platform_device
cmx2xx_ts_device
=
{
.
name
=
"ucb1400_
ts
"
,
.
name
=
"ucb1400_
core
"
,
.
id
=
-
1
,
};
...
...
arch/arm/mach-pxa/colibri-pxa300.c
浏览文件 @
89de3820
...
...
@@ -15,7 +15,7 @@
#include <linux/kernel.h>
#include <linux/platform_device.h>
#include <linux/gpio.h>
#include <
net/ax88796
.h>
#include <
linux/interrupt
.h>
#include <asm/mach-types.h>
#include <asm/sizes.h>
...
...
@@ -32,12 +32,13 @@
#if defined(CONFIG_AX88796)
#define COLIBRI_ETH_IRQ_GPIO mfp_to_gpio(GPIO26_GPIO)
/*
* Asix AX88796 Ethernet
*/
static
struct
ax_plat_data
colibri_asix_platdata
=
{
.
flags
=
AXFLG_MAC_FROMDEV
,
.
wordlength
=
2
.
flags
=
0
,
/* defined later */
.
wordlength
=
2
,
};
static
struct
resource
colibri_asix_resource
[]
=
{
...
...
@@ -49,7 +50,7 @@ static struct resource colibri_asix_resource[] = {
[
1
]
=
{
.
start
=
gpio_to_irq
(
COLIBRI_ETH_IRQ_GPIO
),
.
end
=
gpio_to_irq
(
COLIBRI_ETH_IRQ_GPIO
),
.
flags
=
IORESOURCE_IRQ
.
flags
=
IORESOURCE_IRQ
|
IRQF_TRIGGER_FALLING
,
}
};
...
...
@@ -70,8 +71,8 @@ static mfp_cfg_t colibri_pxa300_eth_pin_config[] __initdata = {
static
void
__init
colibri_pxa300_init_eth
(
void
)
{
colibri_pxa3xx_init_eth
(
&
colibri_asix_platdata
);
pxa3xx_mfp_config
(
ARRAY_AND_SIZE
(
colibri_pxa300_eth_pin_config
));
set_irq_type
(
gpio_to_irq
(
COLIBRI_ETH_IRQ_GPIO
),
IRQ_TYPE_EDGE_FALLING
);
platform_device_register
(
&
asix_device
);
}
#else
...
...
arch/arm/mach-pxa/colibri-pxa320.c
浏览文件 @
89de3820
...
...
@@ -15,7 +15,7 @@
#include <linux/kernel.h>
#include <linux/platform_device.h>
#include <linux/gpio.h>
#include <
net/ax88796
.h>
#include <
linux/interrupt
.h>
#include <asm/mach-types.h>
#include <asm/sizes.h>
...
...
@@ -38,8 +38,8 @@
* Asix AX88796 Ethernet
*/
static
struct
ax_plat_data
colibri_asix_platdata
=
{
.
flags
=
AXFLG_MAC_FROMDEV
,
.
wordlength
=
2
.
flags
=
0
,
/* defined later */
.
wordlength
=
2
,
};
static
struct
resource
colibri_asix_resource
[]
=
{
...
...
@@ -51,7 +51,7 @@ static struct resource colibri_asix_resource[] = {
[
1
]
=
{
.
start
=
gpio_to_irq
(
COLIBRI_ETH_IRQ_GPIO
),
.
end
=
gpio_to_irq
(
COLIBRI_ETH_IRQ_GPIO
),
.
flags
=
IORESOURCE_IRQ
.
flags
=
IORESOURCE_IRQ
|
IRQF_TRIGGER_FALLING
,
}
};
...
...
@@ -72,8 +72,8 @@ static mfp_cfg_t colibri_pxa320_eth_pin_config[] __initdata = {
static
void
__init
colibri_pxa320_init_eth
(
void
)
{
colibri_pxa3xx_init_eth
(
&
colibri_asix_platdata
);
pxa3xx_mfp_config
(
ARRAY_AND_SIZE
(
colibri_pxa320_eth_pin_config
));
set_irq_type
(
gpio_to_irq
(
COLIBRI_ETH_IRQ_GPIO
),
IRQ_TYPE_EDGE_FALLING
);
platform_device_register
(
&
asix_device
);
}
#else
...
...
arch/arm/mach-pxa/colibri-pxa3xx.c
浏览文件 @
89de3820
...
...
@@ -14,6 +14,7 @@
#include <linux/kernel.h>
#include <linux/platform_device.h>
#include <linux/gpio.h>
#include <linux/etherdevice.h>
#include <asm/mach-types.h>
#include <mach/hardware.h>
#include <asm/sizes.h>
...
...
@@ -28,6 +29,40 @@
#include "generic.h"
#include "devices.h"
#if defined(CONFIG_AX88796)
#define ETHER_ADDR_LEN 6
static
u8
ether_mac_addr
[
ETHER_ADDR_LEN
];
void
__init
colibri_pxa3xx_init_eth
(
struct
ax_plat_data
*
plat_data
)
{
int
i
;
u64
serial
=
((
u64
)
system_serial_high
<<
32
)
|
system_serial_low
;
/*
* If the bootloader passed in a serial boot tag, which contains a
* valid ethernet MAC, pass it to the interface. Toradex ships the
* modules with their own bootloader which provides a valid MAC
* this way.
*/
for
(
i
=
0
;
i
<
ETHER_ADDR_LEN
;
i
++
)
{
ether_mac_addr
[
i
]
=
serial
&
0xff
;
serial
>>=
8
;
}
if
(
is_valid_ether_addr
(
ether_mac_addr
))
{
plat_data
->
flags
|=
AXFLG_MAC_FROMPLATFORM
;
plat_data
->
mac_addr
=
ether_mac_addr
;
printk
(
KERN_INFO
"%s(): taking MAC from serial boot tag
\n
"
,
__func__
);
}
else
{
plat_data
->
flags
|=
AXFLG_MAC_FROMDEV
;
printk
(
KERN_INFO
"%s(): no valid serial boot tag found, "
"taking MAC from device
\n
"
,
__func__
);
}
}
#endif
#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE)
static
int
mmc_detect_pin
;
...
...
arch/arm/mach-pxa/csb701.c
浏览文件 @
89de3820
...
...
@@ -5,6 +5,8 @@
#include <linux/input.h>
#include <linux/leds.h>
#include <asm/mach-types.h>
static
struct
gpio_keys_button
csb701_buttons
[]
=
{
{
.
code
=
0x7
,
...
...
@@ -54,6 +56,9 @@ static struct platform_device *devices[] __initdata = {
static
int
__init
csb701_init
(
void
)
{
if
(
!
machine_is_csb726
())
return
-
ENODEV
;
return
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
}
...
...
arch/arm/mach-pxa/e740.c
浏览文件 @
89de3820
...
...
@@ -29,6 +29,7 @@
#include <mach/udc.h>
#include <mach/irda.h>
#include <mach/irqs.h>
#include <mach/audio.h>
#include "generic.h"
#include "eseries.h"
...
...
@@ -197,6 +198,7 @@ static void __init e740_init(void)
eseries_get_tmio_gpios
();
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
pxa_set_udc_info
(
&
e7xx_udc_mach_info
);
pxa_set_ac97_info
(
NULL
);
e7xx_irda_init
();
pxa_set_ficp_info
(
&
e7xx_ficp_platform_data
);
}
...
...
arch/arm/mach-pxa/e750.c
浏览文件 @
89de3820
...
...
@@ -28,6 +28,7 @@
#include <mach/udc.h>
#include <mach/irda.h>
#include <mach/irqs.h>
#include <mach/audio.h>
#include "generic.h"
#include "eseries.h"
...
...
@@ -198,6 +199,7 @@ static void __init e750_init(void)
eseries_get_tmio_gpios
();
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
pxa_set_udc_info
(
&
e7xx_udc_mach_info
);
pxa_set_ac97_info
(
NULL
);
e7xx_irda_init
();
pxa_set_ficp_info
(
&
e7xx_ficp_platform_data
);
}
...
...
arch/arm/mach-pxa/e800.c
浏览文件 @
89de3820
...
...
@@ -27,6 +27,7 @@
#include <mach/eseries-gpio.h>
#include <mach/udc.h>
#include <mach/irqs.h>
#include <mach/audio.h>
#include "generic.h"
#include "eseries.h"
...
...
@@ -199,6 +200,7 @@ static void __init e800_init(void)
eseries_get_tmio_gpios
();
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
pxa_set_udc_info
(
&
e800_udc_mach_info
);
pxa_set_ac97_info
(
NULL
);
}
MACHINE_START
(
E800
,
"Toshiba e800"
)
...
...
arch/arm/mach-pxa/em-x270.c
浏览文件 @
89de3820
...
...
@@ -25,8 +25,10 @@
#include <linux/regulator/machine.h>
#include <linux/spi/spi.h>
#include <linux/spi/tdo24m.h>
#include <linux/spi/libertas_spi.h>
#include <linux/power_supply.h>
#include <linux/apm-emulation.h>
#include <linux/delay.h>
#include <media/soc_camera.h>
...
...
@@ -62,6 +64,8 @@
#define GPIO93_CAM_RESET (93)
#define GPIO41_ETHIRQ (41)
#define EM_X270_ETHIRQ IRQ_GPIO(GPIO41_ETHIRQ)
#define GPIO115_WLAN_PWEN (115)
#define GPIO19_WLAN_STRAP (19)
static
int
mmc_cd
;
static
int
nand_rb
;
...
...
@@ -159,8 +163,8 @@ static unsigned long common_pin_config[] = {
GPIO57_SSP1_TXD
,
/* SSP2 */
GPIO19_
SSP2_SCLK
,
GPIO14_
SSP2_SFRM
,
GPIO19_
GPIO
,
/* SSP2 clock is used as GPIO for Libertas pin-strap */
GPIO14_
GPIO
,
GPIO89_SSP2_TXD
,
GPIO88_SSP2_RXD
,
...
...
@@ -648,20 +652,86 @@ static struct tdo24m_platform_data em_x270_tdo24m_pdata = {
.
model
=
TDO35S
,
};
static
struct
pxa2xx_spi_master
em_x270_spi_2_info
=
{
.
num_chipselect
=
1
,
.
enable_dma
=
1
,
};
static
struct
pxa2xx_spi_chip
em_x270_libertas_chip
=
{
.
rx_threshold
=
1
,
.
tx_threshold
=
1
,
.
timeout
=
1000
,
};
static
unsigned
long
em_x270_libertas_pin_config
[]
=
{
/* SSP2 */
GPIO19_SSP2_SCLK
,
GPIO14_GPIO
,
GPIO89_SSP2_TXD
,
GPIO88_SSP2_RXD
,
};
static
int
em_x270_libertas_setup
(
struct
spi_device
*
spi
)
{
int
err
=
gpio_request
(
GPIO115_WLAN_PWEN
,
"WLAN PWEN"
);
if
(
err
)
return
err
;
gpio_direction_output
(
GPIO19_WLAN_STRAP
,
1
);
mdelay
(
100
);
pxa2xx_mfp_config
(
ARRAY_AND_SIZE
(
em_x270_libertas_pin_config
));
gpio_direction_output
(
GPIO115_WLAN_PWEN
,
0
);
mdelay
(
100
);
gpio_set_value
(
GPIO115_WLAN_PWEN
,
1
);
mdelay
(
100
);
spi
->
bits_per_word
=
16
;
spi_setup
(
spi
);
return
0
;
}
static
int
em_x270_libertas_teardown
(
struct
spi_device
*
spi
)
{
gpio_set_value
(
GPIO115_WLAN_PWEN
,
0
);
gpio_free
(
GPIO115_WLAN_PWEN
);
return
0
;
}
struct
libertas_spi_platform_data
em_x270_libertas_pdata
=
{
.
use_dummy_writes
=
1
,
.
gpio_cs
=
14
,
.
setup
=
em_x270_libertas_setup
,
.
teardown
=
em_x270_libertas_teardown
,
};
static
struct
spi_board_info
em_x270_spi_devices
[]
__initdata
=
{
{
.
modalias
=
"tdo24m"
,
.
max_speed_hz
=
1000000
,
.
bus_num
=
1
,
.
chip_select
=
0
,
.
controller_data
=
&
em_x270_tdo24m_chip
,
.
platform_data
=
&
em_x270_tdo24m_pdata
,
.
modalias
=
"tdo24m"
,
.
max_speed_hz
=
1000000
,
.
bus_num
=
1
,
.
chip_select
=
0
,
.
controller_data
=
&
em_x270_tdo24m_chip
,
.
platform_data
=
&
em_x270_tdo24m_pdata
,
},
{
.
modalias
=
"libertas_spi"
,
.
max_speed_hz
=
13000000
,
.
bus_num
=
2
,
.
irq
=
IRQ_GPIO
(
116
),
.
chip_select
=
0
,
.
controller_data
=
&
em_x270_libertas_chip
,
.
platform_data
=
&
em_x270_libertas_pdata
,
},
};
static
void
__init
em_x270_init_spi
(
void
)
{
pxa2xx_set_spi_info
(
1
,
&
em_x270_spi_info
);
pxa2xx_set_spi_info
(
2
,
&
em_x270_spi_2_info
);
spi_register_board_info
(
ARRAY_AND_SIZE
(
em_x270_spi_devices
));
}
#else
...
...
arch/arm/mach-pxa/include/mach/colibri.h
浏览文件 @
89de3820
#ifndef _COLIBRI_H_
#define _COLIBRI_H_
#include <net/ax88796.h>
/*
* common settings for all modules
*/
...
...
@@ -16,6 +19,10 @@ extern void colibri_pxa3xx_init_lcd(int bl_pin);
static
inline
void
colibri_pxa3xx_init_lcd
(
int
)
{}
#endif
#if defined(CONFIG_AX88796)
extern
void
colibri_pxa3xx_init_eth
(
struct
ax_plat_data
*
plat_data
);
#endif
/* physical memory regions */
#define COLIBRI_SDRAM_BASE 0xa0000000
/* SDRAM region */
...
...
arch/arm/mach-pxa/include/mach/magician.h
浏览文件 @
89de3820
...
...
@@ -27,7 +27,7 @@
#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 GPIO30_MAGICIAN_
BQ24022_nCHARGE_EN
30
#define GPIO37_MAGICIAN_KEY_HANGUP 37
#define GPIO38_MAGICIAN_KEY_CONTACTS 38
#define GPIO40_MAGICIAN_GSM_OUT2 40
...
...
@@ -98,7 +98,7 @@
#define EGPIO_MAGICIAN_UNKNOWN_WAVEDEV_DLL MAGICIAN_EGPIO(2, 2)
#define EGPIO_MAGICIAN_FLASH_VPP MAGICIAN_EGPIO(2, 3)
#define EGPIO_MAGICIAN_BL_POWER2 MAGICIAN_EGPIO(2, 4)
#define EGPIO_MAGICIAN_
CHARGE_EN
MAGICIAN_EGPIO(2, 5)
#define EGPIO_MAGICIAN_
BQ24022_ISET2
MAGICIAN_EGPIO(2, 5)
#define EGPIO_MAGICIAN_GSM_POWER MAGICIAN_EGPIO(2, 7)
/* input */
...
...
arch/arm/mach-pxa/include/mach/palmld.h
浏览文件 @
89de3820
...
...
@@ -87,6 +87,7 @@
#define PALMLD_IDE_SIZE 0x00100000
#define PALMLD_PHYS_IO_START 0x40000000
#define PALMLD_STR_BASE 0xa0200000
/* BATTERY */
#define PALMLD_BAT_MAX_VOLTAGE 4000
/* 4.00V maximum voltage */
...
...
arch/arm/mach-pxa/include/mach/palmt5.h
浏览文件 @
89de3820
...
...
@@ -59,6 +59,7 @@
/* Various addresses */
#define PALMT5_PHYS_RAM_START 0xa0000000
#define PALMT5_PHYS_IO_START 0x40000000
#define PALMT5_STR_BASE 0xa0200000
/* TOUCHSCREEN */
#define AC97_LINK_FRAME 21
...
...
arch/arm/mach-pxa/include/mach/palmte2.h
0 → 100644
浏览文件 @
89de3820
/*
* GPIOs and interrupts for Palm Tungsten|E2 Handheld Computer
*
* Author:
* Carlos Eduardo Medaglia Dyonisio <cadu@nerdfeliz.com>
*
* 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 _INCLUDE_PALMTE2_H_
#define _INCLUDE_PALMTE2_H_
/** HERE ARE GPIOs **/
/* GPIOs */
#define GPIO_NR_PALMTE2_POWER_DETECT 9
#define GPIO_NR_PALMTE2_HOTSYNC_BUTTON_N 4
#define GPIO_NR_PALMTE2_EARPHONE_DETECT 15
/* SD/MMC */
#define GPIO_NR_PALMTE2_SD_DETECT_N 10
#define GPIO_NR_PALMTE2_SD_POWER 55
#define GPIO_NR_PALMTE2_SD_READONLY 51
/* IRDA - disable GPIO connected to SD pin of tranceiver (TFBS4710?) ? */
#define GPIO_NR_PALMTE2_IR_DISABLE 48
/* USB */
#define GPIO_NR_PALMTE2_USB_DETECT_N 35
#define GPIO_NR_PALMTE2_USB_PULLUP 53
/* LCD/BACKLIGHT */
#define GPIO_NR_PALMTE2_BL_POWER 56
#define GPIO_NR_PALMTE2_LCD_POWER 37
/* KEYS */
#define GPIO_NR_PALMTE2_KEY_NOTES 5
#define GPIO_NR_PALMTE2_KEY_TASKS 7
#define GPIO_NR_PALMTE2_KEY_CALENDAR 11
#define GPIO_NR_PALMTE2_KEY_CONTACTS 13
#define GPIO_NR_PALMTE2_KEY_CENTER 14
#define GPIO_NR_PALMTE2_KEY_LEFT 19
#define GPIO_NR_PALMTE2_KEY_RIGHT 20
#define GPIO_NR_PALMTE2_KEY_DOWN 21
#define GPIO_NR_PALMTE2_KEY_UP 22
/** HERE ARE INIT VALUES **/
/* BACKLIGHT */
#define PALMTE2_MAX_INTENSITY 0xFE
#define PALMTE2_DEFAULT_INTENSITY 0x7E
#define PALMTE2_LIMIT_MASK 0x7F
#define PALMTE2_PRESCALER 0x3F
#define PALMTE2_PERIOD_NS 3500
/* BATTERY */
#define PALMTE2_BAT_MAX_VOLTAGE 4000
/* 4.00v current voltage */
#define PALMTE2_BAT_MIN_VOLTAGE 3550
/* 3.55v critical voltage */
#define PALMTE2_BAT_MAX_CURRENT 0
/* unknokn */
#define PALMTE2_BAT_MIN_CURRENT 0
/* unknown */
#define PALMTE2_BAT_MAX_CHARGE 1
/* unknown */
#define PALMTE2_BAT_MIN_CHARGE 1
/* unknown */
#define PALMTE2_MAX_LIFE_MINS 360
/* on-life in minutes */
#endif
arch/arm/mach-pxa/include/mach/palmtx.h
浏览文件 @
89de3820
...
...
@@ -78,6 +78,8 @@
#define PALMTX_PHYS_RAM_START 0xa0000000
#define PALMTX_PHYS_IO_START 0x40000000
#define PALMTX_STR_BASE 0xa0200000
#define PALMTX_PHYS_FLASH_START PXA_CS0_PHYS
/* ChipSelect 0 */
#define PALMTX_PHYS_NAND_START PXA_CS1_PHYS
/* ChipSelect 1 */
...
...
arch/arm/mach-pxa/magician.c
浏览文件 @
89de3820
...
...
@@ -25,6 +25,8 @@
#include <linux/mtd/physmap.h>
#include <linux/pda_power.h>
#include <linux/pwm_backlight.h>
#include <linux/regulator/bq24022.h>
#include <linux/regulator/machine.h>
#include <linux/usb/gpio_vbus.h>
#include <mach/hardware.h>
...
...
@@ -552,33 +554,7 @@ static struct platform_device gpio_vbus = {
static
int
power_supply_init
(
struct
device
*
dev
)
{
int
ret
;
ret
=
gpio_request
(
EGPIO_MAGICIAN_CABLE_STATE_AC
,
"CABLE_STATE_AC"
);
if
(
ret
)
goto
err_cs_ac
;
ret
=
gpio_request
(
EGPIO_MAGICIAN_CABLE_STATE_USB
,
"CABLE_STATE_USB"
);
if
(
ret
)
goto
err_cs_usb
;
ret
=
gpio_request
(
EGPIO_MAGICIAN_CHARGE_EN
,
"CHARGE_EN"
);
if
(
ret
)
goto
err_chg_en
;
ret
=
gpio_request
(
GPIO30_MAGICIAN_nCHARGE_EN
,
"nCHARGE_EN"
);
if
(
!
ret
)
ret
=
gpio_direction_output
(
GPIO30_MAGICIAN_nCHARGE_EN
,
0
);
if
(
ret
)
goto
err_nchg_en
;
return
0
;
err_nchg_en:
gpio_free
(
EGPIO_MAGICIAN_CHARGE_EN
);
err_chg_en:
gpio_free
(
EGPIO_MAGICIAN_CABLE_STATE_USB
);
err_cs_usb:
gpio_free
(
EGPIO_MAGICIAN_CABLE_STATE_AC
);
err_cs_ac:
return
ret
;
return
gpio_request
(
EGPIO_MAGICIAN_CABLE_STATE_AC
,
"CABLE_STATE_AC"
);
}
static
int
magician_is_ac_online
(
void
)
...
...
@@ -586,22 +562,8 @@ static int magician_is_ac_online(void)
return
gpio_get_value
(
EGPIO_MAGICIAN_CABLE_STATE_AC
);
}
static
int
magician_is_usb_online
(
void
)
{
return
gpio_get_value
(
EGPIO_MAGICIAN_CABLE_STATE_USB
);
}
static
void
magician_set_charge
(
int
flags
)
{
gpio_set_value
(
GPIO30_MAGICIAN_nCHARGE_EN
,
!
flags
);
gpio_set_value
(
EGPIO_MAGICIAN_CHARGE_EN
,
flags
);
}
static
void
power_supply_exit
(
struct
device
*
dev
)
{
gpio_free
(
GPIO30_MAGICIAN_nCHARGE_EN
);
gpio_free
(
EGPIO_MAGICIAN_CHARGE_EN
);
gpio_free
(
EGPIO_MAGICIAN_CABLE_STATE_USB
);
gpio_free
(
EGPIO_MAGICIAN_CABLE_STATE_AC
);
}
...
...
@@ -612,8 +574,6 @@ static char *magician_supplicants[] = {
static
struct
pda_power_pdata
power_supply_info
=
{
.
init
=
power_supply_init
,
.
is_ac_online
=
magician_is_ac_online
,
.
is_usb_online
=
magician_is_usb_online
,
.
set_charge
=
magician_set_charge
,
.
exit
=
power_supply_exit
,
.
supplied_to
=
magician_supplicants
,
.
num_supplicants
=
ARRAY_SIZE
(
magician_supplicants
),
...
...
@@ -646,6 +606,43 @@ static struct platform_device power_supply = {
.
num_resources
=
ARRAY_SIZE
(
power_supply_resources
),
};
/*
* Battery charger
*/
static
struct
regulator_consumer_supply
bq24022_consumers
[]
=
{
{
.
dev
=
&
gpio_vbus
.
dev
,
.
supply
=
"vbus_draw"
,
},
{
.
dev
=
&
power_supply
.
dev
,
.
supply
=
"ac_draw"
,
},
};
static
struct
regulator_init_data
bq24022_init_data
=
{
.
constraints
=
{
.
max_uA
=
500000
,
.
valid_ops_mask
=
REGULATOR_CHANGE_CURRENT
,
},
.
num_consumer_supplies
=
ARRAY_SIZE
(
bq24022_consumers
),
.
consumer_supplies
=
bq24022_consumers
,
};
static
struct
bq24022_mach_info
bq24022_info
=
{
.
gpio_nce
=
GPIO30_MAGICIAN_BQ24022_nCHARGE_EN
,
.
gpio_iset2
=
EGPIO_MAGICIAN_BQ24022_ISET2
,
.
init_data
=
&
bq24022_init_data
,
};
static
struct
platform_device
bq24022
=
{
.
name
=
"bq24022"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
bq24022_info
,
},
};
/*
* MMC/SD
...
...
@@ -756,6 +753,7 @@ static struct platform_device *devices[] __initdata = {
&
egpio
,
&
backlight
,
&
pasic3
,
&
bq24022
,
&
gpio_vbus
,
&
power_supply
,
&
strataflash
,
...
...
arch/arm/mach-pxa/mioa701.c
浏览文件 @
89de3820
...
...
@@ -50,6 +50,7 @@
#include <mach/pxa27x-udc.h>
#include <mach/i2c.h>
#include <mach/camera.h>
#include <mach/audio.h>
#include <media/soc_camera.h>
#include <mach/mioa701.h>
...
...
@@ -763,8 +764,6 @@ MIO_PARENT_DEV(mioa701_backlight, "pwm-backlight", &pxa27x_device_pwm0.dev,
&
mioa701_backlight_data
);
MIO_SIMPLE_DEV
(
mioa701_led
,
"leds-gpio"
,
&
gpio_led_info
)
MIO_SIMPLE_DEV
(
pxa2xx_pcm
,
"pxa2xx-pcm"
,
NULL
)
MIO_SIMPLE_DEV
(
pxa2xx_ac97
,
"pxa2xx-ac97"
,
NULL
)
MIO_PARENT_DEV
(
mio_wm9713_codec
,
"wm9713-codec"
,
&
pxa2xx_ac97
.
dev
,
NULL
)
MIO_SIMPLE_DEV
(
mioa701_sound
,
"mioa701-wm9713"
,
NULL
)
MIO_SIMPLE_DEV
(
mioa701_board
,
"mioa701-board"
,
NULL
)
MIO_SIMPLE_DEV
(
gpio_vbus
,
"gpio-vbus"
,
&
gpio_vbus_data
);
...
...
@@ -774,8 +773,6 @@ static struct platform_device *devices[] __initdata = {
&
mioa701_backlight
,
&
mioa701_led
,
&
pxa2xx_pcm
,
&
pxa2xx_ac97
,
&
mio_wm9713_codec
,
&
mioa701_sound
,
&
power_dev
,
&
strataflash
,
...
...
@@ -818,6 +815,7 @@ static void __init mioa701_machine_init(void)
pxa_set_keypad_info
(
&
mioa701_keypad_info
);
wm97xx_bat_set_pdata
(
&
mioa701_battery_data
);
pxa_set_udc_info
(
&
mioa701_udc_info
);
pxa_set_ac97_info
(
NULL
);
pm_power_off
=
mioa701_poweroff
;
arm_pm_restart
=
mioa701_restart
;
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
...
...
arch/arm/mach-pxa/palmld.c
浏览文件 @
89de3820
...
...
@@ -24,6 +24,7 @@
#include <linux/gpio.h>
#include <linux/wm97xx_batt.h>
#include <linux/power_supply.h>
#include <linux/sysdev.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
...
...
@@ -68,10 +69,10 @@ static unsigned long palmld_pin_config[] __initdata = {
GPIO47_FICP_TXD
,
/* MATRIX KEYPAD */
GPIO100_KP_MKIN_0
,
GPIO101_KP_MKIN_1
,
GPIO102_KP_MKIN_2
,
GPIO97_KP_MKIN_3
,
GPIO100_KP_MKIN_0
|
WAKEUP_ON_LEVEL_HIGH
,
GPIO101_KP_MKIN_1
|
WAKEUP_ON_LEVEL_HIGH
,
GPIO102_KP_MKIN_2
|
WAKEUP_ON_LEVEL_HIGH
,
GPIO97_KP_MKIN_3
|
WAKEUP_ON_LEVEL_HIGH
,
GPIO103_KP_MKOUT_0
,
GPIO104_KP_MKOUT_1
,
GPIO105_KP_MKOUT_2
,
...
...
@@ -506,6 +507,33 @@ static struct pxafb_mach_info palmld_lcd_screen = {
.
lcd_conn
=
LCD_COLOR_TFT_16BPP
|
LCD_PCLK_EDGE_FALL
,
};
/******************************************************************************
* Power management - standby
******************************************************************************/
#ifdef CONFIG_PM
static
u32
*
addr
__initdata
;
static
u32
resume
[
3
]
__initdata
=
{
0xe3a00101
,
/* mov r0, #0x40000000 */
0xe380060f
,
/* orr r0, r0, #0x00f00000 */
0xe590f008
,
/* ldr pc, [r0, #0x08] */
};
static
int
__init
palmld_pm_init
(
void
)
{
int
i
;
/* this is where the bootloader jumps */
addr
=
phys_to_virt
(
PALMLD_STR_BASE
);
for
(
i
=
0
;
i
<
3
;
i
++
)
addr
[
i
]
=
resume
[
i
];
return
0
;
}
device_initcall
(
palmld_pm_init
);
#endif
/******************************************************************************
* Machine init
******************************************************************************/
...
...
arch/arm/mach-pxa/palmt5.c
浏览文件 @
89de3820
...
...
@@ -75,10 +75,10 @@ static unsigned long palmt5_pin_config[] __initdata = {
GPIO95_GPIO
,
/* usb power */
/* MATRIX KEYPAD */
GPIO100_KP_MKIN_0
,
GPIO101_KP_MKIN_1
,
GPIO102_KP_MKIN_2
,
GPIO97_KP_MKIN_3
,
GPIO100_KP_MKIN_0
|
WAKEUP_ON_LEVEL_HIGH
,
GPIO101_KP_MKIN_1
|
WAKEUP_ON_LEVEL_HIGH
,
GPIO102_KP_MKIN_2
|
WAKEUP_ON_LEVEL_HIGH
,
GPIO97_KP_MKIN_3
|
WAKEUP_ON_LEVEL_HIGH
,
GPIO103_KP_MKOUT_0
,
GPIO104_KP_MKOUT_1
,
GPIO105_KP_MKOUT_2
,
...
...
@@ -449,6 +449,33 @@ static struct pxafb_mach_info palmt5_lcd_screen = {
.
lcd_conn
=
LCD_COLOR_TFT_16BPP
|
LCD_PCLK_EDGE_FALL
,
};
/******************************************************************************
* Power management - standby
******************************************************************************/
#ifdef CONFIG_PM
static
u32
*
addr
__initdata
;
static
u32
resume
[
3
]
__initdata
=
{
0xe3a00101
,
/* mov r0, #0x40000000 */
0xe380060f
,
/* orr r0, r0, #0x00f00000 */
0xe590f008
,
/* ldr pc, [r0, #0x08] */
};
static
int
__init
palmt5_pm_init
(
void
)
{
int
i
;
/* this is where the bootloader jumps */
addr
=
phys_to_virt
(
PALMT5_STR_BASE
);
for
(
i
=
0
;
i
<
3
;
i
++
)
addr
[
i
]
=
resume
[
i
];
return
0
;
}
device_initcall
(
palmt5_pm_init
);
#endif
/******************************************************************************
* Machine init
******************************************************************************/
...
...
arch/arm/mach-pxa/palmte2.c
0 → 100644
浏览文件 @
89de3820
/*
* Hardware definitions for Palm Tungsten|E2
*
* Author:
* Carlos Eduardo Medaglia Dyonisio <cadu@nerdfeliz.com>
*
* Rewrite for mainline:
* Marek Vasut <marek.vasut@gmail.com>
*
* 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.
*
* (find more info at www.hackndev.com)
*
*/
#include <linux/platform_device.h>
#include <linux/delay.h>
#include <linux/irq.h>
#include <linux/gpio_keys.h>
#include <linux/input.h>
#include <linux/pda_power.h>
#include <linux/pwm_backlight.h>
#include <linux/gpio.h>
#include <linux/wm97xx_batt.h>
#include <linux/power_supply.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <mach/audio.h>
#include <mach/palmte2.h>
#include <mach/mmc.h>
#include <mach/pxafb.h>
#include <mach/mfp-pxa25x.h>
#include <mach/irda.h>
#include <mach/udc.h>
#include "generic.h"
#include "devices.h"
/******************************************************************************
* Pin configuration
******************************************************************************/
static
unsigned
long
palmte2_pin_config
[]
__initdata
=
{
/* MMC */
GPIO6_MMC_CLK
,
GPIO8_MMC_CS0
,
GPIO10_GPIO
,
/* SD detect */
GPIO55_GPIO
,
/* SD power */
GPIO51_GPIO
,
/* SD r/o switch */
/* AC97 */
GPIO28_AC97_BITCLK
,
GPIO29_AC97_SDATA_IN_0
,
GPIO30_AC97_SDATA_OUT
,
GPIO31_AC97_SYNC
,
/* PWM */
GPIO16_PWM0_OUT
,
/* USB */
GPIO15_GPIO
,
/* usb detect */
GPIO53_GPIO
,
/* usb power */
/* IrDA */
GPIO48_GPIO
,
/* ir disable */
GPIO46_FICP_RXD
,
GPIO47_FICP_TXD
,
/* LCD */
GPIO58_LCD_LDD_0
,
GPIO59_LCD_LDD_1
,
GPIO60_LCD_LDD_2
,
GPIO61_LCD_LDD_3
,
GPIO62_LCD_LDD_4
,
GPIO63_LCD_LDD_5
,
GPIO64_LCD_LDD_6
,
GPIO65_LCD_LDD_7
,
GPIO66_LCD_LDD_8
,
GPIO67_LCD_LDD_9
,
GPIO68_LCD_LDD_10
,
GPIO69_LCD_LDD_11
,
GPIO70_LCD_LDD_12
,
GPIO71_LCD_LDD_13
,
GPIO72_LCD_LDD_14
,
GPIO73_LCD_LDD_15
,
GPIO74_LCD_FCLK
,
GPIO75_LCD_LCLK
,
GPIO76_LCD_PCLK
,
GPIO77_LCD_BIAS
,
/* GPIO KEYS */
GPIO5_GPIO
,
/* notes */
GPIO7_GPIO
,
/* tasks */
GPIO11_GPIO
,
/* calendar */
GPIO13_GPIO
,
/* contacts */
GPIO14_GPIO
,
/* center */
GPIO19_GPIO
,
/* left */
GPIO20_GPIO
,
/* right */
GPIO21_GPIO
,
/* down */
GPIO22_GPIO
,
/* up */
/* MISC */
GPIO1_RST
,
/* reset */
GPIO4_GPIO
,
/* Hotsync button */
GPIO9_GPIO
,
/* power detect */
GPIO37_GPIO
,
/* LCD power */
GPIO56_GPIO
,
/* Backlight power */
};
/******************************************************************************
* SD/MMC card controller
******************************************************************************/
static
int
palmte2_mci_init
(
struct
device
*
dev
,
irq_handler_t
palmte2_detect_int
,
void
*
data
)
{
int
err
=
0
;
/* Setup an interrupt for detecting card insert/remove events */
err
=
gpio_request
(
GPIO_NR_PALMTE2_SD_DETECT_N
,
"SD IRQ"
);
if
(
err
)
goto
err
;
err
=
gpio_direction_input
(
GPIO_NR_PALMTE2_SD_DETECT_N
);
if
(
err
)
goto
err2
;
err
=
request_irq
(
gpio_to_irq
(
GPIO_NR_PALMTE2_SD_DETECT_N
),
palmte2_detect_int
,
IRQF_DISABLED
|
IRQF_SAMPLE_RANDOM
|
IRQF_TRIGGER_FALLING
|
IRQF_TRIGGER_RISING
,
"SD/MMC card detect"
,
data
);
if
(
err
)
{
printk
(
KERN_ERR
"%s: cannot request SD/MMC card detect IRQ
\n
"
,
__func__
);
goto
err2
;
}
err
=
gpio_request
(
GPIO_NR_PALMTE2_SD_POWER
,
"SD_POWER"
);
if
(
err
)
goto
err3
;
err
=
gpio_direction_output
(
GPIO_NR_PALMTE2_SD_POWER
,
0
);
if
(
err
)
goto
err4
;
err
=
gpio_request
(
GPIO_NR_PALMTE2_SD_READONLY
,
"SD_READONLY"
);
if
(
err
)
goto
err4
;
err
=
gpio_direction_input
(
GPIO_NR_PALMTE2_SD_READONLY
);
if
(
err
)
goto
err5
;
printk
(
KERN_DEBUG
"%s: irq registered
\n
"
,
__func__
);
return
0
;
err5:
gpio_free
(
GPIO_NR_PALMTE2_SD_READONLY
);
err4:
gpio_free
(
GPIO_NR_PALMTE2_SD_POWER
);
err3:
free_irq
(
gpio_to_irq
(
GPIO_NR_PALMTE2_SD_DETECT_N
),
data
);
err2:
gpio_free
(
GPIO_NR_PALMTE2_SD_DETECT_N
);
err:
return
err
;
}
static
void
palmte2_mci_exit
(
struct
device
*
dev
,
void
*
data
)
{
gpio_free
(
GPIO_NR_PALMTE2_SD_READONLY
);
gpio_free
(
GPIO_NR_PALMTE2_SD_POWER
);
free_irq
(
gpio_to_irq
(
GPIO_NR_PALMTE2_SD_DETECT_N
),
data
);
gpio_free
(
GPIO_NR_PALMTE2_SD_DETECT_N
);
}
static
void
palmte2_mci_power
(
struct
device
*
dev
,
unsigned
int
vdd
)
{
struct
pxamci_platform_data
*
p_d
=
dev
->
platform_data
;
gpio_set_value
(
GPIO_NR_PALMTE2_SD_POWER
,
p_d
->
ocr_mask
&
(
1
<<
vdd
));
}
static
int
palmte2_mci_get_ro
(
struct
device
*
dev
)
{
return
gpio_get_value
(
GPIO_NR_PALMTE2_SD_READONLY
);
}
static
struct
pxamci_platform_data
palmte2_mci_platform_data
=
{
.
ocr_mask
=
MMC_VDD_32_33
|
MMC_VDD_33_34
,
.
setpower
=
palmte2_mci_power
,
.
get_ro
=
palmte2_mci_get_ro
,
.
init
=
palmte2_mci_init
,
.
exit
=
palmte2_mci_exit
,
};
/******************************************************************************
* GPIO keys
******************************************************************************/
static
struct
gpio_keys_button
palmte2_pxa_buttons
[]
=
{
{
KEY_F1
,
GPIO_NR_PALMTE2_KEY_CONTACTS
,
1
,
"Contacts"
},
{
KEY_F2
,
GPIO_NR_PALMTE2_KEY_CALENDAR
,
1
,
"Calendar"
},
{
KEY_F3
,
GPIO_NR_PALMTE2_KEY_TASKS
,
1
,
"Tasks"
},
{
KEY_F4
,
GPIO_NR_PALMTE2_KEY_NOTES
,
1
,
"Notes"
},
{
KEY_ENTER
,
GPIO_NR_PALMTE2_KEY_CENTER
,
1
,
"Center"
},
{
KEY_LEFT
,
GPIO_NR_PALMTE2_KEY_LEFT
,
1
,
"Left"
},
{
KEY_RIGHT
,
GPIO_NR_PALMTE2_KEY_RIGHT
,
1
,
"Right"
},
{
KEY_DOWN
,
GPIO_NR_PALMTE2_KEY_DOWN
,
1
,
"Down"
},
{
KEY_UP
,
GPIO_NR_PALMTE2_KEY_UP
,
1
,
"Up"
},
};
static
struct
gpio_keys_platform_data
palmte2_pxa_keys_data
=
{
.
buttons
=
palmte2_pxa_buttons
,
.
nbuttons
=
ARRAY_SIZE
(
palmte2_pxa_buttons
),
};
static
struct
platform_device
palmte2_pxa_keys
=
{
.
name
=
"gpio-keys"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
palmte2_pxa_keys_data
,
},
};
/******************************************************************************
* Backlight
******************************************************************************/
static
int
palmte2_backlight_init
(
struct
device
*
dev
)
{
int
ret
;
ret
=
gpio_request
(
GPIO_NR_PALMTE2_BL_POWER
,
"BL POWER"
);
if
(
ret
)
goto
err
;
ret
=
gpio_direction_output
(
GPIO_NR_PALMTE2_BL_POWER
,
0
);
if
(
ret
)
goto
err2
;
ret
=
gpio_request
(
GPIO_NR_PALMTE2_LCD_POWER
,
"LCD POWER"
);
if
(
ret
)
goto
err2
;
ret
=
gpio_direction_output
(
GPIO_NR_PALMTE2_LCD_POWER
,
0
);
if
(
ret
)
goto
err3
;
return
0
;
err3:
gpio_free
(
GPIO_NR_PALMTE2_LCD_POWER
);
err2:
gpio_free
(
GPIO_NR_PALMTE2_BL_POWER
);
err:
return
ret
;
}
static
int
palmte2_backlight_notify
(
int
brightness
)
{
gpio_set_value
(
GPIO_NR_PALMTE2_BL_POWER
,
brightness
);
gpio_set_value
(
GPIO_NR_PALMTE2_LCD_POWER
,
brightness
);
return
brightness
;
}
static
void
palmte2_backlight_exit
(
struct
device
*
dev
)
{
gpio_free
(
GPIO_NR_PALMTE2_BL_POWER
);
gpio_free
(
GPIO_NR_PALMTE2_LCD_POWER
);
}
static
struct
platform_pwm_backlight_data
palmte2_backlight_data
=
{
.
pwm_id
=
0
,
.
max_brightness
=
PALMTE2_MAX_INTENSITY
,
.
dft_brightness
=
PALMTE2_MAX_INTENSITY
,
.
pwm_period_ns
=
PALMTE2_PERIOD_NS
,
.
init
=
palmte2_backlight_init
,
.
notify
=
palmte2_backlight_notify
,
.
exit
=
palmte2_backlight_exit
,
};
static
struct
platform_device
palmte2_backlight
=
{
.
name
=
"pwm-backlight"
,
.
dev
=
{
.
parent
=
&
pxa25x_device_pwm0
.
dev
,
.
platform_data
=
&
palmte2_backlight_data
,
},
};
/******************************************************************************
* IrDA
******************************************************************************/
static
int
palmte2_irda_startup
(
struct
device
*
dev
)
{
int
err
;
err
=
gpio_request
(
GPIO_NR_PALMTE2_IR_DISABLE
,
"IR DISABLE"
);
if
(
err
)
goto
err
;
err
=
gpio_direction_output
(
GPIO_NR_PALMTE2_IR_DISABLE
,
1
);
if
(
err
)
gpio_free
(
GPIO_NR_PALMTE2_IR_DISABLE
);
err:
return
err
;
}
static
void
palmte2_irda_shutdown
(
struct
device
*
dev
)
{
gpio_free
(
GPIO_NR_PALMTE2_IR_DISABLE
);
}
static
void
palmte2_irda_transceiver_mode
(
struct
device
*
dev
,
int
mode
)
{
gpio_set_value
(
GPIO_NR_PALMTE2_IR_DISABLE
,
mode
&
IR_OFF
);
pxa2xx_transceiver_mode
(
dev
,
mode
);
}
static
struct
pxaficp_platform_data
palmte2_ficp_platform_data
=
{
.
startup
=
palmte2_irda_startup
,
.
shutdown
=
palmte2_irda_shutdown
,
.
transceiver_cap
=
IR_SIRMODE
|
IR_FIRMODE
|
IR_OFF
,
.
transceiver_mode
=
palmte2_irda_transceiver_mode
,
};
/******************************************************************************
* UDC
******************************************************************************/
static
struct
pxa2xx_udc_mach_info
palmte2_udc_info
__initdata
=
{
.
gpio_vbus
=
GPIO_NR_PALMTE2_USB_DETECT_N
,
.
gpio_vbus_inverted
=
1
,
.
gpio_pullup
=
GPIO_NR_PALMTE2_USB_PULLUP
,
.
gpio_pullup_inverted
=
0
,
};
/******************************************************************************
* Power supply
******************************************************************************/
static
int
power_supply_init
(
struct
device
*
dev
)
{
int
ret
;
ret
=
gpio_request
(
GPIO_NR_PALMTE2_POWER_DETECT
,
"CABLE_STATE_AC"
);
if
(
ret
)
goto
err1
;
ret
=
gpio_direction_input
(
GPIO_NR_PALMTE2_POWER_DETECT
);
if
(
ret
)
goto
err2
;
return
0
;
err2:
gpio_free
(
GPIO_NR_PALMTE2_POWER_DETECT
);
err1:
return
ret
;
}
static
int
palmte2_is_ac_online
(
void
)
{
return
gpio_get_value
(
GPIO_NR_PALMTE2_POWER_DETECT
);
}
static
void
power_supply_exit
(
struct
device
*
dev
)
{
gpio_free
(
GPIO_NR_PALMTE2_POWER_DETECT
);
}
static
char
*
palmte2_supplicants
[]
=
{
"main-battery"
,
};
static
struct
pda_power_pdata
power_supply_info
=
{
.
init
=
power_supply_init
,
.
is_ac_online
=
palmte2_is_ac_online
,
.
exit
=
power_supply_exit
,
.
supplied_to
=
palmte2_supplicants
,
.
num_supplicants
=
ARRAY_SIZE
(
palmte2_supplicants
),
};
static
struct
platform_device
power_supply
=
{
.
name
=
"pda-power"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
power_supply_info
,
},
};
/******************************************************************************
* WM97xx battery
******************************************************************************/
static
struct
wm97xx_batt_info
wm97xx_batt_pdata
=
{
.
batt_aux
=
WM97XX_AUX_ID3
,
.
temp_aux
=
WM97XX_AUX_ID2
,
.
charge_gpio
=
-
1
,
.
max_voltage
=
PALMTE2_BAT_MAX_VOLTAGE
,
.
min_voltage
=
PALMTE2_BAT_MIN_VOLTAGE
,
.
batt_mult
=
1000
,
.
batt_div
=
414
,
.
temp_mult
=
1
,
.
temp_div
=
1
,
.
batt_tech
=
POWER_SUPPLY_TECHNOLOGY_LIPO
,
.
batt_name
=
"main-batt"
,
};
/******************************************************************************
* Framebuffer
******************************************************************************/
static
struct
pxafb_mode_info
palmte2_lcd_modes
[]
=
{
{
.
pixclock
=
77757
,
.
xres
=
320
,
.
yres
=
320
,
.
bpp
=
16
,
.
left_margin
=
28
,
.
right_margin
=
7
,
.
upper_margin
=
7
,
.
lower_margin
=
5
,
.
hsync_len
=
4
,
.
vsync_len
=
1
,
},
};
static
struct
pxafb_mach_info
palmte2_lcd_screen
=
{
.
modes
=
palmte2_lcd_modes
,
.
num_modes
=
ARRAY_SIZE
(
palmte2_lcd_modes
),
.
lcd_conn
=
LCD_COLOR_TFT_16BPP
|
LCD_PCLK_EDGE_FALL
,
};
/******************************************************************************
* Machine init
******************************************************************************/
static
struct
platform_device
*
devices
[]
__initdata
=
{
#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
&
palmte2_pxa_keys
,
#endif
&
palmte2_backlight
,
&
power_supply
,
};
/* setup udc GPIOs initial state */
static
void
__init
palmte2_udc_init
(
void
)
{
if
(
!
gpio_request
(
GPIO_NR_PALMTE2_USB_PULLUP
,
"UDC Vbus"
))
{
gpio_direction_output
(
GPIO_NR_PALMTE2_USB_PULLUP
,
1
);
gpio_free
(
GPIO_NR_PALMTE2_USB_PULLUP
);
}
}
static
void
__init
palmte2_init
(
void
)
{
pxa2xx_mfp_config
(
ARRAY_AND_SIZE
(
palmte2_pin_config
));
set_pxa_fb_info
(
&
palmte2_lcd_screen
);
pxa_set_mci_info
(
&
palmte2_mci_platform_data
);
palmte2_udc_init
();
pxa_set_udc_info
(
&
palmte2_udc_info
);
pxa_set_ac97_info
(
NULL
);
pxa_set_ficp_info
(
&
palmte2_ficp_platform_data
);
wm97xx_bat_set_pdata
(
&
wm97xx_batt_pdata
);
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
}
MACHINE_START
(
PALMTE2
,
"Palm Tungsten|E2"
)
.
phys_io
=
0x40000000
,
.
io_pg_offst
=
(
io_p2v
(
0x40000000
)
>>
18
)
&
0xfffc
,
.
boot_params
=
0xa0000100
,
.
map_io
=
pxa_map_io
,
.
init_irq
=
pxa25x_init_irq
,
.
timer
=
&
pxa_timer
,
.
init_machine
=
palmte2_init
MACHINE_END
arch/arm/mach-pxa/palmtx.c
浏览文件 @
89de3820
...
...
@@ -93,10 +93,10 @@ static unsigned long palmtx_pin_config[] __initdata = {
GPIO116_GPIO
,
/* wifi ready */
/* MATRIX KEYPAD */
GPIO100_KP_MKIN_0
,
GPIO101_KP_MKIN_1
,
GPIO102_KP_MKIN_2
,
GPIO97_KP_MKIN_3
,
GPIO100_KP_MKIN_0
|
WAKEUP_ON_LEVEL_HIGH
,
GPIO101_KP_MKIN_1
|
WAKEUP_ON_LEVEL_HIGH
,
GPIO102_KP_MKIN_2
|
WAKEUP_ON_LEVEL_HIGH
,
GPIO97_KP_MKIN_3
|
WAKEUP_ON_LEVEL_HIGH
,
GPIO103_KP_MKOUT_0
,
GPIO104_KP_MKOUT_1
,
GPIO105_KP_MKOUT_2
,
...
...
@@ -458,6 +458,33 @@ static struct pxafb_mach_info palmtx_lcd_screen = {
.
lcd_conn
=
LCD_COLOR_TFT_16BPP
|
LCD_PCLK_EDGE_FALL
,
};
/******************************************************************************
* Power management - standby
******************************************************************************/
#ifdef CONFIG_PM
static
u32
*
addr
__initdata
;
static
u32
resume
[
3
]
__initdata
=
{
0xe3a00101
,
/* mov r0, #0x40000000 */
0xe380060f
,
/* orr r0, r0, #0x00f00000 */
0xe590f008
,
/* ldr pc, [r0, #0x08] */
};
static
int
__init
palmtx_pm_init
(
void
)
{
int
i
;
/* this is where the bootloader jumps */
addr
=
phys_to_virt
(
PALMTX_STR_BASE
);
for
(
i
=
0
;
i
<
3
;
i
++
)
addr
[
i
]
=
resume
[
i
];
return
0
;
}
device_initcall
(
palmtx_pm_init
);
#endif
/******************************************************************************
* Machine init
******************************************************************************/
...
...
arch/arm/mach-pxa/tosa.c
浏览文件 @
89de3820
...
...
@@ -45,6 +45,7 @@
#include <mach/udc.h>
#include <mach/tosa_bt.h>
#include <mach/pxa2xx_spi.h>
#include <mach/audio.h>
#include <asm/mach/arch.h>
#include <mach/tosa.h>
...
...
@@ -914,6 +915,7 @@ static void __init tosa_init(void)
pxa_set_udc_info
(
&
udc_info
);
pxa_set_ficp_info
(
&
tosa_ficp_platform_data
);
pxa_set_i2c_info
(
NULL
);
pxa_set_ac97_info
(
NULL
);
platform_scoop_config
=
&
tosa_pcmcia_config
;
pxa2xx_set_spi_info
(
2
,
&
pxa_ssp_master_info
);
...
...
arch/arm/mm/mmu.c
浏览文件 @
89de3820
...
...
@@ -828,6 +828,17 @@ void __init reserve_node_zero(pg_data_t *pgdat)
BOOTMEM_DEFAULT
);
}
if
(
machine_is_palmld
()
||
machine_is_palmtx
())
{
reserve_bootmem_node
(
pgdat
,
0xa0000000
,
0x1000
,
BOOTMEM_EXCLUSIVE
);
reserve_bootmem_node
(
pgdat
,
0xa0200000
,
0x1000
,
BOOTMEM_EXCLUSIVE
);
}
if
(
machine_is_palmt5
())
reserve_bootmem_node
(
pgdat
,
0xa0200000
,
0x1000
,
BOOTMEM_EXCLUSIVE
);
#ifdef CONFIG_SA1111
/*
* Because of the SA1111 DMA bug, we want to preserve our
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录