diff options
Diffstat (limited to 'arch/arm/mach-versatile/core.c')
| -rw-r--r-- | arch/arm/mach-versatile/core.c | 35 | 
1 files changed, 33 insertions, 2 deletions
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c index 3dff8641b03..e38acb0f89c 100644 --- a/arch/arm/mach-versatile/core.c +++ b/arch/arm/mach-versatile/core.c @@ -28,6 +28,7 @@  #include <linux/amba/clcd.h>  #include <linux/amba/pl061.h>  #include <linux/amba/mmci.h> +#include <linux/amba/pl022.h>  #include <linux/io.h>  #include <linux/gfp.h> @@ -354,6 +355,21 @@ static struct mmci_platform_data mmc0_plat_data = {  	.gpio_cd	= -1,  }; +static struct resource char_lcd_resources[] = { +	{ +		.start = VERSATILE_CHAR_LCD_BASE, +		.end   = (VERSATILE_CHAR_LCD_BASE + SZ_4K - 1), +		.flags = IORESOURCE_MEM, +	}, +}; + +static struct platform_device char_lcd_device = { +	.name           =       "arm-charlcd", +	.id             =       -1, +	.num_resources  =       ARRAY_SIZE(char_lcd_resources), +	.resource       =       char_lcd_resources, +}; +  /*   * Clock handling   */ @@ -400,8 +416,13 @@ static struct clk ref24_clk = {  	.rate	= 24000000,  }; +static struct clk dummy_apb_pclk; +  static struct clk_lookup lookups[] = { -	{	/* UART0 */ +	{	/* AMBA bus clock */ +		.con_id		= "apb_pclk", +		.clk		= &dummy_apb_pclk, +	}, {	/* UART0 */  		.dev_id		= "dev:f1",  		.clk		= &ref24_clk,  	}, {	/* UART1 */ @@ -425,6 +446,9 @@ static struct clk_lookup lookups[] = {  	}, {	/* MMC1 */  		.dev_id		= "fpga:0b",  		.clk		= &ref24_clk, +	}, {	/* SSP */ +		.dev_id		= "dev:f4", +		.clk		= &ref24_clk,  	}, {	/* CLCD */  		.dev_id		= "dev:20",  		.clk		= &osc4_clk, @@ -703,6 +727,12 @@ static struct pl061_platform_data gpio1_plat_data = {  	.irq_base	= IRQ_GPIO1_START,  }; +static struct pl022_ssp_controller ssp0_plat_data = { +	.bus_id = 0, +	.enable_dma = 0, +	.num_chipselect = 1, +}; +  #define AACI_IRQ	{ IRQ_AACI, NO_IRQ }  #define AACI_DMA	{ 0x80, 0x81 }  #define MMCI0_IRQ	{ IRQ_MMCI0A,IRQ_SIC_MMCI0B } @@ -772,7 +802,7 @@ AMBA_DEVICE(sci0,  "dev:f0",  SCI,      NULL);  AMBA_DEVICE(uart0, "dev:f1",  UART0,    NULL);  AMBA_DEVICE(uart1, "dev:f2",  UART1,    NULL);  AMBA_DEVICE(uart2, "dev:f3",  UART2,    NULL); -AMBA_DEVICE(ssp0,  "dev:f4",  SSP,      NULL); +AMBA_DEVICE(ssp0,  "dev:f4",  SSP,      &ssp0_plat_data);  static struct amba_device *amba_devs[] __initdata = {  	&dmac_device, @@ -843,6 +873,7 @@ void __init versatile_init(void)  	platform_device_register(&versatile_flash_device);  	platform_device_register(&versatile_i2c_device);  	platform_device_register(&smc91x_device); +	platform_device_register(&char_lcd_device);  	for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {  		struct amba_device *d = amba_devs[i];  | 
