forked from Minki/linux
80748fb8ff
The tosa, e740, e750, e800 and mioa701 all use AC97 audio codecs but does not register the platform device for the AC97 controller. Doing so is now required by ASoC. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> Acked-by: Ian Molton <ian@mnementh.co.uk> Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr> Signed-off-by: Eric Miao <eric.miao@marvell.com>
218 lines
5.2 KiB
C
218 lines
5.2 KiB
C
/*
|
|
* 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>
|
|
#include <linux/device.h>
|
|
#include <linux/platform_device.h>
|
|
#include <linux/fb.h>
|
|
#include <linux/clk.h>
|
|
#include <linux/mfd/t7l66xb.h>
|
|
|
|
#include <video/w100fb.h>
|
|
|
|
#include <asm/setup.h>
|
|
#include <asm/mach/arch.h>
|
|
#include <asm/mach-types.h>
|
|
|
|
#include <mach/pxa25x.h>
|
|
#include <mach/eseries-gpio.h>
|
|
#include <mach/udc.h>
|
|
#include <mach/irda.h>
|
|
#include <mach/irqs.h>
|
|
#include <mach/audio.h>
|
|
|
|
#include "generic.h"
|
|
#include "eseries.h"
|
|
#include "clock.h"
|
|
#include "devices.h"
|
|
|
|
/* ------------------------ e740 video support --------------------------- */
|
|
|
|
static struct w100_gen_regs e740_lcd_regs = {
|
|
.lcd_format = 0x00008023,
|
|
.lcdd_cntl1 = 0x0f000000,
|
|
.lcdd_cntl2 = 0x0003ffff,
|
|
.genlcd_cntl1 = 0x00ffff03,
|
|
.genlcd_cntl2 = 0x003c0f03,
|
|
.genlcd_cntl3 = 0x000143aa,
|
|
};
|
|
|
|
static struct w100_mode e740_lcd_mode = {
|
|
.xres = 240,
|
|
.yres = 320,
|
|
.left_margin = 20,
|
|
.right_margin = 28,
|
|
.upper_margin = 9,
|
|
.lower_margin = 8,
|
|
.crtc_ss = 0x80140013,
|
|
.crtc_ls = 0x81150110,
|
|
.crtc_gs = 0x80050005,
|
|
.crtc_vpos_gs = 0x000a0009,
|
|
.crtc_rev = 0x0040010a,
|
|
.crtc_dclk = 0xa906000a,
|
|
.crtc_gclk = 0x80050108,
|
|
.crtc_goe = 0x80050108,
|
|
.pll_freq = 57,
|
|
.pixclk_divider = 4,
|
|
.pixclk_divider_rotated = 4,
|
|
.pixclk_src = CLK_SRC_XTAL,
|
|
.sysclk_divider = 1,
|
|
.sysclk_src = CLK_SRC_PLL,
|
|
.crtc_ps1_active = 0x41060010,
|
|
};
|
|
|
|
static struct w100_gpio_regs e740_w100_gpio_info = {
|
|
.init_data1 = 0x21002103,
|
|
.gpio_dir1 = 0xffffdeff,
|
|
.gpio_oe1 = 0x03c00643,
|
|
.init_data2 = 0x003f003f,
|
|
.gpio_dir2 = 0xffffffff,
|
|
.gpio_oe2 = 0x000000ff,
|
|
};
|
|
|
|
static struct w100fb_mach_info e740_fb_info = {
|
|
.modelist = &e740_lcd_mode,
|
|
.num_modes = 1,
|
|
.regs = &e740_lcd_regs,
|
|
.gpio = &e740_w100_gpio_info,
|
|
.xtal_freq = 14318000,
|
|
.xtal_dbl = 1,
|
|
};
|
|
|
|
static struct resource e740_fb_resources[] = {
|
|
[0] = {
|
|
.start = 0x0c000000,
|
|
.end = 0x0cffffff,
|
|
.flags = IORESOURCE_MEM,
|
|
},
|
|
};
|
|
|
|
static struct platform_device e740_fb_device = {
|
|
.name = "w100fb",
|
|
.id = -1,
|
|
.dev = {
|
|
.platform_data = &e740_fb_info,
|
|
},
|
|
.num_resources = ARRAY_SIZE(e740_fb_resources),
|
|
.resource = e740_fb_resources,
|
|
};
|
|
|
|
/* --------------------------- MFP Pin config -------------------------- */
|
|
|
|
static unsigned long e740_pin_config[] __initdata = {
|
|
/* Chip selects */
|
|
GPIO15_nCS_1, /* CS1 - Flash */
|
|
GPIO79_nCS_3, /* CS3 - IMAGEON */
|
|
GPIO80_nCS_4, /* CS4 - TMIO */
|
|
|
|
/* Clocks */
|
|
GPIO12_32KHz,
|
|
|
|
/* 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,
|
|
|
|
/* Audio power control */
|
|
GPIO16_GPIO, /* AC97 codec AVDD2 supply (analogue power) */
|
|
GPIO40_GPIO, /* Mic amp power */
|
|
GPIO41_GPIO, /* Headphone amp power */
|
|
|
|
/* 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,
|
|
};
|
|
|
|
/* -------------------- e740 t7l66xb parameters -------------------- */
|
|
|
|
static struct t7l66xb_platform_data e740_t7l66xb_info = {
|
|
.irq_base = IRQ_BOARD_START,
|
|
.enable = &eseries_tmio_enable,
|
|
.suspend = &eseries_tmio_suspend,
|
|
.resume = &eseries_tmio_resume,
|
|
};
|
|
|
|
static struct platform_device e740_t7l66xb_device = {
|
|
.name = "t7l66xb",
|
|
.id = -1,
|
|
.dev = {
|
|
.platform_data = &e740_t7l66xb_info,
|
|
},
|
|
.num_resources = 2,
|
|
.resource = eseries_tmio_resources,
|
|
};
|
|
|
|
/* ----------------------------------------------------------------------- */
|
|
|
|
static struct platform_device *devices[] __initdata = {
|
|
&e740_fb_device,
|
|
&e740_t7l66xb_device,
|
|
};
|
|
|
|
static void __init e740_init(void)
|
|
{
|
|
pxa2xx_mfp_config(ARRAY_AND_SIZE(e740_pin_config));
|
|
eseries_register_clks();
|
|
clk_add_alias("CLK_CK48M", e740_t7l66xb_device.name,
|
|
"UDCCLK", &pxa25x_device_udc.dev),
|
|
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);
|
|
}
|
|
|
|
MACHINE_START(E740, "Toshiba e740")
|
|
/* 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,
|
|
.init_machine = e740_init,
|
|
.timer = &pxa_timer,
|
|
MACHINE_END
|
|
|