2008-08-19 12:14:21 +01:00
/*
* Hardware definitions for the Toshiba eseries PDAs
*
* Copyright ( c ) 2003 Ian Molton < spyro @ f2s . com >
*
* This file is licensed under
* the terms of the GNU General Public License version 2. This program
* is licensed " as is " without any warranty of any kind , whether express
* or implied .
*
*/
# include <linux/kernel.h>
# include <linux/init.h>
2008-08-19 13:01:28 +01:00
# include <linux/device.h>
# include <linux/platform_device.h>
# include <linux/fb.h>
2008-09-26 13:38:59 +01:00
# include <linux/mfd/tc6393xb.h>
2008-08-19 13:01:28 +01:00
# include <video/w100fb.h>
2008-08-19 12:14:21 +01:00
# include <asm/setup.h>
# include <asm/mach/arch.h>
# include <asm/mach-types.h>
2009-01-02 23:17:22 +08:00
# include <mach/pxa25x.h>
2008-09-26 13:38:59 +01:00
# include <mach/eseries-gpio.h>
2008-08-19 13:34:56 +01:00
# include <mach/udc.h>
2008-08-24 19:21:26 +01:00
# include <mach/irda.h>
[ARM] fix AT91, davinci, h720x, ks8695, msm, mx2, mx3, netx, omap1, omap2, pxa, s3c
arch/arm/mach-at91/at91cap9.c:337: error: 'NR_AIC_IRQS' undeclared here (not in a function)
arch/arm/mach-at91/at91rm9200.c:301: error: 'NR_AIC_IRQS' undeclared here (not in a function)
arch/arm/mach-at91/at91sam9260.c:351: error: 'NR_AIC_IRQS' undeclared here (not in a function)
arch/arm/mach-at91/at91sam9261.c:287: error: 'NR_AIC_IRQS' undeclared here (not in a function)
arch/arm/mach-at91/at91sam9263.c:312: error: 'NR_AIC_IRQS' undeclared here (not in a function)
arch/arm/mach-at91/at91sam9rl.c:304: error: 'NR_AIC_IRQS' undeclared here (not in a function)
arch/arm/mach-h720x/h7202-eval.c:38: error: implicit declaration of function 'IRQ_CHAINED_GPIOB'
arch/arm/mach-ks8695/devices.c:46: error: 'KS8695_IRQ_WAN_RX_STATUS' undeclared here (not in a function)
arch/arm/mach-msm/devices.c:28: error: 'INT_UART1' undeclared here (not in a function)
arch/arm/mach-mx2/devices.c:233: error: 'MXC_GPIO_IRQ_START' undeclared here (not in a function)
arch/arm/mach-mx3/devices.c:128: error: 'MXC_GPIO_IRQ_START' undeclared here (not in a function)
arch/arm/mach-omap1/mcbsp.c:140: error: 'INT_730_McBSP1RX' undeclared here (not in a function)
arch/arm/mach-omap1/mcbsp.c:165: error: 'INT_McBSP1RX' undeclared here (not in a function)
arch/arm/mach-omap1/mcbsp.c:200: error: 'INT_McBSP1RX' undeclared here (not in a function)
arch/arm/mach-omap2/board-apollon.c:286: error: implicit declaration of function 'omap_set_gpio_direction'
arch/arm/mach-omap2/mcbsp.c:154: error: 'INT_24XX_MCBSP1_IRQ_RX' undeclared here (not in a function)
arch/arm/mach-omap2/mcbsp.c:181: error: 'INT_24XX_MCBSP1_IRQ_RX' undeclared here (not in a function)
arch/arm/mach-pxa/e350.c:36: error: 'IRQ_BOARD_START' undeclared here (not in a function)
arch/arm/plat-s3c/dev-i2c0.c:32: error: 'IRQ_IIC' undeclared here (not in a function)
...
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2009-01-08 10:01:47 +00:00
# include <mach/irqs.h>
2009-04-03 12:45:49 +01:00
# include <mach/audio.h>
2008-08-19 12:14:21 +01:00
# include "generic.h"
# include "eseries.h"
2008-09-26 13:38:59 +01:00
# include "clock.h"
2008-08-19 12:14:21 +01:00
2008-08-19 13:01:28 +01:00
/* ---------------------- E750 LCD definitions -------------------- */
static struct w100_gen_regs e750_lcd_regs = {
. lcd_format = 0x00008003 ,
. lcdd_cntl1 = 0x00000000 ,
. lcdd_cntl2 = 0x0003ffff ,
. genlcd_cntl1 = 0x00fff003 ,
. genlcd_cntl2 = 0x003c0f03 ,
. genlcd_cntl3 = 0x000143aa ,
} ;
static struct w100_mode e750_lcd_mode = {
. xres = 240 ,
. yres = 320 ,
. left_margin = 21 ,
. right_margin = 22 ,
. upper_margin = 5 ,
. lower_margin = 4 ,
. crtc_ss = 0x80150014 ,
. crtc_ls = 0x8014000d ,
. crtc_gs = 0xc1000005 ,
. crtc_vpos_gs = 0x00020147 ,
. crtc_rev = 0x0040010a ,
. crtc_dclk = 0xa1700030 ,
. crtc_gclk = 0x80cc0015 ,
. crtc_goe = 0x80cc0015 ,
. crtc_ps1_active = 0x61060017 ,
. pll_freq = 57 ,
. pixclk_divider = 4 ,
. pixclk_divider_rotated = 4 ,
. pixclk_src = CLK_SRC_XTAL ,
. sysclk_divider = 1 ,
. sysclk_src = CLK_SRC_PLL ,
} ;
static struct w100_gpio_regs e750_w100_gpio_info = {
. init_data1 = 0x01192f1b ,
. gpio_dir1 = 0xd5ffdeff ,
. gpio_oe1 = 0x000020bf ,
. init_data2 = 0x010f010f ,
. gpio_dir2 = 0xffffffff ,
. gpio_oe2 = 0x000001cf ,
} ;
static struct w100fb_mach_info e750_fb_info = {
. modelist = & e750_lcd_mode ,
. num_modes = 1 ,
. regs = & e750_lcd_regs ,
. gpio = & e750_w100_gpio_info ,
. xtal_freq = 14318000 ,
. xtal_dbl = 1 ,
} ;
static struct resource e750_fb_resources [ ] = {
[ 0 ] = {
. start = 0x0c000000 ,
. end = 0x0cffffff ,
. flags = IORESOURCE_MEM ,
} ,
} ;
static struct platform_device e750_fb_device = {
. name = " w100fb " ,
. id = - 1 ,
. dev = {
. platform_data = & e750_fb_info ,
} ,
. num_resources = ARRAY_SIZE ( e750_fb_resources ) ,
. resource = e750_fb_resources ,
} ;
2008-12-30 23:22:41 +00:00
/* -------------------- e750 MFP parameters -------------------- */
static unsigned long e750_pin_config [ ] __initdata = {
/* Chip selects */
GPIO15_nCS_1 , /* CS1 - Flash */
GPIO79_nCS_3 , /* CS3 - IMAGEON */
GPIO80_nCS_4 , /* CS4 - TMIO */
/* Clocks */
GPIO11_3_6MHz ,
/* BTUART */
GPIO42_BTUART_RXD ,
GPIO43_BTUART_TXD ,
GPIO44_BTUART_CTS ,
/* TMIO controller */
GPIO19_GPIO , /* t7l66xb #PCLR */
GPIO45_GPIO , /* t7l66xb #SUSPEND (NOT BTUART!) */
/* UDC */
GPIO13_GPIO ,
GPIO3_GPIO ,
/* IrDA */
GPIO38_GPIO | MFP_LPM_DRIVE_HIGH ,
2009-01-08 21:03:55 +00:00
/* Audio power control */
GPIO4_GPIO , /* Headphone amp power */
GPIO7_GPIO , /* Speaker amp power */
GPIO37_GPIO , /* Headphone detect */
2008-12-30 23:22:41 +00:00
/* PC Card */
GPIO8_GPIO , /* CD0 */
GPIO44_GPIO , /* CD1 */
GPIO11_GPIO , /* IRQ0 */
GPIO6_GPIO , /* IRQ1 */
GPIO27_GPIO , /* RST0 */
GPIO24_GPIO , /* RST1 */
GPIO20_GPIO , /* PWR0 */
GPIO23_GPIO , /* PWR1 */
GPIO48_nPOE ,
GPIO49_nPWE ,
GPIO50_nPIOR ,
GPIO51_nPIOW ,
GPIO52_nPCE_1 ,
GPIO53_nPCE_2 ,
GPIO54_nPSKTSEL ,
GPIO55_nPREG ,
GPIO56_nPWAIT ,
GPIO57_nIOIS16 ,
/* wakeup */
GPIO0_GPIO | WAKEUP_ON_EDGE_RISE ,
} ;
2008-09-26 13:38:59 +01:00
/* ----------------- e750 tc6393xb parameters ------------------ */
static struct tc6393xb_platform_data e750_tc6393xb_info = {
. irq_base = IRQ_BOARD_START ,
. scr_pll2cr = 0x0cc1 ,
. scr_gper = 0 ,
. gpio_base = - 1 ,
. suspend = & eseries_tmio_suspend ,
. resume = & eseries_tmio_resume ,
. enable = & eseries_tmio_enable ,
. disable = & eseries_tmio_disable ,
} ;
static struct platform_device e750_tc6393xb_device = {
. name = " tc6393xb " ,
. id = - 1 ,
. dev = {
. platform_data = & e750_tc6393xb_info ,
} ,
. num_resources = 2 ,
. resource = eseries_tmio_resources ,
} ;
/* ------------------------------------------------------------- */
2008-08-19 13:01:28 +01:00
static struct platform_device * devices [ ] __initdata = {
& e750_fb_device ,
2008-09-26 13:38:59 +01:00
& e750_tc6393xb_device ,
2008-08-19 13:01:28 +01:00
} ;
static void __init e750_init ( void )
{
2008-12-30 23:22:41 +00:00
pxa2xx_mfp_config ( ARRAY_AND_SIZE ( e750_pin_config ) ) ;
2009-03-05 18:17:53 +03:00
clk_add_alias ( " CLK_CK3P6MI " , e750_tc6393xb_device . name ,
2008-09-26 13:38:59 +01:00
" GPIO11_CLK " , NULL ) ,
eseries_get_tmio_gpios ( ) ;
2008-08-19 13:01:28 +01:00
platform_add_devices ( devices , ARRAY_SIZE ( devices ) ) ;
2008-08-19 13:34:56 +01:00
pxa_set_udc_info ( & e7xx_udc_mach_info ) ;
2009-04-03 12:45:49 +01:00
pxa_set_ac97_info ( NULL ) ;
2008-08-24 19:21:26 +01:00
e7xx_irda_init ( ) ;
pxa_set_ficp_info ( & e7xx_ficp_platform_data ) ;
2008-08-19 13:01:28 +01:00
}
2008-08-19 12:14:21 +01:00
MACHINE_START ( E750 , " Toshiba e750 " )
/* Maintainer: Ian Molton (spyro@f2s.com) */
. phys_io = 0x40000000 ,
. io_pg_offst = ( io_p2v ( 0x40000000 ) > > 18 ) & 0xfffc ,
. boot_params = 0xa0000100 ,
. map_io = pxa_map_io ,
. init_irq = pxa25x_init_irq ,
. fixup = eseries_fixup ,
2008-08-19 13:01:28 +01:00
. init_machine = e750_init ,
2008-08-19 12:14:21 +01:00
. timer = & pxa_timer ,
MACHINE_END