Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
31620e21
Commit
31620e21
authored
Jul 13, 2010
by
Marek Vasut
Committed by
Eric Miao
Aug 05, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[ARM] pxa/palm: Flip Palm LD,TX,T5,Z72 to Palm27x
Signed-off-by:
Marek Vasut
<
marek.vasut@gmail.com
>
parent
95045947
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
214 additions
and
1280 deletions
+214
-1280
arch/arm/mach-pxa/Kconfig
arch/arm/mach-pxa/Kconfig
+4
-0
arch/arm/mach-pxa/palmld.c
arch/arm/mach-pxa/palmld.c
+53
-238
arch/arm/mach-pxa/palmt5.c
arch/arm/mach-pxa/palmt5.c
+30
-252
arch/arm/mach-pxa/palmtreo.c
arch/arm/mach-pxa/palmtreo.c
+55
-298
arch/arm/mach-pxa/palmtx.c
arch/arm/mach-pxa/palmtx.c
+46
-252
arch/arm/mach-pxa/palmz72.c
arch/arm/mach-pxa/palmz72.c
+26
-240
No files found.
arch/arm/mach-pxa/Kconfig
View file @
31620e21
...
...
@@ -374,6 +374,7 @@ config MACH_PALMT5
depends on ARCH_PXA_PALM
select PXA27x
select IWMMXT
select MACH_PALM27X
help
Say Y here if you intend to run this kernel on a Palm Tungsten|T5
handheld computer.
...
...
@@ -384,6 +385,7 @@ config MACH_PALMTX
depends on ARCH_PXA_PALM
select PXA27x
select IWMMXT
select MACH_PALM27X
help
Say Y here if you intend to run this kernel on a Palm T|X
handheld computer.
...
...
@@ -394,6 +396,7 @@ config MACH_PALMZ72
depends on ARCH_PXA_PALM
select PXA27x
select IWMMXT
select MACH_PALM27X
help
Say Y here if you intend to run this kernel on Palm Zire 72
handheld computer.
...
...
@@ -404,6 +407,7 @@ config MACH_PALMLD
depends on ARCH_PXA_PALM
select PXA27x
select IWMMXT
select MACH_PALM27X
help
Say Y here if you intend to run this kernel on a Palm LifeDrive
handheld computer.
...
...
arch/arm/mach-pxa/palmld.c
View file @
31620e21
...
...
@@ -41,6 +41,7 @@
#include <mach/irda.h>
#include <mach/pxa27x_keypad.h>
#include <mach/palmasoc.h>
#include <mach/palm27x.h>
#include "generic.h"
#include "devices.h"
...
...
@@ -127,6 +128,7 @@ static unsigned long palmld_pin_config[] __initdata = {
/******************************************************************************
* NOR Flash
******************************************************************************/
#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
static
struct
mtd_partition
palmld_partitions
[]
=
{
{
.
name
=
"Flash"
,
...
...
@@ -160,20 +162,18 @@ static struct platform_device palmld_flash = {
},
};
/******************************************************************************
* SD/MMC card controller
******************************************************************************/
static
struct
pxamci_platform_data
palmld_mci_platform_data
=
{
.
ocr_mask
=
MMC_VDD_32_33
|
MMC_VDD_33_34
,
.
gpio_card_detect
=
GPIO_NR_PALMLD_SD_DETECT_N
,
.
gpio_card_ro
=
GPIO_NR_PALMLD_SD_READONLY
,
.
gpio_power
=
GPIO_NR_PALMLD_SD_POWER
,
.
detect_delay_ms
=
200
,
};
static
void
__init
palmld_nor_init
(
void
)
{
platform_device_register
(
&
palmld_flash
);
}
#else
static
inline
void
palmld_nor_init
(
void
)
{}
#endif
/******************************************************************************
* GPIO keyboard
******************************************************************************/
#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE)
static
unsigned
int
palmld_matrix_keys
[]
=
{
KEY
(
0
,
1
,
KEY_F2
),
KEY
(
0
,
2
,
KEY_UP
),
...
...
@@ -200,9 +200,18 @@ static struct pxa27x_keypad_platform_data palmld_keypad_platform_data = {
.
debounce_interval
=
30
,
};
static
void
__init
palmld_kpc_init
(
void
)
{
pxa_set_keypad_info
(
&
palmld_keypad_platform_data
);
}
#else
static
inline
void
palmld_kpc_init
(
void
)
{}
#endif
/******************************************************************************
* GPIO keys
******************************************************************************/
#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
static
struct
gpio_keys_button
palmld_pxa_buttons
[]
=
{
{
KEY_F8
,
GPIO_NR_PALMLD_HOTSYNC_BUTTON_N
,
1
,
"HotSync Button"
},
{
KEY_F9
,
GPIO_NR_PALMLD_LOCK_SWITCH
,
0
,
"Lock Switch"
},
...
...
@@ -222,77 +231,18 @@ static struct platform_device palmld_pxa_keys = {
},
};
/******************************************************************************
* Backlight
******************************************************************************/
static
int
palmld_backlight_init
(
struct
device
*
dev
)
{
int
ret
;
ret
=
gpio_request
(
GPIO_NR_PALMLD_BL_POWER
,
"BL POWER"
);
if
(
ret
)
goto
err
;
ret
=
gpio_direction_output
(
GPIO_NR_PALMLD_BL_POWER
,
0
);
if
(
ret
)
goto
err2
;
ret
=
gpio_request
(
GPIO_NR_PALMLD_LCD_POWER
,
"LCD POWER"
);
if
(
ret
)
goto
err2
;
ret
=
gpio_direction_output
(
GPIO_NR_PALMLD_LCD_POWER
,
0
);
if
(
ret
)
goto
err3
;
return
0
;
err3:
gpio_free
(
GPIO_NR_PALMLD_LCD_POWER
);
err2:
gpio_free
(
GPIO_NR_PALMLD_BL_POWER
);
err:
return
ret
;
}
static
int
palmld_backlight_notify
(
struct
device
*
dev
,
int
brightness
)
static
void
__init
palmld_keys_init
(
void
)
{
gpio_set_value
(
GPIO_NR_PALMLD_BL_POWER
,
brightness
);
gpio_set_value
(
GPIO_NR_PALMLD_LCD_POWER
,
brightness
);
return
brightness
;
platform_device_register
(
&
palmld_pxa_keys
);
}
static
void
palmld_backlight_exit
(
struct
device
*
dev
)
{
gpio_free
(
GPIO_NR_PALMLD_BL_POWER
);
gpio_free
(
GPIO_NR_PALMLD_LCD_POWER
);
}
static
struct
platform_pwm_backlight_data
palmld_backlight_data
=
{
.
pwm_id
=
0
,
.
max_brightness
=
PALMLD_MAX_INTENSITY
,
.
dft_brightness
=
PALMLD_MAX_INTENSITY
,
.
pwm_period_ns
=
PALMLD_PERIOD_NS
,
.
init
=
palmld_backlight_init
,
.
notify
=
palmld_backlight_notify
,
.
exit
=
palmld_backlight_exit
,
};
static
struct
platform_device
palmld_backlight
=
{
.
name
=
"pwm-backlight"
,
.
dev
=
{
.
parent
=
&
pxa27x_device_pwm0
.
dev
,
.
platform_data
=
&
palmld_backlight_data
,
},
};
/******************************************************************************
* IrDA
******************************************************************************/
static
struct
pxaficp_platform_data
palmld_ficp_platform_data
=
{
.
gpio_pwdown
=
GPIO_NR_PALMLD_IR_DISABLE
,
.
transceiver_cap
=
IR_SIRMODE
|
IR_OFF
,
};
#else
static
inline
void
palmld_keys_init
(
void
)
{}
#endif
/******************************************************************************
* LEDs
******************************************************************************/
#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE)
struct
gpio_led
gpio_leds
[]
=
{
{
.
name
=
"palmld:green:led"
,
...
...
@@ -318,176 +268,34 @@ static struct platform_device palmld_leds = {
}
};
/******************************************************************************
* Power supply
******************************************************************************/
static
int
power_supply_init
(
struct
device
*
dev
)
{
int
ret
;
ret
=
gpio_request
(
GPIO_NR_PALMLD_POWER_DETECT
,
"CABLE_STATE_AC"
);
if
(
ret
)
goto
err1
;
ret
=
gpio_direction_input
(
GPIO_NR_PALMLD_POWER_DETECT
);
if
(
ret
)
goto
err2
;
ret
=
gpio_request
(
GPIO_NR_PALMLD_USB_DETECT_N
,
"CABLE_STATE_USB"
);
if
(
ret
)
goto
err2
;
ret
=
gpio_direction_input
(
GPIO_NR_PALMLD_USB_DETECT_N
);
if
(
ret
)
goto
err3
;
return
0
;
err3:
gpio_free
(
GPIO_NR_PALMLD_USB_DETECT_N
);
err2:
gpio_free
(
GPIO_NR_PALMLD_POWER_DETECT
);
err1:
return
ret
;
}
static
int
palmld_is_ac_online
(
void
)
static
void
__init
palmld_leds_init
(
void
)
{
return
gpio_get_value
(
GPIO_NR_PALMLD_POWER_DETECT
);
platform_device_register
(
&
palmld_leds
);
}
static
int
palmld_is_usb_online
(
void
)
{
return
!
gpio_get_value
(
GPIO_NR_PALMLD_USB_DETECT_N
);
}
static
void
power_supply_exit
(
struct
device
*
dev
)
{
gpio_free
(
GPIO_NR_PALMLD_USB_DETECT_N
);
gpio_free
(
GPIO_NR_PALMLD_POWER_DETECT
);
}
static
char
*
palmld_supplicants
[]
=
{
"main-battery"
,
};
static
struct
pda_power_pdata
power_supply_info
=
{
.
init
=
power_supply_init
,
.
is_ac_online
=
palmld_is_ac_online
,
.
is_usb_online
=
palmld_is_usb_online
,
.
exit
=
power_supply_exit
,
.
supplied_to
=
palmld_supplicants
,
.
num_supplicants
=
ARRAY_SIZE
(
palmld_supplicants
),
};
static
struct
platform_device
power_supply
=
{
.
name
=
"pda-power"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
power_supply_info
,
},
};
/******************************************************************************
* WM97xx audio, battery
******************************************************************************/
static
struct
wm97xx_batt_pdata
palmld_batt_pdata
=
{
.
batt_aux
=
WM97XX_AUX_ID3
,
.
temp_aux
=
WM97XX_AUX_ID2
,
.
charge_gpio
=
-
1
,
.
max_voltage
=
PALMLD_BAT_MAX_VOLTAGE
,
.
min_voltage
=
PALMLD_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"
,
};
static
struct
wm97xx_pdata
palmld_wm97xx_pdata
=
{
.
batt_pdata
=
&
palmld_batt_pdata
,
};
static
pxa2xx_audio_ops_t
palmld_ac97_pdata
=
{
.
reset_gpio
=
95
,
.
codec_pdata
=
{
&
palmld_wm97xx_pdata
,
},
};
static
struct
palm27x_asoc_info
palmld_asoc_pdata
=
{
.
jack_gpio
=
GPIO_NR_PALMLD_EARPHONE_DETECT
,
};
static
struct
platform_device
palmld_asoc
=
{
.
name
=
"palm27x-asoc"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
palmld_asoc_pdata
,
},
};
#else
static
inline
void
palmld_leds_init
(
void
)
{}
#endif
/******************************************************************************
* HDD
******************************************************************************/
static
struct
platform_device
palmld_hdd
=
{
#if defined(CONFIG_PATA_PALMLD) || defined(CONFIG_PATA_PALMLD_MODULE)
static
struct
platform_device
palmld_ide_device
=
{
.
name
=
"pata_palmld"
,
.
id
=
-
1
,
};
/******************************************************************************
* Framebuffer
******************************************************************************/
static
struct
pxafb_mode_info
palmld_lcd_modes
[]
=
{
{
.
pixclock
=
57692
,
.
xres
=
320
,
.
yres
=
480
,
.
bpp
=
16
,
.
left_margin
=
32
,
.
right_margin
=
1
,
.
upper_margin
=
7
,
.
lower_margin
=
1
,
.
hsync_len
=
4
,
.
vsync_len
=
1
,
},
};
static
struct
pxafb_mach_info
palmld_lcd_screen
=
{
.
modes
=
palmld_lcd_modes
,
.
num_modes
=
ARRAY_SIZE
(
palmld_lcd_modes
),
.
lcd_conn
=
LCD_COLOR_TFT_16BPP
|
LCD_PCLK_EDGE_FALL
,
};
/******************************************************************************
* Power management - standby
******************************************************************************/
static
void
__init
palmld_pm_init
(
void
)
static
void
__init
palmld_ide_init
(
void
)
{
static
u32
resume
[]
=
{
0xe3a00101
,
/* mov r0, #0x40000000 */
0xe380060f
,
/* orr r0, r0, #0x00f00000 */
0xe590f008
,
/* ldr pc, [r0, #0x08] */
};
/* copy the bootloader */
memcpy
(
phys_to_virt
(
PALMLD_STR_BASE
),
resume
,
sizeof
(
resume
));
platform_device_register
(
&
palmld_ide_device
);
}
#else
static
inline
void
palmld_ide_init
(
void
)
{}
#endif
/******************************************************************************
* Machine init
******************************************************************************/
static
struct
platform_device
*
devices
[]
__initdata
=
{
#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
&
palmld_pxa_keys
,
#endif
&
palmld_backlight
,
&
palmld_leds
,
&
power_supply
,
&
palmld_asoc
,
&
palmld_hdd
,
&
palmld_flash
,
};
static
struct
map_desc
palmld_io_desc
[]
__initdata
=
{
{
.
virtual
=
PALMLD_IDE_VIRT
,
...
...
@@ -512,19 +320,26 @@ static void __init palmld_map_io(void)
static
void
__init
palmld_init
(
void
)
{
pxa2xx_mfp_config
(
ARRAY_AND_SIZE
(
palmld_pin_config
));
pxa_set_ffuart_info
(
NULL
);
pxa_set_btuart_info
(
NULL
);
pxa_set_stuart_info
(
NULL
);
palmld_pm_init
();
set_pxa_fb_info
(
&
palmld_lcd_screen
);
pxa_set_mci_info
(
&
palmld_mci_platform_data
);
pxa_set_ac97_info
(
&
palmld_ac97_pdata
);
pxa_set_ficp_info
(
&
palmld_ficp_platform_data
);
pxa_set_keypad_info
(
&
palmld_keypad_platform_data
);
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
palm27x_mmc_init
(
GPIO_NR_PALMLD_SD_DETECT_N
,
GPIO_NR_PALMLD_SD_READONLY
,
GPIO_NR_PALMLD_SD_POWER
,
0
);
palm27x_pm_init
(
PALMLD_STR_BASE
);
palm27x_lcd_init
(
-
1
,
&
palm_320x480_lcd_mode
);
palm27x_irda_init
(
GPIO_NR_PALMLD_IR_DISABLE
);
palm27x_ac97_init
(
PALMLD_BAT_MIN_VOLTAGE
,
PALMLD_BAT_MAX_VOLTAGE
,
GPIO_NR_PALMLD_EARPHONE_DETECT
,
95
);
palm27x_pwm_init
(
GPIO_NR_PALMLD_BL_POWER
,
GPIO_NR_PALMLD_LCD_POWER
);
palm27x_power_init
(
GPIO_NR_PALMLD_POWER_DETECT
,
GPIO_NR_PALMLD_USB_DETECT_N
);
palm27x_pmic_init
();
palmld_kpc_init
();
palmld_keys_init
();
palmld_nor_init
();
palmld_leds_init
();
palmld_ide_init
();
}
MACHINE_START
(
PALMLD
,
"Palm LifeDrive"
)
...
...
arch/arm/mach-pxa/palmt5.c
View file @
31620e21
...
...
@@ -41,6 +41,7 @@
#include <mach/pxa27x_keypad.h>
#include <mach/udc.h>
#include <mach/palmasoc.h>
#include <mach/palm27x.h>
#include "generic.h"
#include "devices.h"
...
...
@@ -102,20 +103,10 @@ static unsigned long palmt5_pin_config[] __initdata = {
GPIO107_GPIO
,
/* earphone detect */
};
/******************************************************************************
* SD/MMC card controller
******************************************************************************/
static
struct
pxamci_platform_data
palmt5_mci_platform_data
=
{
.
ocr_mask
=
MMC_VDD_32_33
|
MMC_VDD_33_34
,
.
gpio_card_detect
=
GPIO_NR_PALMT5_SD_DETECT_N
,
.
gpio_card_ro
=
GPIO_NR_PALMT5_SD_READONLY
,
.
gpio_power
=
GPIO_NR_PALMT5_SD_POWER
,
.
detect_delay_ms
=
200
,
};
/******************************************************************************
* GPIO keyboard
******************************************************************************/
#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE)
static
unsigned
int
palmt5_matrix_keys
[]
=
{
KEY
(
0
,
0
,
KEY_POWER
),
KEY
(
0
,
1
,
KEY_F1
),
...
...
@@ -141,9 +132,18 @@ static struct pxa27x_keypad_platform_data palmt5_keypad_platform_data = {
.
debounce_interval
=
30
,
};
static
void
__init
palmt5_kpc_init
(
void
)
{
pxa_set_keypad_info
(
&
palmt5_keypad_platform_data
);
}
#else
static
inline
void
palmt5_kpc_init
(
void
)
{}
#endif
/******************************************************************************
* GPIO keys
******************************************************************************/
#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
static
struct
gpio_keys_button
palmt5_pxa_buttons
[]
=
{
{
KEY_F8
,
GPIO_NR_PALMT5_HOTSYNC_BUTTON_N
,
1
,
"HotSync Button"
},
};
...
...
@@ -161,260 +161,38 @@ static struct platform_device palmt5_pxa_keys = {
},
};
/******************************************************************************
* Backlight
******************************************************************************/
static
int
palmt5_backlight_init
(
struct
device
*
dev
)
{
int
ret
;
ret
=
gpio_request
(
GPIO_NR_PALMT5_BL_POWER
,
"BL POWER"
);
if
(
ret
)
goto
err
;
ret
=
gpio_direction_output
(
GPIO_NR_PALMT5_BL_POWER
,
0
);
if
(
ret
)
goto
err2
;
ret
=
gpio_request
(
GPIO_NR_PALMT5_LCD_POWER
,
"LCD POWER"
);
if
(
ret
)
goto
err2
;
ret
=
gpio_direction_output
(
GPIO_NR_PALMT5_LCD_POWER
,
0
);
if
(
ret
)
goto
err3
;
return
0
;
err3:
gpio_free
(
GPIO_NR_PALMT5_LCD_POWER
);
err2:
gpio_free
(
GPIO_NR_PALMT5_BL_POWER
);
err:
return
ret
;
}
static
int
palmt5_backlight_notify
(
struct
device
*
dev
,
int
brightness
)
{
gpio_set_value
(
GPIO_NR_PALMT5_BL_POWER
,
brightness
);
gpio_set_value
(
GPIO_NR_PALMT5_LCD_POWER
,
brightness
);
return
brightness
;
}
static
void
palmt5_backlight_exit
(
struct
device
*
dev
)
{
gpio_free
(
GPIO_NR_PALMT5_BL_POWER
);
gpio_free
(
GPIO_NR_PALMT5_LCD_POWER
);
}
static
struct
platform_pwm_backlight_data
palmt5_backlight_data
=
{
.
pwm_id
=
0
,
.
max_brightness
=
PALMT5_MAX_INTENSITY
,
.
dft_brightness
=
PALMT5_MAX_INTENSITY
,
.
pwm_period_ns
=
PALMT5_PERIOD_NS
,
.
init
=
palmt5_backlight_init
,
.
notify
=
palmt5_backlight_notify
,
.
exit
=
palmt5_backlight_exit
,
};
static
struct
platform_device
palmt5_backlight
=
{
.
name
=
"pwm-backlight"
,
.
dev
=
{
.
parent
=
&
pxa27x_device_pwm0
.
dev
,
.
platform_data
=
&
palmt5_backlight_data
,
},
};
/******************************************************************************
* IrDA
******************************************************************************/
static
struct
pxaficp_platform_data
palmt5_ficp_platform_data
=
{
.
gpio_pwdown
=
GPIO_NR_PALMT5_IR_DISABLE
,
.
transceiver_cap
=
IR_SIRMODE
|
IR_OFF
,
};
/******************************************************************************
* UDC
******************************************************************************/
static
struct
gpio_vbus_mach_info
palmt5_udc_info
=
{
.
gpio_vbus
=
GPIO_NR_PALMT5_USB_DETECT_N
,
.
gpio_vbus_inverted
=
1
,
.
gpio_pullup
=
GPIO_NR_PALMT5_USB_PULLUP
,
};
static
struct
platform_device
palmt5_gpio_vbus
=
{
.
name
=
"gpio-vbus"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
palmt5_udc_info
,
},
};
/******************************************************************************
* Power supply
******************************************************************************/
static
int
power_supply_init
(
struct
device
*
dev
)
{
int
ret
;
ret
=
gpio_request
(
GPIO_NR_PALMT5_POWER_DETECT
,
"CABLE_STATE_AC"
);
if
(
ret
)
goto
err1
;
ret
=
gpio_direction_input
(
GPIO_NR_PALMT5_POWER_DETECT
);
if
(
ret
)
goto
err2
;
return
0
;
err2:
gpio_free
(
GPIO_NR_PALMT5_POWER_DETECT
);
err1:
return
ret
;
}
static
int
palmt5_is_ac_online
(
void
)
{
return
gpio_get_value
(
GPIO_NR_PALMT5_POWER_DETECT
);
}
static
void
power_supply_exit
(
struct
device
*
dev
)
{
gpio_free
(
GPIO_NR_PALMT5_POWER_DETECT
);
}
static
char
*
palmt5_supplicants
[]
=
{
"main-battery"
,
};
static
struct
pda_power_pdata
power_supply_info
=
{
.
init
=
power_supply_init
,
.
is_ac_online
=
palmt5_is_ac_online
,
.
exit
=
power_supply_exit
,
.
supplied_to
=
palmt5_supplicants
,
.
num_supplicants
=
ARRAY_SIZE
(
palmt5_supplicants
),
};
static
struct
platform_device
power_supply
=
{
.
name
=
"pda-power"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
power_supply_info
,
},
};
/******************************************************************************
* WM97xx audio, battery
******************************************************************************/
static
struct
wm97xx_batt_pdata
palmt5_batt_pdata
=
{
.
batt_aux
=
WM97XX_AUX_ID3
,
.
temp_aux
=
WM97XX_AUX_ID2
,
.
charge_gpio
=
-
1
,
.
max_voltage
=
PALMT5_BAT_MAX_VOLTAGE
,
.
min_voltage
=
PALMT5_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"
,
};
static
struct
wm97xx_pdata
palmt5_wm97xx_pdata
=
{
.
batt_pdata
=
&
palmt5_batt_pdata
,
};
static
pxa2xx_audio_ops_t
palmt5_ac97_pdata
=
{
.
reset_gpio
=
95
,
.
codec_pdata
=
{
&
palmt5_wm97xx_pdata
,
},
};
static
struct
palm27x_asoc_info
palmt5_asoc_pdata
=
{
.
jack_gpio
=
GPIO_NR_PALMT5_EARPHONE_DETECT
,
};
static
struct
platform_device
palmt5_asoc
=
{
.
name
=
"palm27x-asoc"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
palmt5_asoc_pdata
,
},
};
/******************************************************************************
* Framebuffer
******************************************************************************/
static
struct
pxafb_mode_info
palmt5_lcd_modes
[]
=
{
{
.
pixclock
=
57692
,
.
xres
=
320
,
.
yres
=
480
,
.
bpp
=
16
,
.
left_margin
=
32
,
.
right_margin
=
1
,
.
upper_margin
=
7
,
.
lower_margin
=
1
,
.
hsync_len
=
4
,
.
vsync_len
=
1
,
},
};
static
struct
pxafb_mach_info
palmt5_lcd_screen
=
{
.
modes
=
palmt5_lcd_modes
,
.
num_modes
=
ARRAY_SIZE
(
palmt5_lcd_modes
),
.
lcd_conn
=
LCD_COLOR_TFT_16BPP
|
LCD_PCLK_EDGE_FALL
,
};
/******************************************************************************
* Power management - standby
******************************************************************************/
static
void
__init
palmt5_pm_init
(
void
)
static
void
__init
palmt5_keys_init
(
void
)
{
static
u32
resume
[]
=
{
0xe3a00101
,
/* mov r0, #0x40000000 */
0xe380060f
,
/* orr r0, r0, #0x00f00000 */
0xe590f008
,
/* ldr pc, [r0, #0x08] */
};
/* copy the bootloader */
memcpy
(
phys_to_virt
(
PALMT5_STR_BASE
),
resume
,
sizeof
(
resume
));
platform_device_register
(
&
palmt5_pxa_keys
);
}
#else
static
inline
void
palmt5_keys_init
(
void
)
{}
#endif
/******************************************************************************
* Machine init
******************************************************************************/
static
struct
platform_device
*
devices
[]
__initdata
=
{
#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
&
palmt5_pxa_keys
,
#endif
&
palmt5_backlight
,
&
power_supply
,
&
palmt5_asoc
,
&
palmt5_gpio_vbus
,
};
/* setup udc GPIOs initial state */
static
void
__init
palmt5_udc_init
(
void
)
{
if
(
!
gpio_request
(
GPIO_NR_PALMT5_USB_PULLUP
,
"UDC Vbus"
))
{
gpio_direction_output
(
GPIO_NR_PALMT5_USB_PULLUP
,
1
);
gpio_free
(
GPIO_NR_PALMT5_USB_PULLUP
);
}
}
static
void
__init
palmt5_init
(
void
)
{
pxa2xx_mfp_config
(
ARRAY_AND_SIZE
(
palmt5_pin_config
));
pxa_set_ffuart_info
(
NULL
);
pxa_set_btuart_info
(
NULL
);
pxa_set_stuart_info
(
NULL
);
palmt5_pm_init
();
set_pxa_fb_info
(
&
palmt5_lcd_screen
);
pxa_set_mci_info
(
&
palmt5_mci_platform_data
);
palmt5_udc_init
();
pxa_set_ac97_info
(
&
palmt5_ac97_pdata
);
pxa_set_ficp_info
(
&
palmt5_ficp_platform_data
);
pxa_set_keypad_info
(
&
palmt5_keypad_platform_data
);
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
palm27x_mmc_init
(
GPIO_NR_PALMT5_SD_DETECT_N
,
GPIO_NR_PALMT5_SD_READONLY
,
GPIO_NR_PALMT5_SD_POWER
,
0
);
palm27x_pm_init
(
PALMT5_STR_BASE
);
palm27x_lcd_init
(
-
1
,
&
palm_320x480_lcd_mode
);
palm27x_udc_init
(
GPIO_NR_PALMT5_USB_DETECT_N
,
GPIO_NR_PALMT5_USB_PULLUP
,
1
);
palm27x_irda_init
(
GPIO_NR_PALMT5_IR_DISABLE
);
palm27x_ac97_init
(
PALMT5_BAT_MIN_VOLTAGE
,
PALMT5_BAT_MAX_VOLTAGE
,
GPIO_NR_PALMT5_EARPHONE_DETECT
,
95
);
palm27x_pwm_init
(
GPIO_NR_PALMT5_BL_POWER
,
GPIO_NR_PALMT5_LCD_POWER
);
palm27x_power_init
(
GPIO_NR_PALMT5_POWER_DETECT
,
-
1
);
palm27x_pmic_init
();
palmt5_kpc_init
();
palmt5_keys_init
();
}
MACHINE_START
(
PALMT5
,
"Palm Tungsten|T5"
)
...
...
arch/arm/mach-pxa/palmtreo.c
View file @
31620e21
...
...
@@ -44,6 +44,7 @@
#include <mach/pxa2xx-regs.h>
#include <mach/palmasoc.h>
#include <mach/camera.h>
#include <mach/palm27x.h>
#include <sound/pxa2xx-lib.h>
...
...
@@ -157,32 +158,10 @@ static unsigned long centro685_pin_config[] __initdata = {
};
#endif
/* CONFIG_MACH_CENTRO */
/******************************************************************************
* SD/MMC card controller
******************************************************************************/
#ifdef CONFIG_MACH_TREO680
static
struct
pxamci_platform_data
treo680_mci_platform_data
=
{
.
ocr_mask
=
MMC_VDD_32_33
|
MMC_VDD_33_34
,
.
gpio_card_detect
=
GPIO_NR_TREO_SD_DETECT_N
,
.
gpio_card_ro
=
GPIO_NR_TREO680_SD_READONLY
,
.
gpio_power
=
GPIO_NR_TREO680_SD_POWER
,
};
#endif
/* CONFIG_MACH_TREO680 */
#ifdef CONFIG_MACH_CENTRO
static
struct
pxamci_platform_data
centro_mci_platform_data
=
{
.
ocr_mask
=
MMC_VDD_32_33
|
MMC_VDD_33_34
,
.
gpio_card_detect
=
GPIO_NR_TREO_SD_DETECT_N
,
.
gpio_card_ro
=
-
1
,
.
gpio_power
=
GPIO_NR_CENTRO_SD_POWER
,
.
gpio_power_invert
=
1
,
};
#endif
/* CONFIG_MACH_CENTRO */
/******************************************************************************
* GPIO keyboard
******************************************************************************/
#if
def CONFIG_MACH_TREO680
#if
defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE)
static
unsigned
int
treo680_matrix_keys
[]
=
{
KEY
(
0
,
0
,
KEY_F8
),
/* Red/Off/Power */
KEY
(
0
,
1
,
KEY_LEFT
),
...
...
@@ -242,19 +221,6 @@ static unsigned int treo680_matrix_keys[] = {
KEY
(
7
,
5
,
KEY_I
),
};
static
struct
pxa27x_keypad_platform_data
treo680_keypad_platform_data
=
{
.
matrix_key_rows
=
8
,
.
matrix_key_cols
=
7
,
.
matrix_key_map
=
treo680_matrix_keys
,
.
matrix_key_map_size
=
ARRAY_SIZE
(
treo680_matrix_keys
),
.
direct_key_map
=
{
KEY_CONNECT
},
.
direct_key_num
=
1
,
.
debounce_interval
=
30
,
};
#endif
/* CONFIG_MACH_TREO680 */
#ifdef CONFIG_MACH_CENTRO
static
unsigned
int
centro_matrix_keys
[]
=
{
KEY
(
0
,
0
,
KEY_F9
),
/* Home */
KEY
(
0
,
1
,
KEY_LEFT
),
...
...
@@ -314,157 +280,50 @@ static unsigned int centro_matrix_keys[] = {
KEY
(
7
,
5
,
KEY_I
),
};
static
struct
pxa27x_keypad_platform_data
centro_keypad_platform_
data
=
{
static
struct
pxa27x_keypad_platform_data
treo680_keypad_p
data
=
{
.
matrix_key_rows
=
8
,
.
matrix_key_cols
=
7
,
.
matrix_key_map
=
centro
_matrix_keys
,
.
matrix_key_map_size
=
ARRAY_SIZE
(
centro
_matrix_keys
),
.
matrix_key_map
=
treo680
_matrix_keys
,
.
matrix_key_map_size
=
ARRAY_SIZE
(
treo680
_matrix_keys
),
.
direct_key_map
=
{
KEY_CONNECT
},
.
direct_key_num
=
1
,
.
debounce_interval
=
30
,
};
#endif
/* CONFIG_MACH_CENTRO */
/******************************************************************************
* aSoC audio
******************************************************************************/
static
pxa2xx_audio_ops_t
treo_ac97_pdata
=
{
.
reset_gpio
=
95
,
};
/******************************************************************************
* Backlight
******************************************************************************/
static
int
treo_backlight_init
(
struct
device
*
dev
)
static
void
__init
palmtreo_kpc_init
(
void
)
{
int
ret
;
ret
=
gpio_request
(
GPIO_NR_TREO_BL_POWER
,
"BL POWER"
);
if
(
ret
)
goto
err
;
ret
=
gpio_direction_output
(
GPIO_NR_TREO_BL_POWER
,
0
);
if
(
ret
)
goto
err2
;
return
0
;
static
struct
pxa27x_keypad_platform_data
*
data
=
&
treo680_keypad_pdata
;
err2:
gpio_free
(
GPIO_NR_TREO_BL_POWER
);
err:
return
ret
;
}
static
int
treo_backlight_notify
(
struct
device
*
dev
,
int
brightness
)
{
gpio_set_value
(
GPIO_NR_TREO_BL_POWER
,
brightness
);
return
TREO_MAX_INTENSITY
-
brightness
;
};
if
(
machine_is_centro
())
{
data
->
matrix_key_map
=
centro_matrix_keys
;
data
->
matrix_key_map_size
=
ARRAY_SIZE
(
centro_matrix_keys
);
}
static
void
treo_backlight_exit
(
struct
device
*
dev
)
{
gpio_free
(
GPIO_NR_TREO_BL_POWER
);
pxa_set_keypad_info
(
&
treo680_keypad_pdata
);
}
static
struct
platform_pwm_backlight_data
treo_backlight_data
=
{
.
pwm_id
=
0
,
.
max_brightness
=
TREO_MAX_INTENSITY
,
.
dft_brightness
=
TREO_DEFAULT_INTENSITY
,
.
pwm_period_ns
=
TREO_PERIOD_NS
,
.
init
=
treo_backlight_init
,
.
notify
=
treo_backlight_notify
,
.
exit
=
treo_backlight_exit
,
};
static
struct
platform_device
treo_backlight
=
{
.
name
=
"pwm-backlight"
,
.
dev
=
{
.
parent
=
&
pxa27x_device_pwm0
.
dev
,
.
platform_data
=
&
treo_backlight_data
,
},
};
/******************************************************************************
* IrDA
******************************************************************************/
static
struct
pxaficp_platform_data
treo_ficp_info
=
{
.
gpio_pwdown
=
GPIO_NR_TREO_IR_EN
,
.
transceiver_cap
=
IR_SIRMODE
|
IR_OFF
,
};
/******************************************************************************
* UDC
******************************************************************************/
static
struct
pxa2xx_udc_mach_info
treo_udc_info
__initdata
=
{
.
gpio_vbus
=
GPIO_NR_TREO_USB_DETECT
,
.
gpio_vbus_inverted
=
1
,
.
gpio_pullup
=
GPIO_NR_TREO_USB_PULLUP
,
};
#else
static
inline
void
palmtreo_kpc_init
(
void
)
{}
#endif
/******************************************************************************
* USB host
******************************************************************************/
#if
def CONFIG_MACH_TREO680
#if
defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
static
struct
pxaohci_platform_data
treo680_ohci_info
=
{
.
port_mode
=
PMM_PERPORT_MODE
,
.
flags
=
ENABLE_PORT1
|
ENABLE_PORT3
,
.
power_budget
=
0
,
};
#endif
/* CONFIG_MACH_TREO680 */
/******************************************************************************
* Power supply
******************************************************************************/
static
int
power_supply_init
(
struct
device
*
dev
)
static
void
__init
palmtreo_uhc_init
(
void
)
{
int
ret
;
ret
=
gpio_request
(
GPIO_NR_TREO_POWER_DETECT
,
"CABLE_STATE_AC"
);
if
(
ret
)
goto
err1
;
ret
=
gpio_direction_input
(
GPIO_NR_TREO_POWER_DETECT
);
if
(
ret
)
goto
err2
;
return
0
;
err2:
gpio_free
(
GPIO_NR_TREO_POWER_DETECT
);
err1:
return
ret
;
}
static
int
treo_is_ac_online
(
void
)
{
return
gpio_get_value
(
GPIO_NR_TREO_POWER_DETECT
);
if
(
machine_is_treo680
())
pxa_set_ohci_info
(
&
treo680_ohci_info
);
}
static
void
power_supply_exit
(
struct
device
*
dev
)
{
gpio_free
(
GPIO_NR_TREO_POWER_DETECT
);
}
static
char
*
treo_supplicants
[]
=
{
"main-battery"
,
};
static
struct
pda_power_pdata
power_supply_info
=
{
.
init
=
power_supply_init
,
.
is_ac_online
=
treo_is_ac_online
,
.
exit
=
power_supply_exit
,
.
supplied_to
=
treo_supplicants
,
.
num_supplicants
=
ARRAY_SIZE
(
treo_supplicants
),
};
static
struct
platform_device
power_supply
=
{
.
name
=
"pda-power"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
power_supply_info
,
},
};
#else
static
inline
void
palmtreo_uhc_init
(
void
)
{}
#endif
/******************************************************************************
* Vibra and LEDs
...
...
@@ -493,16 +352,6 @@ static struct gpio_led_platform_data treo680_gpio_led_info = {
.
num_leds
=
ARRAY_SIZE
(
treo680_gpio_leds
),
};
static
struct
platform_device
treo680_leds
=
{
.
name
=
"leds-gpio"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
treo680_gpio_led_info
,
}
};
#endif
/* CONFIG_MACH_TREO680 */
#ifdef CONFIG_MACH_CENTRO
static
struct
gpio_led
centro_gpio_leds
[]
=
{
{
.
name
=
"centro:vibra:vibra"
,
...
...
@@ -527,139 +376,61 @@ static struct gpio_led_platform_data centro_gpio_led_info = {
.
num_leds
=
ARRAY_SIZE
(
centro_gpio_leds
),
};
static
struct
platform_device
centr
o_leds
=
{
static
struct
platform_device
palmtre
o_leds
=
{
.
name
=
"leds-gpio"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
centro
_gpio_led_info
,
.
platform_data
=
&
treo680
_gpio_led_info
,
}
};
#endif
/* CONFIG_MACH_CENTRO */
/******************************************************************************
* Framebuffer
******************************************************************************/
/* TODO: add support for 324x324 */
static
struct
pxafb_mode_info
treo_lcd_modes
[]
=
{
{
.
pixclock
=
86538
,
.
xres
=
320
,
.
yres
=
320
,
.
bpp
=
16
,
.
left_margin
=
20
,
.
right_margin
=
8
,
.
upper_margin
=
8
,
.
lower_margin
=
5
,
.
hsync_len
=
4
,
.
vsync_len
=
1
,
},
};
static
void
treo_lcd_power
(
int
on
,
struct
fb_var_screeninfo
*
info
)
static
void
__init
palmtreo_leds_init
(
void
)
{
gpio_set_value
(
GPIO_NR_TREO_BL_POWER
,
on
);
}
static
struct
pxafb_mach_info
treo_lcd_screen
=
{
.
modes
=
treo_lcd_modes
,
.
num_modes
=
ARRAY_SIZE
(
treo_lcd_modes
),
.
lcd_conn
=
LCD_COLOR_TFT_16BPP
|
LCD_PCLK_EDGE_FALL
,
};
if
(
machine_is_centro
())
palmtreo_leds
.
dev
.
platform_data
=
&
centro_gpio_led_info
;
/******************************************************************************
* Power management - standby
******************************************************************************/
static
void
__init
treo_pm_init
(
void
)
{
static
u32
resume
[]
=
{
0xe3a00101
,
/* mov r0, #0x40000000 */
0xe380060f
,
/* orr r0, r0, #0x00f00000 */
0xe590f008
,
/* ldr pc, [r0, #0x08] */
};
/* this is where the bootloader jumps */
memcpy
(
phys_to_virt
(
TREO_STR_BASE
),
resume
,
sizeof
(
resume
));
platform_device_register
(
&
palmtreo_leds
);
}
#else
static
inline
void
palmtreo_leds_init
(
void
)
{}
#endif
/******************************************************************************
* Machine init
******************************************************************************/
static
struct
platform_device
*
treo_devices
[]
__initdata
=
{
&
treo_backlight
,
&
power_supply
,
};
#ifdef CONFIG_MACH_TREO680
static
struct
platform_device
*
treo680_devices
[]
__initdata
=
{
&
treo680_leds
,
};
#endif
/* CONFIG_MACH_TREO680 */
#ifdef CONFIG_MACH_CENTRO
static
struct
platform_device
*
centro_devices
[]
__initdata
=
{
&
centro_leds
,
};
#endif
/* CONFIG_MACH_CENTRO */
/* setup udc GPIOs initial state */
static
void
__init
treo_udc_init
(
void
)
{
if
(
!
gpio_request
(
GPIO_NR_TREO_USB_PULLUP
,
"UDC Vbus"
))
{
gpio_direction_output
(
GPIO_NR_TREO_USB_PULLUP
,
1
);
gpio_free
(
GPIO_NR_TREO_USB_PULLUP
);
}
}
static
void
__init
treo_lcd_power_init
(
void
)
{
int
ret
;
ret
=
gpio_request
(
GPIO_NR_TREO_LCD_POWER
,
"LCD POWER"
);
if
(
ret
)
{
pr_err
(
"Treo680: LCD power GPIO request failed!
\n
"
);
return
;
}
ret
=
gpio_direction_output
(
GPIO_NR_TREO_LCD_POWER
,
0
);
if
(
ret
)
{
pr_err
(
"Treo680: setting LCD power GPIO direction failed!
\n
"
);
gpio_free
(
GPIO_NR_TREO_LCD_POWER
);
return
;
}
treo_lcd_screen
.
pxafb_lcd_power
=
treo_lcd_power
;
}
static
void
__init
treo_init
(
void
)
static
void
__init
palmphone_common_init
(
void
)
{
pxa2xx_mfp_config
(
ARRAY_AND_SIZE
(
treo_pin_config
));
pxa_set_ffuart_info
(
NULL
);
pxa_set_btuart_info
(
NULL
);
pxa_set_stuart_info
(
NULL
);
treo_pm_init
(
);
p
xa2xx_mfp_config
(
ARRAY_AND_SIZE
(
treo_pin_config
)
);
treo_lcd_power_init
(
);
set_pxa_fb_info
(
&
treo_lcd_screen
);
treo_udc_init
(
);
p
xa_set_udc_info
(
&
treo_udc_info
);
p
xa_set_ac97_info
(
&
treo_ac97_pdata
);
p
xa_set_ficp_info
(
&
treo_ficp_info
);
p
latform_add_devices
(
ARRAY_AND_SIZE
(
treo_devices
)
);
palm27x_pm_init
(
TREO_STR_BASE
);
palm27x_lcd_init
(
GPIO_NR_TREO_BL_POWER
,
&
palm_320x320_new_lcd_mode
);
p
alm27x_udc_init
(
GPIO_NR_TREO_USB_DETECT
,
GPIO_NR_TREO_USB_PULLUP
,
1
);
palm27x_irda_init
(
GPIO_NR_TREO_IR_EN
);
palm27x_ac97_init
(
-
1
,
-
1
,
-
1
,
95
);
palm27x_pwm_init
(
GPIO_NR_TREO_BL_POWER
,
-
1
);
p
alm27x_power_init
(
GPIO_NR_TREO_POWER_DETECT
,
-
1
);
p
alm27x_pmic_init
(
);
p
almtreo_kpc_init
(
);
palmtreo_uhc_init
();
p
almtreo_leds_init
(
);
}
#ifdef CONFIG_MACH_TREO680
static
void
__init
treo680_init
(
void
)
{
treo_init
();
pxa2xx_mfp_config
(
ARRAY_AND_SIZE
(
treo680_pin_config
));
pxa_set_mci_info
(
&
treo680_mci_platform_data
);
pxa_set_keypad_info
(
&
treo680_keypad_platform_data
);
pxa_set_ohci_info
(
&
treo680_ohci_info
);
palmphone_common_init
();
palm27x_mmc_init
(
GPIO_NR_TREO_SD_DETECT_N
,
GPIO_NR_TREO680_SD_READONLY
,
GPIO_NR_TREO680_SD_POWER
,
0
);
}
platform_add_devices
(
ARRAY_AND_SIZE
(
treo680_devices
));
static
void
__init
centro_init
(
void
)
{
pxa2xx_mfp_config
(
ARRAY_AND_SIZE
(
centro685_pin_config
));
palmphone_common_init
();
palm27x_mmc_init
(
GPIO_NR_TREO_SD_DETECT_N
,
-
1
,
GPIO_NR_CENTRO_SD_POWER
,
1
);
}
MACHINE_START
(
TREO680
,
"Palm Treo 680"
)
...
...
@@ -671,19 +442,6 @@ MACHINE_START(TREO680, "Palm Treo 680")
.
timer
=
&
pxa_timer
,
.
init_machine
=
treo680_init
,
MACHINE_END
#endif
/* CONFIG_MACH_TREO680 */
#ifdef CONFIG_MACH_CENTRO
static
void
__init
centro_init
(
void
)
{
treo_init
();
pxa2xx_mfp_config
(
ARRAY_AND_SIZE
(
centro685_pin_config
));
pxa_set_mci_info
(
&
centro_mci_platform_data
);
pxa_set_keypad_info
(
&
centro_keypad_platform_data
);
platform_add_devices
(
ARRAY_AND_SIZE
(
centro_devices
));
}
MACHINE_START
(
CENTRO
,
"Palm Centro 685"
)
.
phys_io
=
TREO_PHYS_IO_START
,
...
...
@@ -692,6 +450,5 @@ MACHINE_START(CENTRO, "Palm Centro 685")
.
map_io
=
pxa_map_io
,
.
init_irq
=
pxa27x_init_irq
,
.
timer
=
&
pxa_timer
,
.
init_machine
=
centro_init
,
.
init_machine
=
centro_init
,
MACHINE_END
#endif
/* CONFIG_MACH_CENTRO */
arch/arm/mach-pxa/palmtx.c
View file @
31620e21
...
...
@@ -46,6 +46,7 @@
#include <mach/pxa27x_keypad.h>
#include <mach/udc.h>
#include <mach/palmasoc.h>
#include <mach/palm27x.h>
#include "generic.h"
#include "devices.h"
...
...
@@ -129,6 +130,7 @@ static unsigned long palmtx_pin_config[] __initdata = {
/******************************************************************************
* NOR Flash
******************************************************************************/
#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
static
struct
mtd_partition
palmtx_partitions
[]
=
{
{
.
name
=
"Flash"
,
...
...
@@ -162,20 +164,18 @@ static struct platform_device palmtx_flash = {
},
};
/******************************************************************************
* SD/MMC card controller
******************************************************************************/
static
struct
pxamci_platform_data
palmtx_mci_platform_data
=
{
.
ocr_mask
=
MMC_VDD_32_33
|
MMC_VDD_33_34
,
.
gpio_card_detect
=
GPIO_NR_PALMTX_SD_DETECT_N
,
.
gpio_card_ro
=
GPIO_NR_PALMTX_SD_READONLY
,
.
gpio_power
=
GPIO_NR_PALMTX_SD_POWER
,
.
detect_delay_ms
=
200
,
};
static
void
__init
palmtx_nor_init
(
void
)
{
platform_device_register
(
&
palmtx_flash
);
}
#else
static
inline
void
palmtx_nor_init
(
void
)
{}
#endif
/******************************************************************************
* GPIO keyboard
******************************************************************************/
#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE)
static
unsigned
int
palmtx_matrix_keys
[]
=
{
KEY
(
0
,
0
,
KEY_POWER
),
KEY
(
0
,
1
,
KEY_F1
),
...
...
@@ -201,9 +201,18 @@ static struct pxa27x_keypad_platform_data palmtx_keypad_platform_data = {
.
debounce_interval
=
30
,
};
static
void
__init
palmtx_kpc_init
(
void
)
{
pxa_set_keypad_info
(
&
palmtx_keypad_platform_data
);
}
#else
static
inline
void
palmtx_kpc_init
(
void
)
{}
#endif
/******************************************************************************
* GPIO keys
******************************************************************************/
#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
static
struct
gpio_keys_button
palmtx_pxa_buttons
[]
=
{
{
KEY_F8
,
GPIO_NR_PALMTX_HOTSYNC_BUTTON_N
,
1
,
"HotSync Button"
},
};
...
...
@@ -221,210 +230,18 @@ static struct platform_device palmtx_pxa_keys = {
},
};
/******************************************************************************
* Backlight
******************************************************************************/
static
int
palmtx_backlight_init
(
struct
device
*
dev
)
{
int
ret
;
ret
=
gpio_request
(
GPIO_NR_PALMTX_BL_POWER
,
"BL POWER"
);
if
(
ret
)
goto
err
;
ret
=
gpio_direction_output
(
GPIO_NR_PALMTX_BL_POWER
,
0
);
if
(
ret
)
goto
err2
;
ret
=
gpio_request
(
GPIO_NR_PALMTX_LCD_POWER
,
"LCD POWER"
);
if
(
ret
)
goto
err2
;
ret
=
gpio_direction_output
(
GPIO_NR_PALMTX_LCD_POWER
,
0
);
if
(
ret
)
goto
err3
;
return
0
;
err3:
gpio_free
(
GPIO_NR_PALMTX_LCD_POWER
);
err2:
gpio_free
(
GPIO_NR_PALMTX_BL_POWER
);
err:
return
ret
;
}
static
int
palmtx_backlight_notify
(
struct
device
*
dev
,
int
brightness
)
{
gpio_set_value
(
GPIO_NR_PALMTX_BL_POWER
,
brightness
);
gpio_set_value
(
GPIO_NR_PALMTX_LCD_POWER
,
brightness
);
return
brightness
;
}
static
void
palmtx_backlight_exit
(
struct
device
*
dev
)
{
gpio_free
(
GPIO_NR_PALMTX_BL_POWER
);
gpio_free
(
GPIO_NR_PALMTX_LCD_POWER
);
}
static
struct
platform_pwm_backlight_data
palmtx_backlight_data
=
{
.
pwm_id
=
0
,
.
max_brightness
=
PALMTX_MAX_INTENSITY
,
.
dft_brightness
=
PALMTX_MAX_INTENSITY
,
.
pwm_period_ns
=
PALMTX_PERIOD_NS
,
.
init
=
palmtx_backlight_init
,
.
notify
=
palmtx_backlight_notify
,
.
exit
=
palmtx_backlight_exit
,
};
static
struct
platform_device
palmtx_backlight
=
{
.
name
=
"pwm-backlight"
,
.
dev
=
{
.
parent
=
&
pxa27x_device_pwm0
.
dev
,
.
platform_data
=
&
palmtx_backlight_data
,
},
};
/******************************************************************************
* IrDA
******************************************************************************/
static
struct
pxaficp_platform_data
palmtx_ficp_platform_data
=
{
.
gpio_pwdown
=
GPIO_NR_PALMTX_IR_DISABLE
,
.
transceiver_cap
=
IR_SIRMODE
|
IR_OFF
,
};
/******************************************************************************
* UDC
******************************************************************************/
static
struct
gpio_vbus_mach_info
palmtx_udc_info
=
{
.
gpio_vbus
=
GPIO_NR_PALMTX_USB_DETECT_N
,
.
gpio_vbus_inverted
=
1
,
.
gpio_pullup
=
GPIO_NR_PALMTX_USB_PULLUP
,
};
static
struct
platform_device
palmtx_gpio_vbus
=
{
.
name
=
"gpio-vbus"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
palmtx_udc_info
,
},
};
/******************************************************************************
* Power supply
******************************************************************************/
static
int
power_supply_init
(
struct
device
*
dev
)
{
int
ret
;
ret
=
gpio_request
(
GPIO_NR_PALMTX_POWER_DETECT
,
"CABLE_STATE_AC"
);
if
(
ret
)
goto
err1
;
ret
=
gpio_direction_input
(
GPIO_NR_PALMTX_POWER_DETECT
);
if
(
ret
)
goto
err2
;
return
0
;
err2:
gpio_free
(
GPIO_NR_PALMTX_POWER_DETECT
);
err1:
return
ret
;
}
static
int
palmtx_is_ac_online
(
void
)
{
return
gpio_get_value
(
GPIO_NR_PALMTX_POWER_DETECT
);
}
static
void
power_supply_exit
(
struct
device
*
dev
)
static
void
__init
palmtx_keys_init
(
void
)
{
gpio_free
(
GPIO_NR_PALMTX_POWER_DETECT
);
platform_device_register
(
&
palmtx_pxa_keys
);
}
static
char
*
palmtx_supplicants
[]
=
{
"main-battery"
,
};
static
struct
pda_power_pdata
power_supply_info
=
{
.
init
=
power_supply_init
,
.
is_ac_online
=
palmtx_is_ac_online
,
.
exit
=
power_supply_exit
,
.
supplied_to
=
palmtx_supplicants
,
.
num_supplicants
=
ARRAY_SIZE
(
palmtx_supplicants
),
};
static
struct
platform_device
power_supply
=
{
.
name
=
"pda-power"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
power_supply_info
,
},
};
/******************************************************************************
* WM97xx audio, battery
******************************************************************************/
static
struct
wm97xx_batt_pdata
palmtx_batt_pdata
=
{
.
batt_aux
=
WM97XX_AUX_ID3
,
.
temp_aux
=
WM97XX_AUX_ID2
,
.
charge_gpio
=
-
1
,
.
max_voltage
=
PALMTX_BAT_MAX_VOLTAGE
,
.
min_voltage
=
PALMTX_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"
,
};
static
struct
wm97xx_pdata
palmtx_wm97xx_pdata
=
{
.
batt_pdata
=
&
palmtx_batt_pdata
,
};
static
pxa2xx_audio_ops_t
palmtx_ac97_pdata
=
{
.
reset_gpio
=
95
,
.
codec_pdata
=
{
&
palmtx_wm97xx_pdata
,
},
};
static
struct
palm27x_asoc_info
palmtx_asoc_pdata
=
{
.
jack_gpio
=
GPIO_NR_PALMTX_EARPHONE_DETECT
,
};
static
struct
platform_device
palmtx_asoc
=
{
.
name
=
"palm27x-asoc"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
palmtx_asoc_pdata
,
},
};
/******************************************************************************
* Framebuffer
******************************************************************************/
static
struct
pxafb_mode_info
palmtx_lcd_modes
[]
=
{
{
.
pixclock
=
57692
,
.
xres
=
320
,
.
yres
=
480
,
.
bpp
=
16
,
.
left_margin
=
32
,
.
right_margin
=
1
,
.
upper_margin
=
7
,
.
lower_margin
=
1
,
.
hsync_len
=
4
,
.
vsync_len
=
1
,
},
};
static
struct
pxafb_mach_info
palmtx_lcd_screen
=
{
.
modes
=
palmtx_lcd_modes
,
.
num_modes
=
ARRAY_SIZE
(
palmtx_lcd_modes
),
.
lcd_conn
=
LCD_COLOR_TFT_16BPP
|
LCD_PCLK_EDGE_FALL
,
};
#else
static
inline
void
palmtx_keys_init
(
void
)
{}
#endif
/******************************************************************************
* NAND Flash
******************************************************************************/
#if defined(CONFIG_MTD_NAND_GPIO) || defined(CONFIG_MTD_NAND_GPIO_MODULE)
static
void
palmtx_nand_cmd_ctl
(
struct
mtd_info
*
mtd
,
int
cmd
,
unsigned
int
ctrl
)
{
...
...
@@ -484,36 +301,17 @@ static struct platform_device palmtx_nand = {
}
};
/******************************************************************************
* Power management - standby
******************************************************************************/
static
void
__init
palmtx_pm_init
(
void
)
static
void
__init
palmtx_nand_init
(
void
)
{
static
u32
resume
[]
=
{
0xe3a00101
,
/* mov r0, #0x40000000 */
0xe380060f
,
/* orr r0, r0, #0x00f00000 */
0xe590f008
,
/* ldr pc, [r0, #0x08] */
};
/* copy the bootloader */
memcpy
(
phys_to_virt
(
PALMTX_STR_BASE
),
resume
,
sizeof
(
resume
));
platform_device_register
(
&
palmtx_nand
);
}
#else
static
inline
void
palmtx_nand_init
(
void
)
{}
#endif
/******************************************************************************
* Machine init
******************************************************************************/
static
struct
platform_device
*
devices
[]
__initdata
=
{
#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
&
palmtx_pxa_keys
,
#endif
&
palmtx_backlight
,
&
power_supply
,
&
palmtx_asoc
,
&
palmtx_gpio_vbus
,
&
palmtx_flash
,
&
palmtx_nand
,
};
static
struct
map_desc
palmtx_io_desc
[]
__initdata
=
{
{
.
virtual
=
PALMTX_PCMCIA_VIRT
,
...
...
@@ -539,33 +337,29 @@ static void __init palmtx_map_io(void)
iotable_init
(
palmtx_io_desc
,
ARRAY_SIZE
(
palmtx_io_desc
));
}
/* setup udc GPIOs initial state */
static
void
__init
palmtx_udc_init
(
void
)
{
if
(
!
gpio_request
(
GPIO_NR_PALMTX_USB_PULLUP
,
"UDC Vbus"
))
{
gpio_direction_output
(
GPIO_NR_PALMTX_USB_PULLUP
,
1
);
gpio_free
(
GPIO_NR_PALMTX_USB_PULLUP
);
}
}
static
void
__init
palmtx_init
(
void
)
{
pxa2xx_mfp_config
(
ARRAY_AND_SIZE
(
palmtx_pin_config
));
pxa_set_ffuart_info
(
NULL
);
pxa_set_btuart_info
(
NULL
);
pxa_set_stuart_info
(
NULL
);
palmtx_pm_init
();
set_pxa_fb_info
(
&
palmtx_lcd_screen
);
pxa_set_mci_info
(
&
palmtx_mci_platform_data
);
palmtx_udc_init
();
pxa_set_ac97_info
(
&
palmtx_ac97_pdata
);
pxa_set_ficp_info
(
&
palmtx_ficp_platform_data
);
pxa_set_keypad_info
(
&
palmtx_keypad_platform_data
);
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
palm27x_mmc_init
(
GPIO_NR_PALMTX_SD_DETECT_N
,
GPIO_NR_PALMTX_SD_READONLY
,
GPIO_NR_PALMTX_SD_POWER
,
0
);
palm27x_pm_init
(
PALMTX_STR_BASE
);
palm27x_lcd_init
(
-
1
,
&
palm_320x480_lcd_mode
);
palm27x_udc_init
(
GPIO_NR_PALMTX_USB_DETECT_N
,
GPIO_NR_PALMTX_USB_PULLUP
,
1
);
palm27x_irda_init
(
GPIO_NR_PALMTX_IR_DISABLE
);
palm27x_ac97_init
(
PALMTX_BAT_MIN_VOLTAGE
,
PALMTX_BAT_MAX_VOLTAGE
,
GPIO_NR_PALMTX_EARPHONE_DETECT
,
95
);
palm27x_pwm_init
(
GPIO_NR_PALMTX_BL_POWER
,
GPIO_NR_PALMTX_LCD_POWER
);
palm27x_power_init
(
GPIO_NR_PALMTX_POWER_DETECT
,
-
1
);
palm27x_pmic_init
();
palmtx_kpc_init
();
palmtx_keys_init
();
palmtx_nor_init
();
palmtx_nand_init
();
}
MACHINE_START
(
PALMTX
,
"Palm T|X"
)
...
...
arch/arm/mach-pxa/palmz72.c
View file @
31620e21
...
...
@@ -44,6 +44,7 @@
#include <mach/pxa27x_keypad.h>
#include <mach/udc.h>
#include <mach/palmasoc.h>
#include <mach/palm27x.h>
#include <mach/pm.h>
...
...
@@ -108,22 +109,10 @@ static unsigned long palmz72_pin_config[] __initdata = {
GPIO27_GPIO
,
/* WM9712 IRQ */
};
/******************************************************************************
* SD/MMC card controller
******************************************************************************/
/* SD_POWER is not actually power, but it is more like chip
* select, i.e. it is inverted */
static
struct
pxamci_platform_data
palmz72_mci_platform_data
=
{
.
ocr_mask
=
MMC_VDD_32_33
|
MMC_VDD_33_34
,
.
gpio_card_detect
=
GPIO_NR_PALMZ72_SD_DETECT_N
,
.
gpio_card_ro
=
GPIO_NR_PALMZ72_SD_RO
,
.
gpio_power
=
GPIO_NR_PALMZ72_SD_POWER_N
,
.
gpio_power_invert
=
1
,
};
/******************************************************************************
* GPIO keyboard
******************************************************************************/
#if defined(CONFIG_KEYBOARD_PXA27x) || defined(CONFIG_KEYBOARD_PXA27x_MODULE)
static
unsigned
int
palmz72_matrix_keys
[]
=
{
KEY
(
0
,
0
,
KEY_POWER
),
KEY
(
0
,
1
,
KEY_F1
),
...
...
@@ -149,77 +138,18 @@ static struct pxa27x_keypad_platform_data palmz72_keypad_platform_data = {
.
debounce_interval
=
30
,
};
/******************************************************************************
* Backlight
******************************************************************************/
static
int
palmz72_backlight_init
(
struct
device
*
dev
)
static
void
__init
palmz72_kpc_init
(
void
)
{
int
ret
;
ret
=
gpio_request
(
GPIO_NR_PALMZ72_BL_POWER
,
"BL POWER"
);
if
(
ret
)
goto
err
;
ret
=
gpio_direction_output
(
GPIO_NR_PALMZ72_BL_POWER
,
0
);
if
(
ret
)
goto
err2
;
ret
=
gpio_request
(
GPIO_NR_PALMZ72_LCD_POWER
,
"LCD POWER"
);
if
(
ret
)
goto
err2
;
ret
=
gpio_direction_output
(
GPIO_NR_PALMZ72_LCD_POWER
,
0
);
if
(
ret
)
goto
err3
;
return
0
;
err3:
gpio_free
(
GPIO_NR_PALMZ72_LCD_POWER
);
err2:
gpio_free
(
GPIO_NR_PALMZ72_BL_POWER
);
err:
return
ret
;
}
static
int
palmz72_backlight_notify
(
struct
device
*
dev
,
int
brightness
)
{
gpio_set_value
(
GPIO_NR_PALMZ72_BL_POWER
,
brightness
);
gpio_set_value
(
GPIO_NR_PALMZ72_LCD_POWER
,
brightness
);
return
brightness
;
}
static
void
palmz72_backlight_exit
(
struct
device
*
dev
)
{
gpio_free
(
GPIO_NR_PALMZ72_BL_POWER
);
gpio_free
(
GPIO_NR_PALMZ72_LCD_POWER
);
pxa_set_keypad_info
(
&
palmz72_keypad_platform_data
);
}
static
struct
platform_pwm_backlight_data
palmz72_backlight_data
=
{
.
pwm_id
=
0
,
.
max_brightness
=
PALMZ72_MAX_INTENSITY
,
.
dft_brightness
=
PALMZ72_MAX_INTENSITY
,
.
pwm_period_ns
=
PALMZ72_PERIOD_NS
,
.
init
=
palmz72_backlight_init
,
.
notify
=
palmz72_backlight_notify
,
.
exit
=
palmz72_backlight_exit
,
};
static
struct
platform_device
palmz72_backlight
=
{
.
name
=
"pwm-backlight"
,
.
dev
=
{
.
parent
=
&
pxa27x_device_pwm0
.
dev
,
.
platform_data
=
&
palmz72_backlight_data
,
},
};
/******************************************************************************
* IrDA
******************************************************************************/
static
struct
pxaficp_platform_data
palmz72_ficp_platform_data
=
{
.
gpio_pwdown
=
GPIO_NR_PALMZ72_IR_DISABLE
,
.
transceiver_cap
=
IR_SIRMODE
|
IR_OFF
,
};
#else
static
inline
void
palmz72_kpc_init
(
void
)
{}
#endif
/******************************************************************************
* LEDs
******************************************************************************/
#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE)
static
struct
gpio_led
gpio_leds
[]
=
{
{
.
name
=
"palmz72:green:led"
,
...
...
@@ -241,144 +171,13 @@ static struct platform_device palmz72_leds = {
}
};
/******************************************************************************
* UDC
******************************************************************************/
static
struct
gpio_vbus_mach_info
palmz72_udc_info
=
{
.
gpio_vbus
=
GPIO_NR_PALMZ72_USB_DETECT_N
,
.
gpio_pullup
=
GPIO_NR_PALMZ72_USB_PULLUP
,
};
static
struct
platform_device
palmz72_gpio_vbus
=
{
.
name
=
"gpio-vbus"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
palmz72_udc_info
,
},
};
/******************************************************************************
* Power supply
******************************************************************************/
static
int
power_supply_init
(
struct
device
*
dev
)
{
int
ret
;
ret
=
gpio_request
(
GPIO_NR_PALMZ72_POWER_DETECT
,
"CABLE_STATE_AC"
);
if
(
ret
)
goto
err1
;
ret
=
gpio_direction_input
(
GPIO_NR_PALMZ72_POWER_DETECT
);
if
(
ret
)
goto
err2
;
ret
=
gpio_request
(
GPIO_NR_PALMZ72_USB_DETECT_N
,
"CABLE_STATE_USB"
);
if
(
ret
)
goto
err2
;
ret
=
gpio_direction_input
(
GPIO_NR_PALMZ72_USB_DETECT_N
);
if
(
ret
)
goto
err3
;
return
0
;
err3:
gpio_free
(
GPIO_NR_PALMZ72_USB_DETECT_N
);
err2:
gpio_free
(
GPIO_NR_PALMZ72_POWER_DETECT
);
err1:
return
ret
;
}
static
int
palmz72_is_ac_online
(
void
)
{
return
gpio_get_value
(
GPIO_NR_PALMZ72_POWER_DETECT
);
}
static
int
palmz72_is_usb_online
(
void
)
static
void
__init
palmz72_leds_init
(
void
)
{
return
!
gpio_get_value
(
GPIO_NR_PALMZ72_USB_DETECT_N
);
platform_device_register
(
&
palmz72_leds
);
}
static
void
power_supply_exit
(
struct
device
*
dev
)
{
gpio_free
(
GPIO_NR_PALMZ72_USB_DETECT_N
);
gpio_free
(
GPIO_NR_PALMZ72_POWER_DETECT
);
}
static
char
*
palmz72_supplicants
[]
=
{
"main-battery"
,
};
static
struct
pda_power_pdata
power_supply_info
=
{
.
init
=
power_supply_init
,
.
is_ac_online
=
palmz72_is_ac_online
,
.
is_usb_online
=
palmz72_is_usb_online
,
.
exit
=
power_supply_exit
,
.
supplied_to
=
palmz72_supplicants
,
.
num_supplicants
=
ARRAY_SIZE
(
palmz72_supplicants
),
};
static
struct
platform_device
power_supply
=
{
.
name
=
"pda-power"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
power_supply_info
,
},
};
/******************************************************************************
* WM97xx audio, battery
******************************************************************************/
static
struct
wm97xx_batt_pdata
palmz72_batt_pdata
=
{
.
batt_aux
=
WM97XX_AUX_ID3
,
.
temp_aux
=
WM97XX_AUX_ID2
,
.
charge_gpio
=
-
1
,
.
max_voltage
=
PALMZ72_BAT_MAX_VOLTAGE
,
.
min_voltage
=
PALMZ72_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"
,
};
static
struct
wm97xx_pdata
palmz72_wm97xx_pdata
=
{
.
batt_pdata
=
&
palmz72_batt_pdata
,
};
static
pxa2xx_audio_ops_t
palmz72_ac97_pdata
=
{
.
codec_pdata
=
{
&
palmz72_wm97xx_pdata
,
},
};
static
struct
platform_device
palmz72_asoc
=
{
.
name
=
"palm27x-asoc"
,
.
id
=
-
1
,
};
/******************************************************************************
* Framebuffer
******************************************************************************/
static
struct
pxafb_mode_info
palmz72_lcd_modes
[]
=
{
{
.
pixclock
=
115384
,
.
xres
=
320
,
.
yres
=
320
,
.
bpp
=
16
,
.
left_margin
=
27
,
.
right_margin
=
7
,
.
upper_margin
=
7
,
.
lower_margin
=
8
,
.
hsync_len
=
6
,
.
vsync_len
=
1
,
},
};
static
struct
pxafb_mach_info
palmz72_lcd_screen
=
{
.
modes
=
palmz72_lcd_modes
,
.
num_modes
=
ARRAY_SIZE
(
palmz72_lcd_modes
),
.
lcd_conn
=
LCD_COLOR_TFT_16BPP
|
LCD_PCLK_EDGE_FALL
,
};
#else
static
inline
void
palmz72_leds_init
(
void
)
{}
#endif
#ifdef CONFIG_PM
...
...
@@ -457,39 +256,26 @@ device_initcall(palmz72_pm_init);
/******************************************************************************
* Machine init
******************************************************************************/
static
struct
platform_device
*
devices
[]
__initdata
=
{
&
palmz72_backlight
,
&
palmz72_leds
,
&
palmz72_asoc
,
&
power_supply
,
&
palmz72_gpio_vbus
,
};
/* setup udc GPIOs initial state */
static
void
__init
palmz72_udc_init
(
void
)
{
if
(
!
gpio_request
(
GPIO_NR_PALMZ72_USB_PULLUP
,
"USB Pullup"
))
{
gpio_direction_output
(
GPIO_NR_PALMZ72_USB_PULLUP
,
0
);
gpio_free
(
GPIO_NR_PALMZ72_USB_PULLUP
);
}
}
static
void
__init
palmz72_init
(
void
)
{
pxa2xx_mfp_config
(
ARRAY_AND_SIZE
(
palmz72_pin_config
));
pxa_set_ffuart_info
(
NULL
);
pxa_set_btuart_info
(
NULL
);
pxa_set_stuart_info
(
NULL
);
set_pxa_fb_info
(
&
palmz72_lcd_screen
);
pxa_set_mci_info
(
&
palmz72_mci_platform_data
);
palmz72_udc_init
();
pxa_set_ac97_info
(
&
palmz72_ac97_pdata
);
pxa_set_ficp_info
(
&
palmz72_ficp_platform_data
);
pxa_set_keypad_info
(
&
palmz72_keypad_platform_data
);
platform_add_devices
(
devices
,
ARRAY_SIZE
(
devices
));
palm27x_mmc_init
(
GPIO_NR_PALMZ72_SD_DETECT_N
,
GPIO_NR_PALMZ72_SD_RO
,
GPIO_NR_PALMZ72_SD_POWER_N
,
1
);
palm27x_lcd_init
(
-
1
,
&
palm_320x320_lcd_mode
);
palm27x_udc_init
(
GPIO_NR_PALMZ72_USB_DETECT_N
,
GPIO_NR_PALMZ72_USB_PULLUP
,
0
);
palm27x_irda_init
(
GPIO_NR_PALMZ72_IR_DISABLE
);
palm27x_ac97_init
(
PALMZ72_BAT_MIN_VOLTAGE
,
PALMZ72_BAT_MAX_VOLTAGE
,
-
1
,
113
);
palm27x_pwm_init
(
-
1
,
-
1
);
palm27x_power_init
(
-
1
,
-
1
);
palm27x_pmic_init
();
palmz72_kpc_init
();
palmz72_leds_init
();
}
MACHINE_START
(
PALMZ72
,
"Palm Zire72"
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment