@ -40,7 +40,7 @@
# include <asm/arch/pxa-regs.h>
# include <asm/arch/pxa2xx-regs.h>
# include <asm/arch/pxa2xx-gpio .h>
# include <asm/arch/mfp-pxa27x .h>
# include <asm/arch/mainstone.h>
# include <asm/arch/audio.h>
# include <asm/arch/pxafb.h>
@ -51,6 +51,81 @@
# include "generic.h"
# include "devices.h"
static unsigned long mainstone_pin_config [ ] = {
/* Chip Select */
GPIO15_nCS_1 ,
/* LCD - 16bpp Active TFT */
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 ,
GPIO16_PWM0_OUT , /* Backlight */
/* MMC */
GPIO32_MMC_CLK ,
GPIO112_MMC_CMD ,
GPIO92_MMC_DAT_0 ,
GPIO109_MMC_DAT_1 ,
GPIO110_MMC_DAT_2 ,
GPIO111_MMC_DAT_3 ,
/* USB Host Port 1 */
GPIO88_USBH1_PWR ,
GPIO89_USBH1_PEN ,
/* PC Card */
GPIO48_nPOE ,
GPIO49_nPWE ,
GPIO50_nPIOR ,
GPIO51_nPIOW ,
GPIO85_nPCE_1 ,
GPIO54_nPCE_2 ,
GPIO79_PSKTSEL ,
GPIO55_nPREG ,
GPIO56_nPWAIT ,
GPIO57_nIOIS16 ,
/* AC97 */
GPIO45_AC97_SYSCLK ,
/* Keypad */
GPIO93_KP_DKIN_0 | WAKEUP_ON_LEVEL_HIGH ,
GPIO94_KP_DKIN_1 | WAKEUP_ON_LEVEL_HIGH ,
GPIO95_KP_DKIN_2 | WAKEUP_ON_LEVEL_HIGH ,
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 ,
GPIO98_KP_MKIN_4 | WAKEUP_ON_LEVEL_HIGH ,
GPIO99_KP_MKIN_5 | WAKEUP_ON_LEVEL_HIGH ,
GPIO103_KP_MKOUT_0 ,
GPIO104_KP_MKOUT_1 ,
GPIO105_KP_MKOUT_2 ,
GPIO106_KP_MKOUT_3 ,
GPIO107_KP_MKOUT_4 ,
GPIO108_KP_MKOUT_5 ,
GPIO96_KP_MKOUT_6 ,
/* GPIO */
GPIO1_GPIO | WAKEUP_ON_EDGE_BOTH ,
} ;
static unsigned long mainstone_irq_enabled ;
@ -279,13 +354,13 @@ static int mainstone_backlight_update_status(struct backlight_device *bl)
bl - > props . fb_blank ! = FB_BLANK_UNBLANK )
brightness = 0 ;
if ( brightness ! = 0 ) {
pxa_gpio_mode ( GPIO16_PWM0_MD ) ;
if ( brightness ! = 0 )
pxa_set_cken ( CKEN_PWM0 , 1 ) ;
}
PWM_CTRL0 = 0 ;
PWM_PWDUTY0 = brightness ;
PWM_PERVAL0 = bl - > props . max_brightness ;
if ( brightness = = 0 )
pxa_set_cken ( CKEN_PWM0 , 0 ) ;
return 0 ; /* pointless return value */
@ -363,16 +438,6 @@ static int mainstone_mci_init(struct device *dev, irq_handler_t mstone_detect_in
{
int err ;
/*
* setup GPIO for PXA27x MMC controller
*/
pxa_gpio_mode ( GPIO32_MMCCLK_MD ) ;
pxa_gpio_mode ( GPIO112_MMCCMD_MD ) ;
pxa_gpio_mode ( GPIO92_MMCDAT0_MD ) ;
pxa_gpio_mode ( GPIO109_MMCDAT1_MD ) ;
pxa_gpio_mode ( GPIO110_MMCDAT2_MD ) ;
pxa_gpio_mode ( GPIO111_MMCDAT3_MD ) ;
/* make sure SD/Memory Stick multiplexer's signals
* are routed to MMC controller
*/
@ -444,10 +509,6 @@ static struct platform_device *platform_devices[] __initdata = {
static int mainstone_ohci_init ( struct device * dev )
{
/* setup Port1 GPIO pin. */
pxa_gpio_mode ( 88 | GPIO_ALT_FN_1_IN ) ; /* USBHPWR1 */
pxa_gpio_mode ( 89 | GPIO_ALT_FN_2_OUT ) ; /* USBHPEN1 */
/* Set the Power Control Polarity Low and Power Sense
Polarity Low to active low . */
UHCHR = ( UHCHR | UHCHR_PCPL | UHCHR_PSPL ) &
@ -465,6 +526,8 @@ static void __init mainstone_init(void)
{
int SW7 = 0 ; /* FIXME: get from SCR (Mst doc section 3.2.1.1) */
pxa2xx_mfp_config ( ARRAY_AND_SIZE ( mainstone_pin_config ) ) ;
mst_flash_data [ 0 ] . width = ( BOOT_DEF & 1 ) ? 2 : 4 ;
mst_flash_data [ 1 ] . width = 4 ;
@ -481,31 +544,6 @@ static void __init mainstone_init(void)
*/
ARB_CNTRL = ARB_CORE_PARK | 0x234 ;
/*
* On Mainstone , we route AC97_SYSCLK via GPIO45 to
* the audio daughter card
*/
pxa_gpio_mode ( GPIO45_SYSCLK_AC97_MD ) ;
GPSR ( GPIO48_nPOE ) =
GPIO_bit ( GPIO48_nPOE ) |
GPIO_bit ( GPIO49_nPWE ) |
GPIO_bit ( GPIO50_nPIOR ) |
GPIO_bit ( GPIO51_nPIOW ) |
GPIO_bit ( GPIO85_nPCE_1 ) |
GPIO_bit ( GPIO54_nPCE_2 ) ;
pxa_gpio_mode ( GPIO48_nPOE_MD ) ;
pxa_gpio_mode ( GPIO49_nPWE_MD ) ;
pxa_gpio_mode ( GPIO50_nPIOR_MD ) ;
pxa_gpio_mode ( GPIO51_nPIOW_MD ) ;
pxa_gpio_mode ( GPIO85_nPCE_1_MD ) ;
pxa_gpio_mode ( GPIO54_nPCE_2_MD ) ;
pxa_gpio_mode ( GPIO79_pSKTSEL_MD ) ;
pxa_gpio_mode ( GPIO55_nPREG_MD ) ;
pxa_gpio_mode ( GPIO56_nPWAIT_MD ) ;
pxa_gpio_mode ( GPIO57_nIOIS16_MD ) ;
platform_add_devices ( platform_devices , ARRAY_SIZE ( platform_devices ) ) ;
/* reading Mainstone's "Virtual Configuration Register"
@ -538,23 +576,9 @@ static void __init mainstone_map_io(void)
pxa_map_io ( ) ;
iotable_init ( mainstone_io_desc , ARRAY_SIZE ( mainstone_io_desc ) ) ;
/* initialize sleep mode regs (wake-up sources, etc) */
PGSR0 = 0x00008800 ;
PGSR1 = 0x00000002 ;
PGSR2 = 0x0001FC00 ;
PGSR3 = 0x00001F81 ;
PWER = 0xC0000002 ;
PRER = 0x00000002 ;
PFER = 0x00000002 ;
/* for use I SRAM as framebuffer. */
PSLR | = 0xF04 ;
PCFR = 0x66 ;
/* For Keypad wakeup. */
KPC & = ~ KPC_ASACT ;
KPC | = KPC_AS ;
PKWR = 0x000FD000 ;
/* Need read PKWR back after set it. */
PKWR ;
}
MACHINE_START ( MAINSTONE , " Intel HCDDBBVA0 Development Platform (aka Mainstone) " )