From eab5cfa065c94389b72d84670b6197ae60ccb235 Mon Sep 17 00:00:00 2001 From: Darius Augulis Date: Wed, 28 Jul 2010 23:03:43 +0300 Subject: ARM: S3C64XX: Support for Real6410 Add support for CoreWind Real6410 board, based on Samsung s3c6410 processor. Signed-off-by: Darius Augulis Signed-off-by: Ben Dooks --- arch/arm/mach-s3c64xx/Kconfig | 6 +++ arch/arm/mach-s3c64xx/Makefile | 1 + arch/arm/mach-s3c64xx/mach-real6410.c | 86 +++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 arch/arm/mach-s3c64xx/mach-real6410.c (limited to 'arch/arm/mach-s3c64xx') diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig index f5a59727949..0f9f2dd9dd4 100644 --- a/arch/arm/mach-s3c64xx/Kconfig +++ b/arch/arm/mach-s3c64xx/Kconfig @@ -88,6 +88,12 @@ config MACH_ANW6410 help Machine support for the A&W6410 +config MACH_REAL6410 + bool "REAL6410" + select CPU_S3C6410 + help + Machine support for the CoreWind REAL6410 + config MACH_SMDK6410 bool "SMDK6410" select CPU_S3C6410 diff --git a/arch/arm/mach-s3c64xx/Makefile b/arch/arm/mach-s3c64xx/Makefile index 9d1006938f5..6be3e5b2300 100644 --- a/arch/arm/mach-s3c64xx/Makefile +++ b/arch/arm/mach-s3c64xx/Makefile @@ -50,6 +50,7 @@ obj-$(CONFIG_PM) += irq-pm.o obj-$(CONFIG_MACH_ANW6410) += mach-anw6410.o obj-$(CONFIG_MACH_SMDK6400) += mach-smdk6400.o obj-$(CONFIG_MACH_SMDK6410) += mach-smdk6410.o +obj-$(CONFIG_MACH_REAL6410) += mach-real6410.o obj-$(CONFIG_MACH_NCP) += mach-ncp.o obj-$(CONFIG_MACH_HMT) += mach-hmt.o obj-$(CONFIG_MACH_SMARTQ) += mach-smartq.o diff --git a/arch/arm/mach-s3c64xx/mach-real6410.c b/arch/arm/mach-s3c64xx/mach-real6410.c new file mode 100644 index 00000000000..04a472a79f3 --- /dev/null +++ b/arch/arm/mach-s3c64xx/mach-real6410.c @@ -0,0 +1,86 @@ +/* linux/arch/arm/mach-s3c64xx/mach-real6410.c + * + * Copyright 2010 Darius Augulis + * Copyright 2008 Openmoko, Inc. + * Copyright 2008 Simtec Electronics + * Ben Dooks + * http://armlinux.simtec.co.uk/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define UCON S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK +#define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB +#define UFCON S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE + +static struct s3c2410_uartcfg real6410_uartcfgs[] __initdata = { + [0] = { + .hwport = 0, + .flags = 0, + .ucon = UCON, + .ulcon = ULCON, + .ufcon = UFCON, + }, + [1] = { + .hwport = 1, + .flags = 0, + .ucon = UCON, + .ulcon = ULCON, + .ufcon = UFCON, + }, + [2] = { + .hwport = 2, + .flags = 0, + .ucon = UCON, + .ulcon = ULCON, + .ufcon = UFCON, + }, + [3] = { + .hwport = 3, + .flags = 0, + .ucon = UCON, + .ulcon = ULCON, + .ufcon = UFCON, + }, +}; + +static void __init real6410_map_io(void) +{ + s3c64xx_init_io(NULL, 0); + s3c24xx_init_clocks(12000000); + s3c24xx_init_uarts(real6410_uartcfgs, ARRAY_SIZE(real6410_uartcfgs)); +} + +static void __init real6410_machine_init(void) +{ +} + +MACHINE_START(REAL6410, "REAL6410") + /* Maintainer: Darius Augulis */ + .phys_io = S3C_PA_UART & 0xfff00000, + .io_pg_offst = (((u32)S3C_VA_UART) >> 18) & 0xfffc, + .boot_params = S3C64XX_PA_SDRAM + 0x100, + + .init_irq = s3c6410_init_irq, + .map_io = real6410_map_io, + .init_machine = real6410_machine_init, + .timer = &s3c24xx_timer, +MACHINE_END -- cgit v1.2.3-70-g09d2 From ff266c0c91942cf56b03675ac5fc820b1ac600e1 Mon Sep 17 00:00:00 2001 From: Darius Augulis Date: Sun, 1 Aug 2010 23:38:43 +0300 Subject: ARM: mach-real6410: add dm9000 ethernet support for mach-real6410 This patch is based on "[PATCH v2] Support for Real6410" Signed-off-by: Darius Augulis Signed-off-by: Ben Dooks --- arch/arm/mach-s3c64xx/mach-real6410.c | 63 +++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) (limited to 'arch/arm/mach-s3c64xx') diff --git a/arch/arm/mach-s3c64xx/mach-real6410.c b/arch/arm/mach-s3c64xx/mach-real6410.c index 04a472a79f3..1a0485ad4da 100644 --- a/arch/arm/mach-s3c64xx/mach-real6410.c +++ b/arch/arm/mach-s3c64xx/mach-real6410.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -24,6 +25,7 @@ #include #include #include +#include #include #include @@ -62,6 +64,44 @@ static struct s3c2410_uartcfg real6410_uartcfgs[] __initdata = { }, }; +/* DM9000AEP 10/100 ethernet controller */ + +static struct resource real6410_dm9k_resource[] = { + [0] = { + .start = S3C64XX_PA_XM0CSN1, + .end = S3C64XX_PA_XM0CSN1 + 1, + .flags = IORESOURCE_MEM + }, + [1] = { + .start = S3C64XX_PA_XM0CSN1 + 4, + .end = S3C64XX_PA_XM0CSN1 + 5, + .flags = IORESOURCE_MEM + }, + [2] = { + .start = S3C_EINT(7), + .end = S3C_EINT(7), + .flags = IORESOURCE_IRQ, + } +}; + +static struct dm9000_plat_data real6410_dm9k_pdata = { + .flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM), +}; + +static struct platform_device real6410_device_eth = { + .name = "dm9000", + .id = -1, + .num_resources = ARRAY_SIZE(real6410_dm9k_resource), + .resource = real6410_dm9k_resource, + .dev = { + .platform_data = &real6410_dm9k_pdata, + }, +}; + +static struct platform_device *real6410_devices[] __initdata = { + &real6410_device_eth, +}; + static void __init real6410_map_io(void) { s3c64xx_init_io(NULL, 0); @@ -71,6 +111,29 @@ static void __init real6410_map_io(void) static void __init real6410_machine_init(void) { + u32 cs1; + + /* configure nCS1 width to 16 bits */ + + cs1 = __raw_readl(S3C64XX_SROM_BW) & + ~(S3C64XX_SROM_BW__CS_MASK << S3C64XX_SROM_BW__NCS1__SHIFT); + cs1 |= ((1 << S3C64XX_SROM_BW__DATAWIDTH__SHIFT) | + (1 << S3C64XX_SROM_BW__WAITENABLE__SHIFT) | + (1 << S3C64XX_SROM_BW__BYTEENABLE__SHIFT)) << + S3C64XX_SROM_BW__NCS1__SHIFT; + __raw_writel(cs1, S3C64XX_SROM_BW); + + /* set timing for nCS1 suitable for ethernet chip */ + + __raw_writel((0 << S3C64XX_SROM_BCX__PMC__SHIFT) | + (6 << S3C64XX_SROM_BCX__TACP__SHIFT) | + (4 << S3C64XX_SROM_BCX__TCAH__SHIFT) | + (1 << S3C64XX_SROM_BCX__TCOH__SHIFT) | + (13 << S3C64XX_SROM_BCX__TACC__SHIFT) | + (4 << S3C64XX_SROM_BCX__TCOS__SHIFT) | + (0 << S3C64XX_SROM_BCX__TACS__SHIFT), S3C64XX_SROM_BC1); + + platform_add_devices(real6410_devices, ARRAY_SIZE(real6410_devices)); } MACHINE_START(REAL6410, "REAL6410") -- cgit v1.2.3-70-g09d2 From ce611d7b98eec03b2b1036ac55b7604b268154d8 Mon Sep 17 00:00:00 2001 From: Darius Augulis Date: Mon, 2 Aug 2010 01:39:25 +0300 Subject: ARM: mach-real6410: add sdhc device support Register SHDCI devices Signed-off-by: Darius Augulis [ben-linux@fluff.org: rewrite header[ Signed-off-by: Ben Dooks --- arch/arm/mach-s3c64xx/Kconfig | 3 +++ arch/arm/mach-s3c64xx/mach-real6410.c | 3 +++ 2 files changed, 6 insertions(+) (limited to 'arch/arm/mach-s3c64xx') diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig index 0f9f2dd9dd4..f5c77e5d3d8 100644 --- a/arch/arm/mach-s3c64xx/Kconfig +++ b/arch/arm/mach-s3c64xx/Kconfig @@ -91,6 +91,9 @@ config MACH_ANW6410 config MACH_REAL6410 bool "REAL6410" select CPU_S3C6410 + select S3C_DEV_HSMMC + select S3C_DEV_HSMMC1 + select S3C64XX_SETUP_SDHCI help Machine support for the CoreWind REAL6410 diff --git a/arch/arm/mach-s3c64xx/mach-real6410.c b/arch/arm/mach-s3c64xx/mach-real6410.c index 1a0485ad4da..5c07d013b23 100644 --- a/arch/arm/mach-s3c64xx/mach-real6410.c +++ b/arch/arm/mach-s3c64xx/mach-real6410.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #define UCON S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK @@ -100,6 +101,8 @@ static struct platform_device real6410_device_eth = { static struct platform_device *real6410_devices[] __initdata = { &real6410_device_eth, + &s3c_device_hsmmc0, + &s3c_device_hsmmc1, }; static void __init real6410_map_io(void) -- cgit v1.2.3-70-g09d2 From 49f91b9ed14f6c2dd90d99c65a2ab47bd93652b1 Mon Sep 17 00:00:00 2001 From: Maurus Cuelenaere Date: Fri, 13 Aug 2010 21:17:52 +0200 Subject: ARM: S3C64XX: Move SmartQ LCD control platform definition to shared file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This shares the common LCD control platform definition used in the SmartQ 5 and 7. This also corrects it as a GPIO bitbanged SPI device instead of an I²C one, which was wrong. Signed-off-by: Maurus Cuelenaere Signed-off-by: Ben Dooks --- arch/arm/mach-s3c64xx/mach-smartq.c | 32 ++++++++++++++++++++++++++++++-- arch/arm/mach-s3c64xx/mach-smartq5.c | 28 ---------------------------- arch/arm/mach-s3c64xx/mach-smartq7.c | 28 ---------------------------- 3 files changed, 30 insertions(+), 58 deletions(-) (limited to 'arch/arm/mach-s3c64xx') diff --git a/arch/arm/mach-s3c64xx/mach-smartq.c b/arch/arm/mach-s3c64xx/mach-smartq.c index 028d080dcd3..54309dad3e0 100644 --- a/arch/arm/mach-s3c64xx/mach-smartq.c +++ b/arch/arm/mach-s3c64xx/mach-smartq.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -184,6 +185,33 @@ static struct s3c_hwmon_pdata smartq_hwmon_pdata __initdata = { }, }; +static int __init smartq_lcd_setup_gpio(void) +{ + int ret; + + ret = gpio_request(S3C64XX_GPM(3), "LCD power"); + if (ret < 0) + return ret; + + /* turn power off */ + gpio_direction_output(S3C64XX_GPM(3), 0); + + return 0; +} + +/* GPM0 -> CS */ +static struct spi_gpio_platform_data smartq_lcd_control = { + .sck = S3C64XX_GPM(1), + .mosi = S3C64XX_GPM(2), + .miso = S3C64XX_GPM(2), +}; + +static struct platform_device smartq_lcd_control_device = { + .name = "spi-gpio", + .id = 1, + .dev.platform_data = &smartq_lcd_control, +}; + static void smartq_lcd_power_set(struct plat_lcd_data *pd, unsigned int power) { gpio_direction_output(S3C64XX_GPM(3), power); @@ -199,7 +227,6 @@ static struct platform_device smartq_lcd_power_device = { .dev.platform_data = &smartq_lcd_power_data, }; - static struct platform_device *smartq_devices[] __initdata = { &s3c_device_hsmmc1, /* Init iNAND first, ... */ &s3c_device_hsmmc0, /* ... then the external SD card */ @@ -214,6 +241,7 @@ static struct platform_device *smartq_devices[] __initdata = { &s3c_device_ts, &s3c_device_usb_hsotg, &smartq_backlight_device, + &smartq_lcd_control_device, &smartq_lcd_power_device, &smartq_usb_otg_vbus_dev, }; @@ -252,7 +280,6 @@ static int __init smartq_power_off_init(void) /* leave power on */ gpio_direction_output(S3C64XX_GPK(15), 0); - pm_power_off = smartq_power_off; return ret; @@ -354,6 +381,7 @@ void __init smartq_machine_init(void) s3c_sdhci2_set_platdata(&smartq_internal_hsmmc_pdata); s3c24xx_ts_set_platdata(&smartq_touchscreen_pdata); + WARN_ON(smartq_lcd_setup_gpio()); WARN_ON(smartq_power_off_init()); WARN_ON(smartq_usb_host_init()); WARN_ON(smartq_usb_otg_init()); diff --git a/arch/arm/mach-s3c64xx/mach-smartq5.c b/arch/arm/mach-s3c64xx/mach-smartq5.c index 1d0326ead90..82a9043d1fa 100644 --- a/arch/arm/mach-s3c64xx/mach-smartq5.c +++ b/arch/arm/mach-s3c64xx/mach-smartq5.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include @@ -33,31 +32,6 @@ #include "mach-smartq.h" -static void __init smartq5_lcd_setup_gpio(void) -{ - gpio_request(S3C64XX_GPM(0), "LCD SCEN pin"); - gpio_request(S3C64XX_GPM(1), "LCD SCL pin"); - gpio_request(S3C64XX_GPM(2), "LCD SDA pin"); - gpio_request(S3C64XX_GPM(3), "LCD power"); - - /* turn power off */ - gpio_direction_output(S3C64XX_GPM(0), 1); - gpio_direction_input(S3C64XX_GPM(1)); - gpio_direction_input(S3C64XX_GPM(2)); - gpio_direction_output(S3C64XX_GPM(3), 0); -} - -static struct i2c_gpio_platform_data smartq5_lcd_control = { - .sda_pin = S3C64XX_GPM(2), - .scl_pin = S3C64XX_GPM(1), -}; - -static struct platform_device smartq5_lcd_control_device = { - .name = "i2c-gpio", - .id = 1, - .dev.platform_data = &smartq5_lcd_control, -}; - static struct gpio_led smartq5_leds[] __initdata = { { .name = "smartq5:green", @@ -160,7 +134,6 @@ static struct s3c_fb_platdata smartq5_lcd_pdata __initdata = { static struct platform_device *smartq5_devices[] __initdata = { &smartq5_leds_device, &smartq5_buttons_device, - &smartq5_lcd_control_device, }; static void __init smartq5_machine_init(void) @@ -168,7 +141,6 @@ static void __init smartq5_machine_init(void) s3c_fb_set_platdata(&smartq5_lcd_pdata); smartq_machine_init(); - smartq5_lcd_setup_gpio(); platform_add_devices(smartq5_devices, ARRAY_SIZE(smartq5_devices)); } diff --git a/arch/arm/mach-s3c64xx/mach-smartq7.c b/arch/arm/mach-s3c64xx/mach-smartq7.c index e0bc78ecb15..c4868dbd2fe 100644 --- a/arch/arm/mach-s3c64xx/mach-smartq7.c +++ b/arch/arm/mach-s3c64xx/mach-smartq7.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include @@ -33,31 +32,6 @@ #include "mach-smartq.h" -static void __init smartq7_lcd_setup_gpio(void) -{ - gpio_request(S3C64XX_GPM(0), "LCD CSB pin"); - gpio_request(S3C64XX_GPM(3), "LCD power"); - gpio_request(S3C64XX_GPM(4), "LCD power status"); - - /* turn power off */ - gpio_direction_output(S3C64XX_GPM(0), 1); - gpio_direction_output(S3C64XX_GPM(3), 0); - gpio_direction_input(S3C64XX_GPM(4)); -} - -static struct i2c_gpio_platform_data smartq7_lcd_control = { - .sda_pin = S3C64XX_GPM(2), - .scl_pin = S3C64XX_GPM(1), - .sda_is_open_drain = 1, - .scl_is_open_drain = 1, -}; - -static struct platform_device smartq7_lcd_control_device = { - .name = "i2c-gpio", - .id = 1, - .dev.platform_data = &smartq7_lcd_control, -}; - static struct gpio_led smartq7_leds[] __initdata = { { .name = "smartq7:red", @@ -176,7 +150,6 @@ static struct s3c_fb_platdata smartq7_lcd_pdata __initdata = { static struct platform_device *smartq7_devices[] __initdata = { &smartq7_leds_device, &smartq7_buttons_device, - &smartq7_lcd_control_device, }; static void __init smartq7_machine_init(void) @@ -184,7 +157,6 @@ static void __init smartq7_machine_init(void) s3c_fb_set_platdata(&smartq7_lcd_pdata); smartq_machine_init(); - smartq7_lcd_setup_gpio(); platform_add_devices(smartq7_devices, ARRAY_SIZE(smartq7_devices)); } -- cgit v1.2.3-70-g09d2 From eeda5fcb4fa13c7f9b76cb872f561bdba08ca6fd Mon Sep 17 00:00:00 2001 From: Maurus Cuelenaere Date: Fri, 13 Aug 2010 21:17:54 +0200 Subject: ARM: S3C64XX: Set wifi and iNAND as permanently connected SD devices on SmartQ boards This patch changes the platform data definitions of the wifi and iNAND chip on the SmartQ 5 and 7 to indicate that they don't have a CD line available and are thus hard-wired to the SDHCI data lines. Signed-off-by: Maurus Cuelenaere Signed-off-by: Ben Dooks --- arch/arm/mach-s3c64xx/mach-smartq.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'arch/arm/mach-s3c64xx') diff --git a/arch/arm/mach-s3c64xx/mach-smartq.c b/arch/arm/mach-s3c64xx/mach-smartq.c index 54309dad3e0..20ddce68992 100644 --- a/arch/arm/mach-s3c64xx/mach-smartq.c +++ b/arch/arm/mach-s3c64xx/mach-smartq.c @@ -167,7 +167,7 @@ static struct s3c2410_ts_mach_info smartq_touchscreen_pdata __initdata = { static struct s3c_sdhci_platdata smartq_internal_hsmmc_pdata = { .max_width = 4, - /*.broken_card_detection = true,*/ + .cd_type = S3C_SDHCI_CD_PERMANENT, }; static struct s3c_hwmon_pdata smartq_hwmon_pdata __initdata = { -- cgit v1.2.3-70-g09d2 From 08ee000b51fc8a4b5e88c478a860f4a689be20b5 Mon Sep 17 00:00:00 2001 From: Patrick Georgi Date: Fri, 13 Aug 2010 21:17:56 +0200 Subject: ARM: S3C64XX: Framebuffer fix for SmartQ5 The following change makes the framebuffer work on SmartQ5. There are still some problems with ADC, so this patch alone won't make the device run (or even give a working fb), but it's one issue less to think about. Signed-off-by: Patrick Georgi Signed-off-by: Maurus Cuelenaere Signed-off-by: Ben Dooks --- arch/arm/mach-s3c64xx/mach-smartq5.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'arch/arm/mach-s3c64xx') diff --git a/arch/arm/mach-s3c64xx/mach-smartq5.c b/arch/arm/mach-s3c64xx/mach-smartq5.c index 82a9043d1fa..70bcbcac4f0 100644 --- a/arch/arm/mach-s3c64xx/mach-smartq5.c +++ b/arch/arm/mach-s3c64xx/mach-smartq5.c @@ -110,10 +110,10 @@ static struct s3c_fb_pd_win smartq5_fb_win0 = { .win_mode = { .pixclock = 1000000000000ULL / ((40+1+216+800)*(10+1+35+480)*80), - .left_margin = 40, - .right_margin = 216, - .upper_margin = 10, - .lower_margin = 35, + .left_margin = 216, + .right_margin = 40, + .upper_margin = 35, + .lower_margin = 10, .hsync_len = 1, .vsync_len = 1, .xres = 800, -- cgit v1.2.3-70-g09d2 From 4e13c0ea2ca076068fa2dff20709434d6f41e1ce Mon Sep 17 00:00:00 2001 From: Maurus Cuelenaere Date: Fri, 13 Aug 2010 21:17:59 +0200 Subject: ARM: S3C64XX: Add audio support to SmartQ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This adds the I²C board information for the WM8987 used in the SmartQ as audio codec and adds the I²C/I²S platform drivers. Signed-off-by: Maurus Cuelenaere Signed-off-by: Ben Dooks --- arch/arm/mach-s3c64xx/mach-smartq.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'arch/arm/mach-s3c64xx') diff --git a/arch/arm/mach-s3c64xx/mach-smartq.c b/arch/arm/mach-s3c64xx/mach-smartq.c index 20ddce68992..3a9639bc3d9 100644 --- a/arch/arm/mach-s3c64xx/mach-smartq.c +++ b/arch/arm/mach-s3c64xx/mach-smartq.c @@ -227,6 +227,10 @@ static struct platform_device smartq_lcd_power_device = { .dev.platform_data = &smartq_lcd_power_data, }; +static struct i2c_board_info smartq_i2c_devs[] __initdata = { + { I2C_BOARD_INFO("wm8987", 0x1a), }, +}; + static struct platform_device *smartq_devices[] __initdata = { &s3c_device_hsmmc1, /* Init iNAND first, ... */ &s3c_device_hsmmc0, /* ... then the external SD card */ @@ -240,6 +244,7 @@ static struct platform_device *smartq_devices[] __initdata = { &s3c_device_timer[1], &s3c_device_ts, &s3c_device_usb_hsotg, + &s3c64xx_device_iis0, &smartq_backlight_device, &smartq_lcd_control_device, &smartq_lcd_power_device, @@ -381,6 +386,9 @@ void __init smartq_machine_init(void) s3c_sdhci2_set_platdata(&smartq_internal_hsmmc_pdata); s3c24xx_ts_set_platdata(&smartq_touchscreen_pdata); + i2c_register_board_info(0, smartq_i2c_devs, + ARRAY_SIZE(smartq_i2c_devs)); + WARN_ON(smartq_lcd_setup_gpio()); WARN_ON(smartq_power_off_init()); WARN_ON(smartq_usb_host_init()); -- cgit v1.2.3-70-g09d2 From 46d0ad37838016e1f7c2cd46ebceb1976e3a3236 Mon Sep 17 00:00:00 2001 From: Ben Dooks Date: Mon, 26 Jul 2010 10:54:00 +0100 Subject: ARM: S3C64XX: Update consistent DMA size to 8MiB Change the area available for consitent DMA allocations from the default to 8MiB to allow drivers such as the framebuffer to get more memory (for situations where larger virtual screen resolutions are needed). Signed-off-by: Ben Dooks --- arch/arm/mach-s3c64xx/include/mach/memory.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'arch/arm/mach-s3c64xx') diff --git a/arch/arm/mach-s3c64xx/include/mach/memory.h b/arch/arm/mach-s3c64xx/include/mach/memory.h index a3ac84a6548..42cc54e2ee3 100644 --- a/arch/arm/mach-s3c64xx/include/mach/memory.h +++ b/arch/arm/mach-s3c64xx/include/mach/memory.h @@ -15,4 +15,6 @@ #define PHYS_OFFSET UL(0x50000000) +#define CONSISTENT_DMA_SIZE SZ_8M + #endif -- cgit v1.2.3-70-g09d2 From 001ca74f185f32bd8383146f9ffedd2de9b882ed Mon Sep 17 00:00:00 2001 From: Ben Dooks Date: Mon, 26 Jul 2010 10:56:40 +0100 Subject: ARM: SMDK6410: Make virtual screen twice depth of real For situations where double buffering is needed (such as the current Android) make the screen virtual y size twice the LCD size so that there is space for a second screen that can be switched to. Signed-off-by: Ben Dooks --- arch/arm/mach-s3c64xx/mach-smdk6410.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'arch/arm/mach-s3c64xx') diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c b/arch/arm/mach-s3c64xx/mach-smdk6410.c index d9a03555f88..ed9296f678a 100644 --- a/arch/arm/mach-s3c64xx/mach-smdk6410.c +++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c @@ -153,6 +153,8 @@ static struct s3c_fb_pd_win smdk6410_fb_win0 = { }, .max_bpp = 32, .default_bpp = 16, + .virtual_y = 480 * 2, + .virtual_x = 800, }; /* 405566 clocks per frame => 60Hz refresh requires 24333960Hz clock */ -- cgit v1.2.3-70-g09d2 From d92342df2a06baa8f5d7bf609b0bc0dc87067e82 Mon Sep 17 00:00:00 2001 From: Linus Walleij Date: Mon, 9 Aug 2010 12:47:52 +0200 Subject: DMAENGINE: correct PL080 register header file This PL008 among all other variables named PL080 doesn't seem right. Fix it. Also add some missing defined that I use in the new PL08x driver. Acked-by: Ben Dooks Signed-off-by: Linus Walleij Signed-off-by: Ben Dooks --- arch/arm/include/asm/hardware/pl080.h | 4 +++- arch/arm/mach-s3c64xx/dma.c | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'arch/arm/mach-s3c64xx') diff --git a/arch/arm/include/asm/hardware/pl080.h b/arch/arm/include/asm/hardware/pl080.h index 6a6c66be7f6..f35b86e68dd 100644 --- a/arch/arm/include/asm/hardware/pl080.h +++ b/arch/arm/include/asm/hardware/pl080.h @@ -43,7 +43,7 @@ /* Per channel configuration registers */ -#define PL008_Cx_STRIDE (0x20) +#define PL080_Cx_STRIDE (0x20) #define PL080_Cx_BASE(x) ((0x100 + (x * 0x20))) #define PL080_Cx_SRC_ADDR(x) ((0x100 + (x * 0x20))) #define PL080_Cx_DST_ADDR(x) ((0x104 + (x * 0x20))) @@ -68,6 +68,8 @@ #define PL080_CONTROL_TC_IRQ_EN (1 << 31) #define PL080_CONTROL_PROT_MASK (0x7 << 28) #define PL080_CONTROL_PROT_SHIFT (28) +#define PL080_CONTROL_PROT_CACHE (1 << 30) +#define PL080_CONTROL_PROT_BUFF (1 << 29) #define PL080_CONTROL_PROT_SYS (1 << 28) #define PL080_CONTROL_DST_INCR (1 << 27) #define PL080_CONTROL_SRC_INCR (1 << 26) diff --git a/arch/arm/mach-s3c64xx/dma.c b/arch/arm/mach-s3c64xx/dma.c index 5567e037b0d..e7d03ab41d8 100644 --- a/arch/arm/mach-s3c64xx/dma.c +++ b/arch/arm/mach-s3c64xx/dma.c @@ -697,7 +697,7 @@ static int s3c64xx_dma_init1(int chno, enum dma_ch chbase, chptr->number = chno; chptr->dmac = dmac; chptr->regs = regptr; - regptr += PL008_Cx_STRIDE; + regptr += PL080_Cx_STRIDE; } /* for the moment, permanently enable the controller */ -- cgit v1.2.3-70-g09d2