Merge branch 'next-samsung-cleanup' into next-samsung-devel-2
This commit is contained in:
@@ -113,22 +113,7 @@ menu "EXYNOS4 Machines"
|
|||||||
|
|
||||||
config MACH_SMDKC210
|
config MACH_SMDKC210
|
||||||
bool "SMDKC210"
|
bool "SMDKC210"
|
||||||
select CPU_EXYNOS4210
|
select MACH_SMDKV310
|
||||||
select S5P_DEV_FIMD0
|
|
||||||
select S3C_DEV_RTC
|
|
||||||
select S3C_DEV_WDT
|
|
||||||
select S3C_DEV_I2C1
|
|
||||||
select S3C_DEV_HSMMC
|
|
||||||
select S3C_DEV_HSMMC1
|
|
||||||
select S3C_DEV_HSMMC2
|
|
||||||
select S3C_DEV_HSMMC3
|
|
||||||
select SAMSUNG_DEV_PWM
|
|
||||||
select SAMSUNG_DEV_BACKLIGHT
|
|
||||||
select EXYNOS4_DEV_PD
|
|
||||||
select EXYNOS4_DEV_SYSMMU
|
|
||||||
select EXYNOS4_SETUP_FIMD0
|
|
||||||
select EXYNOS4_SETUP_I2C1
|
|
||||||
select EXYNOS4_SETUP_SDHCI
|
|
||||||
help
|
help
|
||||||
Machine support for Samsung SMDKC210
|
Machine support for Samsung SMDKC210
|
||||||
|
|
||||||
|
@@ -25,7 +25,7 @@ obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
|
|||||||
|
|
||||||
# machine support
|
# machine support
|
||||||
|
|
||||||
obj-$(CONFIG_MACH_SMDKC210) += mach-smdkc210.o
|
obj-$(CONFIG_MACH_SMDKC210) += mach-smdkv310.o
|
||||||
obj-$(CONFIG_MACH_SMDKV310) += mach-smdkv310.o
|
obj-$(CONFIG_MACH_SMDKV310) += mach-smdkv310.o
|
||||||
obj-$(CONFIG_MACH_ARMLEX4210) += mach-armlex4210.o
|
obj-$(CONFIG_MACH_ARMLEX4210) += mach-armlex4210.o
|
||||||
obj-$(CONFIG_MACH_UNIVERSAL_C210) += mach-universal_c210.o
|
obj-$(CONFIG_MACH_UNIVERSAL_C210) += mach-universal_c210.o
|
||||||
|
@@ -1,309 +0,0 @@
|
|||||||
/* linux/arch/arm/mach-exynos4/mach-smdkc210.c
|
|
||||||
*
|
|
||||||
* Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
|
|
||||||
* http://www.samsung.com
|
|
||||||
*
|
|
||||||
* 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 <linux/serial_core.h>
|
|
||||||
#include <linux/delay.h>
|
|
||||||
#include <linux/gpio.h>
|
|
||||||
#include <linux/lcd.h>
|
|
||||||
#include <linux/mmc/host.h>
|
|
||||||
#include <linux/platform_device.h>
|
|
||||||
#include <linux/smsc911x.h>
|
|
||||||
#include <linux/io.h>
|
|
||||||
#include <linux/i2c.h>
|
|
||||||
#include <linux/pwm_backlight.h>
|
|
||||||
|
|
||||||
#include <asm/mach/arch.h>
|
|
||||||
#include <asm/mach-types.h>
|
|
||||||
|
|
||||||
#include <video/platform_lcd.h>
|
|
||||||
|
|
||||||
#include <plat/regs-serial.h>
|
|
||||||
#include <plat/regs-srom.h>
|
|
||||||
#include <plat/regs-fb-v4.h>
|
|
||||||
#include <plat/exynos4.h>
|
|
||||||
#include <plat/cpu.h>
|
|
||||||
#include <plat/devs.h>
|
|
||||||
#include <plat/fb.h>
|
|
||||||
#include <plat/sdhci.h>
|
|
||||||
#include <plat/iic.h>
|
|
||||||
#include <plat/pd.h>
|
|
||||||
#include <plat/gpio-cfg.h>
|
|
||||||
#include <plat/backlight.h>
|
|
||||||
|
|
||||||
#include <mach/map.h>
|
|
||||||
|
|
||||||
/* Following are default values for UCON, ULCON and UFCON UART registers */
|
|
||||||
#define SMDKC210_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \
|
|
||||||
S3C2410_UCON_RXILEVEL | \
|
|
||||||
S3C2410_UCON_TXIRQMODE | \
|
|
||||||
S3C2410_UCON_RXIRQMODE | \
|
|
||||||
S3C2410_UCON_RXFIFO_TOI | \
|
|
||||||
S3C2443_UCON_RXERR_IRQEN)
|
|
||||||
|
|
||||||
#define SMDKC210_ULCON_DEFAULT S3C2410_LCON_CS8
|
|
||||||
|
|
||||||
#define SMDKC210_UFCON_DEFAULT (S3C2410_UFCON_FIFOMODE | \
|
|
||||||
S5PV210_UFCON_TXTRIG4 | \
|
|
||||||
S5PV210_UFCON_RXTRIG4)
|
|
||||||
|
|
||||||
static struct s3c2410_uartcfg smdkc210_uartcfgs[] __initdata = {
|
|
||||||
[0] = {
|
|
||||||
.hwport = 0,
|
|
||||||
.flags = 0,
|
|
||||||
.ucon = SMDKC210_UCON_DEFAULT,
|
|
||||||
.ulcon = SMDKC210_ULCON_DEFAULT,
|
|
||||||
.ufcon = SMDKC210_UFCON_DEFAULT,
|
|
||||||
},
|
|
||||||
[1] = {
|
|
||||||
.hwport = 1,
|
|
||||||
.flags = 0,
|
|
||||||
.ucon = SMDKC210_UCON_DEFAULT,
|
|
||||||
.ulcon = SMDKC210_ULCON_DEFAULT,
|
|
||||||
.ufcon = SMDKC210_UFCON_DEFAULT,
|
|
||||||
},
|
|
||||||
[2] = {
|
|
||||||
.hwport = 2,
|
|
||||||
.flags = 0,
|
|
||||||
.ucon = SMDKC210_UCON_DEFAULT,
|
|
||||||
.ulcon = SMDKC210_ULCON_DEFAULT,
|
|
||||||
.ufcon = SMDKC210_UFCON_DEFAULT,
|
|
||||||
},
|
|
||||||
[3] = {
|
|
||||||
.hwport = 3,
|
|
||||||
.flags = 0,
|
|
||||||
.ucon = SMDKC210_UCON_DEFAULT,
|
|
||||||
.ulcon = SMDKC210_ULCON_DEFAULT,
|
|
||||||
.ufcon = SMDKC210_UFCON_DEFAULT,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct s3c_sdhci_platdata smdkc210_hsmmc0_pdata __initdata = {
|
|
||||||
.cd_type = S3C_SDHCI_CD_GPIO,
|
|
||||||
.ext_cd_gpio = EXYNOS4_GPK0(2),
|
|
||||||
.ext_cd_gpio_invert = 1,
|
|
||||||
.clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL,
|
|
||||||
#ifdef CONFIG_EXYNOS4_SDHCI_CH0_8BIT
|
|
||||||
.max_width = 8,
|
|
||||||
.host_caps = MMC_CAP_8_BIT_DATA,
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct s3c_sdhci_platdata smdkc210_hsmmc1_pdata __initdata = {
|
|
||||||
.cd_type = S3C_SDHCI_CD_GPIO,
|
|
||||||
.ext_cd_gpio = EXYNOS4_GPK0(2),
|
|
||||||
.ext_cd_gpio_invert = 1,
|
|
||||||
.clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct s3c_sdhci_platdata smdkc210_hsmmc2_pdata __initdata = {
|
|
||||||
.cd_type = S3C_SDHCI_CD_GPIO,
|
|
||||||
.ext_cd_gpio = EXYNOS4_GPK2(2),
|
|
||||||
.ext_cd_gpio_invert = 1,
|
|
||||||
.clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL,
|
|
||||||
#ifdef CONFIG_EXYNOS4_SDHCI_CH2_8BIT
|
|
||||||
.max_width = 8,
|
|
||||||
.host_caps = MMC_CAP_8_BIT_DATA,
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct s3c_sdhci_platdata smdkc210_hsmmc3_pdata __initdata = {
|
|
||||||
.cd_type = S3C_SDHCI_CD_GPIO,
|
|
||||||
.ext_cd_gpio = EXYNOS4_GPK2(2),
|
|
||||||
.ext_cd_gpio_invert = 1,
|
|
||||||
.clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL,
|
|
||||||
};
|
|
||||||
|
|
||||||
static void lcd_lte480wv_set_power(struct plat_lcd_data *pd,
|
|
||||||
unsigned int power)
|
|
||||||
{
|
|
||||||
if (power) {
|
|
||||||
#if !defined(CONFIG_BACKLIGHT_PWM)
|
|
||||||
gpio_request_one(EXYNOS4_GPD0(1), GPIOF_OUT_INIT_HIGH, "GPD0");
|
|
||||||
gpio_free(EXYNOS4_GPD0(1));
|
|
||||||
#endif
|
|
||||||
/* fire nRESET on power up */
|
|
||||||
gpio_request(EXYNOS4_GPX0(6), "GPX0");
|
|
||||||
|
|
||||||
gpio_direction_output(EXYNOS4_GPX0(6), 1);
|
|
||||||
mdelay(100);
|
|
||||||
|
|
||||||
gpio_set_value(EXYNOS4_GPX0(6), 0);
|
|
||||||
mdelay(10);
|
|
||||||
|
|
||||||
gpio_set_value(EXYNOS4_GPX0(6), 1);
|
|
||||||
mdelay(10);
|
|
||||||
|
|
||||||
gpio_free(EXYNOS4_GPX0(6));
|
|
||||||
} else {
|
|
||||||
#if !defined(CONFIG_BACKLIGHT_PWM)
|
|
||||||
gpio_request_one(EXYNOS4_GPD0(1), GPIOF_OUT_INIT_LOW, "GPD0");
|
|
||||||
gpio_free(EXYNOS4_GPD0(1));
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct plat_lcd_data smdkc210_lcd_lte480wv_data = {
|
|
||||||
.set_power = lcd_lte480wv_set_power,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device smdkc210_lcd_lte480wv = {
|
|
||||||
.name = "platform-lcd",
|
|
||||||
.dev.parent = &s5p_device_fimd0.dev,
|
|
||||||
.dev.platform_data = &smdkc210_lcd_lte480wv_data,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct s3c_fb_pd_win smdkc210_fb_win0 = {
|
|
||||||
.win_mode = {
|
|
||||||
.left_margin = 13,
|
|
||||||
.right_margin = 8,
|
|
||||||
.upper_margin = 7,
|
|
||||||
.lower_margin = 5,
|
|
||||||
.hsync_len = 3,
|
|
||||||
.vsync_len = 1,
|
|
||||||
.xres = 800,
|
|
||||||
.yres = 480,
|
|
||||||
},
|
|
||||||
.max_bpp = 32,
|
|
||||||
.default_bpp = 24,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct s3c_fb_platdata smdkc210_lcd0_pdata __initdata = {
|
|
||||||
.win[0] = &smdkc210_fb_win0,
|
|
||||||
.vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
|
|
||||||
.vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
|
|
||||||
.setup_gpio = exynos4_fimd0_gpio_setup_24bpp,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct resource smdkc210_smsc911x_resources[] = {
|
|
||||||
[0] = {
|
|
||||||
.start = EXYNOS4_PA_SROM_BANK(1),
|
|
||||||
.end = EXYNOS4_PA_SROM_BANK(1) + SZ_64K - 1,
|
|
||||||
.flags = IORESOURCE_MEM,
|
|
||||||
},
|
|
||||||
[1] = {
|
|
||||||
.start = IRQ_EINT(5),
|
|
||||||
.end = IRQ_EINT(5),
|
|
||||||
.flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct smsc911x_platform_config smsc9215_config = {
|
|
||||||
.irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
|
|
||||||
.irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL,
|
|
||||||
.flags = SMSC911X_USE_16BIT | SMSC911X_FORCE_INTERNAL_PHY,
|
|
||||||
.phy_interface = PHY_INTERFACE_MODE_MII,
|
|
||||||
.mac = {0x00, 0x80, 0x00, 0x23, 0x45, 0x67},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device smdkc210_smsc911x = {
|
|
||||||
.name = "smsc911x",
|
|
||||||
.id = -1,
|
|
||||||
.num_resources = ARRAY_SIZE(smdkc210_smsc911x_resources),
|
|
||||||
.resource = smdkc210_smsc911x_resources,
|
|
||||||
.dev = {
|
|
||||||
.platform_data = &smsc9215_config,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct i2c_board_info i2c_devs1[] __initdata = {
|
|
||||||
{I2C_BOARD_INFO("wm8994", 0x1a),},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device *smdkc210_devices[] __initdata = {
|
|
||||||
&s3c_device_hsmmc0,
|
|
||||||
&s3c_device_hsmmc1,
|
|
||||||
&s3c_device_hsmmc2,
|
|
||||||
&s3c_device_hsmmc3,
|
|
||||||
&s3c_device_i2c1,
|
|
||||||
&s3c_device_rtc,
|
|
||||||
&s3c_device_wdt,
|
|
||||||
&exynos4_device_ac97,
|
|
||||||
&exynos4_device_i2s0,
|
|
||||||
&exynos4_device_pd[PD_MFC],
|
|
||||||
&exynos4_device_pd[PD_G3D],
|
|
||||||
&exynos4_device_pd[PD_LCD0],
|
|
||||||
&exynos4_device_pd[PD_LCD1],
|
|
||||||
&exynos4_device_pd[PD_CAM],
|
|
||||||
&exynos4_device_pd[PD_TV],
|
|
||||||
&exynos4_device_pd[PD_GPS],
|
|
||||||
&exynos4_device_sysmmu,
|
|
||||||
&samsung_asoc_dma,
|
|
||||||
&s5p_device_fimd0,
|
|
||||||
&smdkc210_lcd_lte480wv,
|
|
||||||
&smdkc210_smsc911x,
|
|
||||||
};
|
|
||||||
|
|
||||||
static void __init smdkc210_smsc911x_init(void)
|
|
||||||
{
|
|
||||||
u32 cs1;
|
|
||||||
|
|
||||||
/* configure nCS1 width to 16 bits */
|
|
||||||
cs1 = __raw_readl(S5P_SROM_BW) &
|
|
||||||
~(S5P_SROM_BW__CS_MASK << S5P_SROM_BW__NCS1__SHIFT);
|
|
||||||
cs1 |= ((1 << S5P_SROM_BW__DATAWIDTH__SHIFT) |
|
|
||||||
(1 << S5P_SROM_BW__WAITENABLE__SHIFT) |
|
|
||||||
(1 << S5P_SROM_BW__BYTEENABLE__SHIFT)) <<
|
|
||||||
S5P_SROM_BW__NCS1__SHIFT;
|
|
||||||
__raw_writel(cs1, S5P_SROM_BW);
|
|
||||||
|
|
||||||
/* set timing for nCS1 suitable for ethernet chip */
|
|
||||||
__raw_writel((0x1 << S5P_SROM_BCX__PMC__SHIFT) |
|
|
||||||
(0x9 << S5P_SROM_BCX__TACP__SHIFT) |
|
|
||||||
(0xc << S5P_SROM_BCX__TCAH__SHIFT) |
|
|
||||||
(0x1 << S5P_SROM_BCX__TCOH__SHIFT) |
|
|
||||||
(0x6 << S5P_SROM_BCX__TACC__SHIFT) |
|
|
||||||
(0x1 << S5P_SROM_BCX__TCOS__SHIFT) |
|
|
||||||
(0x1 << S5P_SROM_BCX__TACS__SHIFT), S5P_SROM_BC1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* LCD Backlight data */
|
|
||||||
static struct samsung_bl_gpio_info smdkc210_bl_gpio_info = {
|
|
||||||
.no = EXYNOS4_GPD0(1),
|
|
||||||
.func = S3C_GPIO_SFN(2),
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_pwm_backlight_data smdkc210_bl_data = {
|
|
||||||
.pwm_id = 1,
|
|
||||||
.pwm_period_ns = 1000,
|
|
||||||
};
|
|
||||||
|
|
||||||
static void __init smdkc210_map_io(void)
|
|
||||||
{
|
|
||||||
s5p_init_io(NULL, 0, S5P_VA_CHIPID);
|
|
||||||
s3c24xx_init_clocks(24000000);
|
|
||||||
s3c24xx_init_uarts(smdkc210_uartcfgs, ARRAY_SIZE(smdkc210_uartcfgs));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void __init smdkc210_machine_init(void)
|
|
||||||
{
|
|
||||||
s3c_i2c1_set_platdata(NULL);
|
|
||||||
i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
|
|
||||||
|
|
||||||
smdkc210_smsc911x_init();
|
|
||||||
|
|
||||||
s3c_sdhci0_set_platdata(&smdkc210_hsmmc0_pdata);
|
|
||||||
s3c_sdhci1_set_platdata(&smdkc210_hsmmc1_pdata);
|
|
||||||
s3c_sdhci2_set_platdata(&smdkc210_hsmmc2_pdata);
|
|
||||||
s3c_sdhci3_set_platdata(&smdkc210_hsmmc3_pdata);
|
|
||||||
|
|
||||||
samsung_bl_set(&smdkc210_bl_gpio_info, &smdkc210_bl_data);
|
|
||||||
s5p_fimd0_set_platdata(&smdkc210_lcd0_pdata);
|
|
||||||
|
|
||||||
platform_add_devices(smdkc210_devices, ARRAY_SIZE(smdkc210_devices));
|
|
||||||
}
|
|
||||||
|
|
||||||
MACHINE_START(SMDKC210, "SMDKC210")
|
|
||||||
/* Maintainer: Kukjin Kim <kgene.kim@samsung.com> */
|
|
||||||
.boot_params = S5P_PA_SDRAM + 0x100,
|
|
||||||
.init_irq = exynos4_init_irq,
|
|
||||||
.map_io = smdkc210_map_io,
|
|
||||||
.init_machine = smdkc210_machine_init,
|
|
||||||
.timer = &exynos4_timer,
|
|
||||||
MACHINE_END
|
|
@@ -9,7 +9,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/serial_core.h>
|
#include <linux/serial_core.h>
|
||||||
|
#include <linux/delay.h>
|
||||||
#include <linux/gpio.h>
|
#include <linux/gpio.h>
|
||||||
|
#include <linux/lcd.h>
|
||||||
#include <linux/mmc/host.h>
|
#include <linux/mmc/host.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/smsc911x.h>
|
#include <linux/smsc911x.h>
|
||||||
@@ -21,11 +23,14 @@
|
|||||||
#include <asm/mach/arch.h>
|
#include <asm/mach/arch.h>
|
||||||
#include <asm/mach-types.h>
|
#include <asm/mach-types.h>
|
||||||
|
|
||||||
|
#include <video/platform_lcd.h>
|
||||||
#include <plat/regs-serial.h>
|
#include <plat/regs-serial.h>
|
||||||
#include <plat/regs-srom.h>
|
#include <plat/regs-srom.h>
|
||||||
|
#include <plat/regs-fb-v4.h>
|
||||||
#include <plat/exynos4.h>
|
#include <plat/exynos4.h>
|
||||||
#include <plat/cpu.h>
|
#include <plat/cpu.h>
|
||||||
#include <plat/devs.h>
|
#include <plat/devs.h>
|
||||||
|
#include <plat/fb.h>
|
||||||
#include <plat/keypad.h>
|
#include <plat/keypad.h>
|
||||||
#include <plat/sdhci.h>
|
#include <plat/sdhci.h>
|
||||||
#include <plat/iic.h>
|
#include <plat/iic.h>
|
||||||
@@ -112,6 +117,67 @@ static struct s3c_sdhci_platdata smdkv310_hsmmc3_pdata __initdata = {
|
|||||||
.clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL,
|
.clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void lcd_lte480wv_set_power(struct plat_lcd_data *pd,
|
||||||
|
unsigned int power)
|
||||||
|
{
|
||||||
|
if (power) {
|
||||||
|
#if !defined(CONFIG_BACKLIGHT_PWM)
|
||||||
|
gpio_request_one(EXYNOS4_GPD0(1), GPIOF_OUT_INIT_HIGH, "GPD0");
|
||||||
|
gpio_free(EXYNOS4_GPD0(1));
|
||||||
|
#endif
|
||||||
|
/* fire nRESET on power up */
|
||||||
|
gpio_request(EXYNOS4_GPX0(6), "GPX0");
|
||||||
|
|
||||||
|
gpio_direction_output(EXYNOS4_GPX0(6), 1);
|
||||||
|
mdelay(100);
|
||||||
|
|
||||||
|
gpio_set_value(EXYNOS4_GPX0(6), 0);
|
||||||
|
mdelay(10);
|
||||||
|
|
||||||
|
gpio_set_value(EXYNOS4_GPX0(6), 1);
|
||||||
|
mdelay(10);
|
||||||
|
|
||||||
|
gpio_free(EXYNOS4_GPX0(6));
|
||||||
|
} else {
|
||||||
|
#if !defined(CONFIG_BACKLIGHT_PWM)
|
||||||
|
gpio_request_one(EXYNOS4_GPD0(1), GPIOF_OUT_INIT_LOW, "GPD0");
|
||||||
|
gpio_free(EXYNOS4_GPD0(1));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct plat_lcd_data smdkv310_lcd_lte480wv_data = {
|
||||||
|
.set_power = lcd_lte480wv_set_power,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device smdkv310_lcd_lte480wv = {
|
||||||
|
.name = "platform-lcd",
|
||||||
|
.dev.parent = &s5p_device_fimd0.dev,
|
||||||
|
.dev.platform_data = &smdkv310_lcd_lte480wv_data,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct s3c_fb_pd_win smdkv310_fb_win0 = {
|
||||||
|
.win_mode = {
|
||||||
|
.left_margin = 13,
|
||||||
|
.right_margin = 8,
|
||||||
|
.upper_margin = 7,
|
||||||
|
.lower_margin = 5,
|
||||||
|
.hsync_len = 3,
|
||||||
|
.vsync_len = 1,
|
||||||
|
.xres = 800,
|
||||||
|
.yres = 480,
|
||||||
|
},
|
||||||
|
.max_bpp = 32,
|
||||||
|
.default_bpp = 24,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct s3c_fb_platdata smdkv310_lcd0_pdata __initdata = {
|
||||||
|
.win[0] = &smdkv310_fb_win0,
|
||||||
|
.vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
|
||||||
|
.vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
|
||||||
|
.setup_gpio = exynos4_fimd0_gpio_setup_24bpp,
|
||||||
|
};
|
||||||
|
|
||||||
static struct resource smdkv310_smsc911x_resources[] = {
|
static struct resource smdkv310_smsc911x_resources[] = {
|
||||||
[0] = {
|
[0] = {
|
||||||
.start = EXYNOS4_PA_SROM_BANK(1),
|
.start = EXYNOS4_PA_SROM_BANK(1),
|
||||||
@@ -188,6 +254,8 @@ static struct platform_device *smdkv310_devices[] __initdata = {
|
|||||||
&exynos4_device_sysmmu,
|
&exynos4_device_sysmmu,
|
||||||
&samsung_asoc_dma,
|
&samsung_asoc_dma,
|
||||||
&samsung_asoc_idma,
|
&samsung_asoc_idma,
|
||||||
|
&s5p_device_fimd0,
|
||||||
|
&smdkv310_lcd_lte480wv,
|
||||||
&smdkv310_smsc911x,
|
&smdkv310_smsc911x,
|
||||||
&exynos4_device_ahci,
|
&exynos4_device_ahci,
|
||||||
};
|
};
|
||||||
@@ -248,6 +316,7 @@ static void __init smdkv310_machine_init(void)
|
|||||||
samsung_keypad_set_platdata(&smdkv310_keypad_data);
|
samsung_keypad_set_platdata(&smdkv310_keypad_data);
|
||||||
|
|
||||||
samsung_bl_set(&smdkv310_bl_gpio_info, &smdkv310_bl_data);
|
samsung_bl_set(&smdkv310_bl_gpio_info, &smdkv310_bl_data);
|
||||||
|
s5p_fimd0_set_platdata(&smdkv310_lcd0_pdata);
|
||||||
|
|
||||||
platform_add_devices(smdkv310_devices, ARRAY_SIZE(smdkv310_devices));
|
platform_add_devices(smdkv310_devices, ARRAY_SIZE(smdkv310_devices));
|
||||||
}
|
}
|
||||||
@@ -261,3 +330,12 @@ MACHINE_START(SMDKV310, "SMDKV310")
|
|||||||
.init_machine = smdkv310_machine_init,
|
.init_machine = smdkv310_machine_init,
|
||||||
.timer = &exynos4_timer,
|
.timer = &exynos4_timer,
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
|
||||||
|
MACHINE_START(SMDKC210, "SMDKC210")
|
||||||
|
/* Maintainer: Kukjin Kim <kgene.kim@samsung.com> */
|
||||||
|
.boot_params = S5P_PA_SDRAM + 0x100,
|
||||||
|
.init_irq = exynos4_init_irq,
|
||||||
|
.map_io = smdkv310_map_io,
|
||||||
|
.init_machine = smdkv310_machine_init,
|
||||||
|
.timer = &exynos4_timer,
|
||||||
|
MACHINE_END
|
||||||
|
@@ -8,7 +8,6 @@ config CPU_S3C2410
|
|||||||
select CPU_ARM920T
|
select CPU_ARM920T
|
||||||
select S3C_GPIO_PULL_UP
|
select S3C_GPIO_PULL_UP
|
||||||
select S3C2410_CLOCK
|
select S3C2410_CLOCK
|
||||||
select S3C2410_GPIO
|
|
||||||
select CPU_LLSERIAL_S3C2410
|
select CPU_LLSERIAL_S3C2410
|
||||||
select S3C2410_PM if PM
|
select S3C2410_PM if PM
|
||||||
select S3C2410_CPUFREQ if CPU_FREQ_S3C24XX
|
select S3C2410_CPUFREQ if CPU_FREQ_S3C24XX
|
||||||
@@ -28,11 +27,6 @@ config S3C2410_PM
|
|||||||
help
|
help
|
||||||
Power Management code common to S3C2410 and better
|
Power Management code common to S3C2410 and better
|
||||||
|
|
||||||
config S3C2410_GPIO
|
|
||||||
bool
|
|
||||||
help
|
|
||||||
GPIO code for S3C2410 and similar processors
|
|
||||||
|
|
||||||
config SIMTEC_NOR
|
config SIMTEC_NOR
|
||||||
bool
|
bool
|
||||||
help
|
help
|
||||||
|
@@ -13,7 +13,6 @@ obj-$(CONFIG_CPU_S3C2410) += s3c2410.o
|
|||||||
obj-$(CONFIG_CPU_S3C2410_DMA) += dma.o
|
obj-$(CONFIG_CPU_S3C2410_DMA) += dma.o
|
||||||
obj-$(CONFIG_CPU_S3C2410_DMA) += dma.o
|
obj-$(CONFIG_CPU_S3C2410_DMA) += dma.o
|
||||||
obj-$(CONFIG_S3C2410_PM) += pm.o sleep.o
|
obj-$(CONFIG_S3C2410_PM) += pm.o sleep.o
|
||||||
obj-$(CONFIG_S3C2410_GPIO) += gpio.o
|
|
||||||
obj-$(CONFIG_S3C2410_CPUFREQ) += cpu-freq.o
|
obj-$(CONFIG_S3C2410_CPUFREQ) += cpu-freq.o
|
||||||
obj-$(CONFIG_S3C2410_PLLTABLE) += pll.o
|
obj-$(CONFIG_S3C2410_PLLTABLE) += pll.o
|
||||||
|
|
||||||
|
@@ -47,38 +47,26 @@ static struct s3c24xx_dma_map __initdata s3c2410_dma_mappings[] = {
|
|||||||
.channels[0] = S3C2410_DCON_CH0_SDI | DMA_CH_VALID,
|
.channels[0] = S3C2410_DCON_CH0_SDI | DMA_CH_VALID,
|
||||||
.channels[2] = S3C2410_DCON_CH2_SDI | DMA_CH_VALID,
|
.channels[2] = S3C2410_DCON_CH2_SDI | DMA_CH_VALID,
|
||||||
.channels[3] = S3C2410_DCON_CH3_SDI | DMA_CH_VALID,
|
.channels[3] = S3C2410_DCON_CH3_SDI | DMA_CH_VALID,
|
||||||
.hw_addr.to = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
|
||||||
.hw_addr.from = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
|
||||||
},
|
},
|
||||||
[DMACH_SPI0] = {
|
[DMACH_SPI0] = {
|
||||||
.name = "spi0",
|
.name = "spi0",
|
||||||
.channels[1] = S3C2410_DCON_CH1_SPI | DMA_CH_VALID,
|
.channels[1] = S3C2410_DCON_CH1_SPI | DMA_CH_VALID,
|
||||||
.hw_addr.to = S3C2410_PA_SPI + S3C2410_SPTDAT,
|
|
||||||
.hw_addr.from = S3C2410_PA_SPI + S3C2410_SPRDAT,
|
|
||||||
},
|
},
|
||||||
[DMACH_SPI1] = {
|
[DMACH_SPI1] = {
|
||||||
.name = "spi1",
|
.name = "spi1",
|
||||||
.channels[3] = S3C2410_DCON_CH3_SPI | DMA_CH_VALID,
|
.channels[3] = S3C2410_DCON_CH3_SPI | DMA_CH_VALID,
|
||||||
.hw_addr.to = S3C2410_PA_SPI + 0x20 + S3C2410_SPTDAT,
|
|
||||||
.hw_addr.from = S3C2410_PA_SPI + 0x20 + S3C2410_SPRDAT,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART0] = {
|
[DMACH_UART0] = {
|
||||||
.name = "uart0",
|
.name = "uart0",
|
||||||
.channels[0] = S3C2410_DCON_CH0_UART0 | DMA_CH_VALID,
|
.channels[0] = S3C2410_DCON_CH0_UART0 | DMA_CH_VALID,
|
||||||
.hw_addr.to = S3C2410_PA_UART0 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2410_PA_UART0 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART1] = {
|
[DMACH_UART1] = {
|
||||||
.name = "uart1",
|
.name = "uart1",
|
||||||
.channels[1] = S3C2410_DCON_CH1_UART1 | DMA_CH_VALID,
|
.channels[1] = S3C2410_DCON_CH1_UART1 | DMA_CH_VALID,
|
||||||
.hw_addr.to = S3C2410_PA_UART1 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2410_PA_UART1 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART2] = {
|
[DMACH_UART2] = {
|
||||||
.name = "uart2",
|
.name = "uart2",
|
||||||
.channels[3] = S3C2410_DCON_CH3_UART2 | DMA_CH_VALID,
|
.channels[3] = S3C2410_DCON_CH3_UART2 | DMA_CH_VALID,
|
||||||
.hw_addr.to = S3C2410_PA_UART2 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2410_PA_UART2 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_TIMER] = {
|
[DMACH_TIMER] = {
|
||||||
.name = "timer",
|
.name = "timer",
|
||||||
@@ -90,12 +78,10 @@ static struct s3c24xx_dma_map __initdata s3c2410_dma_mappings[] = {
|
|||||||
.name = "i2s-sdi",
|
.name = "i2s-sdi",
|
||||||
.channels[1] = S3C2410_DCON_CH1_I2SSDI | DMA_CH_VALID,
|
.channels[1] = S3C2410_DCON_CH1_I2SSDI | DMA_CH_VALID,
|
||||||
.channels[2] = S3C2410_DCON_CH2_I2SSDI | DMA_CH_VALID,
|
.channels[2] = S3C2410_DCON_CH2_I2SSDI | DMA_CH_VALID,
|
||||||
.hw_addr.from = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
|
||||||
},
|
},
|
||||||
[DMACH_I2S_OUT] = {
|
[DMACH_I2S_OUT] = {
|
||||||
.name = "i2s-sdo",
|
.name = "i2s-sdo",
|
||||||
.channels[2] = S3C2410_DCON_CH2_I2SSDO | DMA_CH_VALID,
|
.channels[2] = S3C2410_DCON_CH2_I2SSDO | DMA_CH_VALID,
|
||||||
.hw_addr.to = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
|
||||||
},
|
},
|
||||||
[DMACH_USB_EP1] = {
|
[DMACH_USB_EP1] = {
|
||||||
.name = "usb-ep1",
|
.name = "usb-ep1",
|
||||||
|
@@ -1,72 +0,0 @@
|
|||||||
/* linux/arch/arm/mach-s3c2410/gpio.c
|
|
||||||
*
|
|
||||||
* Copyright (c) 2004-2006 Simtec Electronics
|
|
||||||
* Ben Dooks <ben@simtec.co.uk>
|
|
||||||
*
|
|
||||||
* S3C2410 GPIO support
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/module.h>
|
|
||||||
#include <linux/interrupt.h>
|
|
||||||
#include <linux/ioport.h>
|
|
||||||
#include <linux/io.h>
|
|
||||||
|
|
||||||
#include <mach/hardware.h>
|
|
||||||
#include <mach/gpio-fns.h>
|
|
||||||
#include <asm/irq.h>
|
|
||||||
|
|
||||||
#include <mach/regs-gpio.h>
|
|
||||||
|
|
||||||
int s3c2410_gpio_irqfilter(unsigned int pin, unsigned int on,
|
|
||||||
unsigned int config)
|
|
||||||
{
|
|
||||||
void __iomem *reg = S3C24XX_EINFLT0;
|
|
||||||
unsigned long flags;
|
|
||||||
unsigned long val;
|
|
||||||
|
|
||||||
if (pin < S3C2410_GPG(8) || pin > S3C2410_GPG(15))
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
config &= 0xff;
|
|
||||||
|
|
||||||
pin -= S3C2410_GPG(8);
|
|
||||||
reg += pin & ~3;
|
|
||||||
|
|
||||||
local_irq_save(flags);
|
|
||||||
|
|
||||||
/* update filter width and clock source */
|
|
||||||
|
|
||||||
val = __raw_readl(reg);
|
|
||||||
val &= ~(0xff << ((pin & 3) * 8));
|
|
||||||
val |= config << ((pin & 3) * 8);
|
|
||||||
__raw_writel(val, reg);
|
|
||||||
|
|
||||||
/* update filter enable */
|
|
||||||
|
|
||||||
val = __raw_readl(S3C24XX_EXTINT2);
|
|
||||||
val &= ~(1 << ((pin * 4) + 3));
|
|
||||||
val |= on << ((pin * 4) + 3);
|
|
||||||
__raw_writel(val, S3C24XX_EXTINT2);
|
|
||||||
|
|
||||||
local_irq_restore(flags);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_SYMBOL(s3c2410_gpio_irqfilter);
|
|
@@ -14,9 +14,53 @@
|
|||||||
#define __ASM_ARCH_MAP_H
|
#define __ASM_ARCH_MAP_H
|
||||||
|
|
||||||
#include <plat/map-base.h>
|
#include <plat/map-base.h>
|
||||||
#include <plat/map.h>
|
|
||||||
|
|
||||||
#define S3C2410_ADDR(x) S3C_ADDR(x)
|
/*
|
||||||
|
* S3C2410 UART offset is 0x4000 but the other SoCs are 0x400.
|
||||||
|
* So need to define it, and here is to avoid redefinition warning.
|
||||||
|
*/
|
||||||
|
#define S3C_UART_OFFSET (0x4000)
|
||||||
|
|
||||||
|
#include <plat/map-s3c.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* interrupt controller is the first thing we put in, to make
|
||||||
|
* the assembly code for the irq detection easier
|
||||||
|
*/
|
||||||
|
#define S3C2410_PA_IRQ (0x4A000000)
|
||||||
|
#define S3C24XX_SZ_IRQ SZ_1M
|
||||||
|
|
||||||
|
/* memory controller registers */
|
||||||
|
#define S3C2410_PA_MEMCTRL (0x48000000)
|
||||||
|
#define S3C24XX_SZ_MEMCTRL SZ_1M
|
||||||
|
|
||||||
|
/* UARTs */
|
||||||
|
#define S3C_VA_UARTx(uart) (S3C_VA_UART + ((uart * S3C_UART_OFFSET)))
|
||||||
|
|
||||||
|
/* Timers */
|
||||||
|
#define S3C2410_PA_TIMER (0x51000000)
|
||||||
|
#define S3C24XX_SZ_TIMER SZ_1M
|
||||||
|
|
||||||
|
/* Clock and Power management */
|
||||||
|
#define S3C24XX_SZ_CLKPWR SZ_1M
|
||||||
|
|
||||||
|
/* USB Device port */
|
||||||
|
#define S3C2410_PA_USBDEV (0x52000000)
|
||||||
|
#define S3C24XX_SZ_USBDEV SZ_1M
|
||||||
|
|
||||||
|
/* Watchdog */
|
||||||
|
#define S3C2410_PA_WATCHDOG (0x53000000)
|
||||||
|
#define S3C24XX_SZ_WATCHDOG SZ_1M
|
||||||
|
|
||||||
|
/* Standard size definitions for peripheral blocks. */
|
||||||
|
|
||||||
|
#define S3C24XX_SZ_UART SZ_1M
|
||||||
|
#define S3C24XX_SZ_IIS SZ_1M
|
||||||
|
#define S3C24XX_SZ_ADC SZ_1M
|
||||||
|
#define S3C24XX_SZ_SPI SZ_1M
|
||||||
|
#define S3C24XX_SZ_SDI SZ_1M
|
||||||
|
#define S3C24XX_SZ_NAND SZ_1M
|
||||||
|
#define S3C24XX_SZ_GPIO SZ_1M
|
||||||
|
|
||||||
/* USB host controller */
|
/* USB host controller */
|
||||||
#define S3C2410_PA_USBHOST (0x49000000)
|
#define S3C2410_PA_USBHOST (0x49000000)
|
||||||
@@ -75,10 +119,8 @@
|
|||||||
|
|
||||||
/* S3C2412 memory and IO controls */
|
/* S3C2412 memory and IO controls */
|
||||||
#define S3C2412_PA_SSMC (0x4F000000)
|
#define S3C2412_PA_SSMC (0x4F000000)
|
||||||
#define S3C2412_VA_SSMC S3C_ADDR_CPU(0x00000000)
|
|
||||||
|
|
||||||
#define S3C2412_PA_EBI (0x48800000)
|
#define S3C2412_PA_EBI (0x48800000)
|
||||||
#define S3C2412_VA_EBI S3C_ADDR_CPU(0x00010000)
|
|
||||||
|
|
||||||
/* physical addresses of all the chip-select areas */
|
/* physical addresses of all the chip-select areas */
|
||||||
|
|
||||||
@@ -100,12 +142,10 @@
|
|||||||
#define S3C24XX_PA_DMA S3C2410_PA_DMA
|
#define S3C24XX_PA_DMA S3C2410_PA_DMA
|
||||||
#define S3C24XX_PA_CLKPWR S3C2410_PA_CLKPWR
|
#define S3C24XX_PA_CLKPWR S3C2410_PA_CLKPWR
|
||||||
#define S3C24XX_PA_LCD S3C2410_PA_LCD
|
#define S3C24XX_PA_LCD S3C2410_PA_LCD
|
||||||
#define S3C24XX_PA_UART S3C2410_PA_UART
|
|
||||||
#define S3C24XX_PA_TIMER S3C2410_PA_TIMER
|
#define S3C24XX_PA_TIMER S3C2410_PA_TIMER
|
||||||
#define S3C24XX_PA_USBDEV S3C2410_PA_USBDEV
|
#define S3C24XX_PA_USBDEV S3C2410_PA_USBDEV
|
||||||
#define S3C24XX_PA_WATCHDOG S3C2410_PA_WATCHDOG
|
#define S3C24XX_PA_WATCHDOG S3C2410_PA_WATCHDOG
|
||||||
#define S3C24XX_PA_IIS S3C2410_PA_IIS
|
#define S3C24XX_PA_IIS S3C2410_PA_IIS
|
||||||
#define S3C24XX_PA_GPIO S3C2410_PA_GPIO
|
|
||||||
#define S3C24XX_PA_RTC S3C2410_PA_RTC
|
#define S3C24XX_PA_RTC S3C2410_PA_RTC
|
||||||
#define S3C24XX_PA_ADC S3C2410_PA_ADC
|
#define S3C24XX_PA_ADC S3C2410_PA_ADC
|
||||||
#define S3C24XX_PA_SPI S3C2410_PA_SPI
|
#define S3C24XX_PA_SPI S3C2410_PA_SPI
|
||||||
|
@@ -9,7 +9,6 @@ config CPU_S3C2412
|
|||||||
select CPU_LLSERIAL_S3C2440
|
select CPU_LLSERIAL_S3C2440
|
||||||
select S3C2412_PM if PM
|
select S3C2412_PM if PM
|
||||||
select S3C2412_DMA if S3C2410_DMA
|
select S3C2412_DMA if S3C2410_DMA
|
||||||
select S3C2410_GPIO
|
|
||||||
help
|
help
|
||||||
Support for the S3C2412 and S3C2413 SoCs from the S3C24XX line
|
Support for the S3C2412 and S3C2413 SoCs from the S3C24XX line
|
||||||
|
|
||||||
|
@@ -12,7 +12,6 @@ obj- :=
|
|||||||
obj-$(CONFIG_CPU_S3C2412) += s3c2412.o
|
obj-$(CONFIG_CPU_S3C2412) += s3c2412.o
|
||||||
obj-$(CONFIG_CPU_S3C2412) += irq.o
|
obj-$(CONFIG_CPU_S3C2412) += irq.o
|
||||||
obj-$(CONFIG_CPU_S3C2412) += clock.o
|
obj-$(CONFIG_CPU_S3C2412) += clock.o
|
||||||
obj-$(CONFIG_CPU_S3C2412) += gpio.o
|
|
||||||
obj-$(CONFIG_S3C2412_DMA) += dma.o
|
obj-$(CONFIG_S3C2412_DMA) += dma.o
|
||||||
obj-$(CONFIG_S3C2412_PM) += pm.o
|
obj-$(CONFIG_S3C2412_PM) += pm.o
|
||||||
obj-$(CONFIG_S3C2412_PM_SLEEP) += sleep.o
|
obj-$(CONFIG_S3C2412_PM_SLEEP) += sleep.o
|
||||||
|
@@ -50,64 +50,46 @@ static struct s3c24xx_dma_map __initdata s3c2412_dma_mappings[] = {
|
|||||||
.name = "sdi",
|
.name = "sdi",
|
||||||
.channels = MAP(S3C2412_DMAREQSEL_SDI),
|
.channels = MAP(S3C2412_DMAREQSEL_SDI),
|
||||||
.channels_rx = MAP(S3C2412_DMAREQSEL_SDI),
|
.channels_rx = MAP(S3C2412_DMAREQSEL_SDI),
|
||||||
.hw_addr.to = S3C2410_PA_SDI + S3C2410_SDIDATA,
|
|
||||||
.hw_addr.from = S3C2410_PA_SDI + S3C2410_SDIDATA,
|
|
||||||
},
|
},
|
||||||
[DMACH_SPI0] = {
|
[DMACH_SPI0] = {
|
||||||
.name = "spi0",
|
.name = "spi0",
|
||||||
.channels = MAP(S3C2412_DMAREQSEL_SPI0TX),
|
.channels = MAP(S3C2412_DMAREQSEL_SPI0TX),
|
||||||
.channels_rx = MAP(S3C2412_DMAREQSEL_SPI0RX),
|
.channels_rx = MAP(S3C2412_DMAREQSEL_SPI0RX),
|
||||||
.hw_addr.to = S3C2410_PA_SPI + S3C2410_SPTDAT,
|
|
||||||
.hw_addr.from = S3C2410_PA_SPI + S3C2410_SPRDAT,
|
|
||||||
},
|
},
|
||||||
[DMACH_SPI1] = {
|
[DMACH_SPI1] = {
|
||||||
.name = "spi1",
|
.name = "spi1",
|
||||||
.channels = MAP(S3C2412_DMAREQSEL_SPI1TX),
|
.channels = MAP(S3C2412_DMAREQSEL_SPI1TX),
|
||||||
.channels_rx = MAP(S3C2412_DMAREQSEL_SPI1RX),
|
.channels_rx = MAP(S3C2412_DMAREQSEL_SPI1RX),
|
||||||
.hw_addr.to = S3C2410_PA_SPI + S3C2412_SPI1 + S3C2410_SPTDAT,
|
|
||||||
.hw_addr.from = S3C2410_PA_SPI + S3C2412_SPI1 + S3C2410_SPRDAT,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART0] = {
|
[DMACH_UART0] = {
|
||||||
.name = "uart0",
|
.name = "uart0",
|
||||||
.channels = MAP(S3C2412_DMAREQSEL_UART0_0),
|
.channels = MAP(S3C2412_DMAREQSEL_UART0_0),
|
||||||
.channels_rx = MAP(S3C2412_DMAREQSEL_UART0_0),
|
.channels_rx = MAP(S3C2412_DMAREQSEL_UART0_0),
|
||||||
.hw_addr.to = S3C2410_PA_UART0 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2410_PA_UART0 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART1] = {
|
[DMACH_UART1] = {
|
||||||
.name = "uart1",
|
.name = "uart1",
|
||||||
.channels = MAP(S3C2412_DMAREQSEL_UART1_0),
|
.channels = MAP(S3C2412_DMAREQSEL_UART1_0),
|
||||||
.channels_rx = MAP(S3C2412_DMAREQSEL_UART1_0),
|
.channels_rx = MAP(S3C2412_DMAREQSEL_UART1_0),
|
||||||
.hw_addr.to = S3C2410_PA_UART1 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2410_PA_UART1 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART2] = {
|
[DMACH_UART2] = {
|
||||||
.name = "uart2",
|
.name = "uart2",
|
||||||
.channels = MAP(S3C2412_DMAREQSEL_UART2_0),
|
.channels = MAP(S3C2412_DMAREQSEL_UART2_0),
|
||||||
.channels_rx = MAP(S3C2412_DMAREQSEL_UART2_0),
|
.channels_rx = MAP(S3C2412_DMAREQSEL_UART2_0),
|
||||||
.hw_addr.to = S3C2410_PA_UART2 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2410_PA_UART2 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART0_SRC2] = {
|
[DMACH_UART0_SRC2] = {
|
||||||
.name = "uart0",
|
.name = "uart0",
|
||||||
.channels = MAP(S3C2412_DMAREQSEL_UART0_1),
|
.channels = MAP(S3C2412_DMAREQSEL_UART0_1),
|
||||||
.channels_rx = MAP(S3C2412_DMAREQSEL_UART0_1),
|
.channels_rx = MAP(S3C2412_DMAREQSEL_UART0_1),
|
||||||
.hw_addr.to = S3C2410_PA_UART0 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2410_PA_UART0 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART1_SRC2] = {
|
[DMACH_UART1_SRC2] = {
|
||||||
.name = "uart1",
|
.name = "uart1",
|
||||||
.channels = MAP(S3C2412_DMAREQSEL_UART1_1),
|
.channels = MAP(S3C2412_DMAREQSEL_UART1_1),
|
||||||
.channels_rx = MAP(S3C2412_DMAREQSEL_UART1_1),
|
.channels_rx = MAP(S3C2412_DMAREQSEL_UART1_1),
|
||||||
.hw_addr.to = S3C2410_PA_UART1 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2410_PA_UART1 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART2_SRC2] = {
|
[DMACH_UART2_SRC2] = {
|
||||||
.name = "uart2",
|
.name = "uart2",
|
||||||
.channels = MAP(S3C2412_DMAREQSEL_UART2_1),
|
.channels = MAP(S3C2412_DMAREQSEL_UART2_1),
|
||||||
.channels_rx = MAP(S3C2412_DMAREQSEL_UART2_1),
|
.channels_rx = MAP(S3C2412_DMAREQSEL_UART2_1),
|
||||||
.hw_addr.to = S3C2410_PA_UART2 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2410_PA_UART2 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_TIMER] = {
|
[DMACH_TIMER] = {
|
||||||
.name = "timer",
|
.name = "timer",
|
||||||
|
@@ -1,62 +0,0 @@
|
|||||||
/* linux/arch/arm/mach-s3c2412/gpio.c
|
|
||||||
*
|
|
||||||
* Copyright (c) 2007 Simtec Electronics
|
|
||||||
* Ben Dooks <ben@simtec.co.uk>
|
|
||||||
*
|
|
||||||
* http://armlinux.simtec.co.uk/.
|
|
||||||
*
|
|
||||||
* S3C2412/S3C2413 specific GPIO support
|
|
||||||
*
|
|
||||||
* 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 <linux/kernel.h>
|
|
||||||
#include <linux/types.h>
|
|
||||||
#include <linux/module.h>
|
|
||||||
#include <linux/interrupt.h>
|
|
||||||
#include <linux/gpio.h>
|
|
||||||
|
|
||||||
#include <asm/mach/arch.h>
|
|
||||||
#include <asm/mach/map.h>
|
|
||||||
|
|
||||||
#include <mach/regs-gpio.h>
|
|
||||||
#include <mach/hardware.h>
|
|
||||||
|
|
||||||
#include <plat/gpio-core.h>
|
|
||||||
|
|
||||||
int s3c2412_gpio_set_sleepcfg(unsigned int pin, unsigned int state)
|
|
||||||
{
|
|
||||||
struct s3c_gpio_chip *chip = s3c_gpiolib_getchip(pin);
|
|
||||||
unsigned long offs = pin - chip->chip.base;
|
|
||||||
unsigned long flags;
|
|
||||||
unsigned long slpcon;
|
|
||||||
|
|
||||||
offs *= 2;
|
|
||||||
|
|
||||||
if (pin < S3C2410_GPB(0))
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
if (pin >= S3C2410_GPF(0) &&
|
|
||||||
pin <= S3C2410_GPG(16))
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
if (pin > S3C2410_GPH(16))
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
local_irq_save(flags);
|
|
||||||
|
|
||||||
slpcon = __raw_readl(chip->base + 0x0C);
|
|
||||||
|
|
||||||
slpcon &= ~(3 << offs);
|
|
||||||
slpcon |= state << offs;
|
|
||||||
|
|
||||||
__raw_writel(slpcon, chip->base + 0x0C);
|
|
||||||
|
|
||||||
local_irq_restore(flags);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_SYMBOL(s3c2412_gpio_set_sleepcfg);
|
|
@@ -8,7 +8,6 @@ config CPU_S3C2440
|
|||||||
select S3C_GPIO_PULL_UP
|
select S3C_GPIO_PULL_UP
|
||||||
select S3C2410_CLOCK
|
select S3C2410_CLOCK
|
||||||
select S3C2410_PM if PM
|
select S3C2410_PM if PM
|
||||||
select S3C2410_GPIO
|
|
||||||
select S3C2440_DMA if S3C2410_DMA
|
select S3C2440_DMA if S3C2410_DMA
|
||||||
select CPU_S3C244X
|
select CPU_S3C244X
|
||||||
select CPU_LLSERIAL_S3C2440
|
select CPU_LLSERIAL_S3C2440
|
||||||
@@ -20,7 +19,6 @@ config CPU_S3C2442
|
|||||||
select CPU_ARM920T
|
select CPU_ARM920T
|
||||||
select S3C_GPIO_PULL_DOWN
|
select S3C_GPIO_PULL_DOWN
|
||||||
select S3C2410_CLOCK
|
select S3C2410_CLOCK
|
||||||
select S3C2410_GPIO
|
|
||||||
select S3C2410_PM if PM
|
select S3C2410_PM if PM
|
||||||
select CPU_S3C244X
|
select CPU_S3C244X
|
||||||
select CPU_LLSERIAL_S3C2440
|
select CPU_LLSERIAL_S3C2440
|
||||||
|
@@ -48,38 +48,26 @@ static struct s3c24xx_dma_map __initdata s3c2440_dma_mappings[] = {
|
|||||||
.channels[1] = S3C2440_DCON_CH1_SDI | DMA_CH_VALID,
|
.channels[1] = S3C2440_DCON_CH1_SDI | DMA_CH_VALID,
|
||||||
.channels[2] = S3C2410_DCON_CH2_SDI | DMA_CH_VALID,
|
.channels[2] = S3C2410_DCON_CH2_SDI | DMA_CH_VALID,
|
||||||
.channels[3] = S3C2410_DCON_CH3_SDI | DMA_CH_VALID,
|
.channels[3] = S3C2410_DCON_CH3_SDI | DMA_CH_VALID,
|
||||||
.hw_addr.to = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
|
||||||
.hw_addr.from = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
|
||||||
},
|
},
|
||||||
[DMACH_SPI0] = {
|
[DMACH_SPI0] = {
|
||||||
.name = "spi0",
|
.name = "spi0",
|
||||||
.channels[1] = S3C2410_DCON_CH1_SPI | DMA_CH_VALID,
|
.channels[1] = S3C2410_DCON_CH1_SPI | DMA_CH_VALID,
|
||||||
.hw_addr.to = S3C2410_PA_SPI + S3C2410_SPTDAT,
|
|
||||||
.hw_addr.from = S3C2410_PA_SPI + S3C2410_SPRDAT,
|
|
||||||
},
|
},
|
||||||
[DMACH_SPI1] = {
|
[DMACH_SPI1] = {
|
||||||
.name = "spi1",
|
.name = "spi1",
|
||||||
.channels[3] = S3C2410_DCON_CH3_SPI | DMA_CH_VALID,
|
.channels[3] = S3C2410_DCON_CH3_SPI | DMA_CH_VALID,
|
||||||
.hw_addr.to = S3C2410_PA_SPI + 0x20 + S3C2410_SPTDAT,
|
|
||||||
.hw_addr.from = S3C2410_PA_SPI + 0x20 + S3C2410_SPRDAT,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART0] = {
|
[DMACH_UART0] = {
|
||||||
.name = "uart0",
|
.name = "uart0",
|
||||||
.channels[0] = S3C2410_DCON_CH0_UART0 | DMA_CH_VALID,
|
.channels[0] = S3C2410_DCON_CH0_UART0 | DMA_CH_VALID,
|
||||||
.hw_addr.to = S3C2410_PA_UART0 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2410_PA_UART0 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART1] = {
|
[DMACH_UART1] = {
|
||||||
.name = "uart1",
|
.name = "uart1",
|
||||||
.channels[1] = S3C2410_DCON_CH1_UART1 | DMA_CH_VALID,
|
.channels[1] = S3C2410_DCON_CH1_UART1 | DMA_CH_VALID,
|
||||||
.hw_addr.to = S3C2410_PA_UART1 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2410_PA_UART1 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART2] = {
|
[DMACH_UART2] = {
|
||||||
.name = "uart2",
|
.name = "uart2",
|
||||||
.channels[3] = S3C2410_DCON_CH3_UART2 | DMA_CH_VALID,
|
.channels[3] = S3C2410_DCON_CH3_UART2 | DMA_CH_VALID,
|
||||||
.hw_addr.to = S3C2410_PA_UART2 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2410_PA_UART2 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_TIMER] = {
|
[DMACH_TIMER] = {
|
||||||
.name = "timer",
|
.name = "timer",
|
||||||
@@ -91,31 +79,26 @@ static struct s3c24xx_dma_map __initdata s3c2440_dma_mappings[] = {
|
|||||||
.name = "i2s-sdi",
|
.name = "i2s-sdi",
|
||||||
.channels[1] = S3C2410_DCON_CH1_I2SSDI | DMA_CH_VALID,
|
.channels[1] = S3C2410_DCON_CH1_I2SSDI | DMA_CH_VALID,
|
||||||
.channels[2] = S3C2410_DCON_CH2_I2SSDI | DMA_CH_VALID,
|
.channels[2] = S3C2410_DCON_CH2_I2SSDI | DMA_CH_VALID,
|
||||||
.hw_addr.from = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
|
||||||
},
|
},
|
||||||
[DMACH_I2S_OUT] = {
|
[DMACH_I2S_OUT] = {
|
||||||
.name = "i2s-sdo",
|
.name = "i2s-sdo",
|
||||||
.channels[0] = S3C2440_DCON_CH0_I2SSDO | DMA_CH_VALID,
|
.channels[0] = S3C2440_DCON_CH0_I2SSDO | DMA_CH_VALID,
|
||||||
.channels[2] = S3C2410_DCON_CH2_I2SSDO | DMA_CH_VALID,
|
.channels[2] = S3C2410_DCON_CH2_I2SSDO | DMA_CH_VALID,
|
||||||
.hw_addr.to = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
|
||||||
},
|
},
|
||||||
[DMACH_PCM_IN] = {
|
[DMACH_PCM_IN] = {
|
||||||
.name = "pcm-in",
|
.name = "pcm-in",
|
||||||
.channels[0] = S3C2440_DCON_CH0_PCMIN | DMA_CH_VALID,
|
.channels[0] = S3C2440_DCON_CH0_PCMIN | DMA_CH_VALID,
|
||||||
.channels[2] = S3C2440_DCON_CH2_PCMIN | DMA_CH_VALID,
|
.channels[2] = S3C2440_DCON_CH2_PCMIN | DMA_CH_VALID,
|
||||||
.hw_addr.from = S3C2440_PA_AC97 + S3C_AC97_PCM_DATA,
|
|
||||||
},
|
},
|
||||||
[DMACH_PCM_OUT] = {
|
[DMACH_PCM_OUT] = {
|
||||||
.name = "pcm-out",
|
.name = "pcm-out",
|
||||||
.channels[1] = S3C2440_DCON_CH1_PCMOUT | DMA_CH_VALID,
|
.channels[1] = S3C2440_DCON_CH1_PCMOUT | DMA_CH_VALID,
|
||||||
.channels[3] = S3C2440_DCON_CH3_PCMOUT | DMA_CH_VALID,
|
.channels[3] = S3C2440_DCON_CH3_PCMOUT | DMA_CH_VALID,
|
||||||
.hw_addr.to = S3C2440_PA_AC97 + S3C_AC97_PCM_DATA,
|
|
||||||
},
|
},
|
||||||
[DMACH_MIC_IN] = {
|
[DMACH_MIC_IN] = {
|
||||||
.name = "mic-in",
|
.name = "mic-in",
|
||||||
.channels[2] = S3C2440_DCON_CH2_MICIN | DMA_CH_VALID,
|
.channels[2] = S3C2440_DCON_CH2_MICIN | DMA_CH_VALID,
|
||||||
.channels[3] = S3C2440_DCON_CH3_MICIN | DMA_CH_VALID,
|
.channels[3] = S3C2440_DCON_CH3_MICIN | DMA_CH_VALID,
|
||||||
.hw_addr.from = S3C2440_PA_AC97 + S3C_AC97_MIC_DATA,
|
|
||||||
},
|
},
|
||||||
[DMACH_USB_EP1] = {
|
[DMACH_USB_EP1] = {
|
||||||
.name = "usb-ep1",
|
.name = "usb-ep1",
|
||||||
|
@@ -54,68 +54,46 @@ static struct s3c24xx_dma_map __initdata s3c2443_dma_mappings[] = {
|
|||||||
[DMACH_SDI] = {
|
[DMACH_SDI] = {
|
||||||
.name = "sdi",
|
.name = "sdi",
|
||||||
.channels = MAP(S3C2443_DMAREQSEL_SDI),
|
.channels = MAP(S3C2443_DMAREQSEL_SDI),
|
||||||
.hw_addr.to = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
|
||||||
.hw_addr.from = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
|
||||||
},
|
},
|
||||||
[DMACH_SPI0] = {
|
[DMACH_SPI0] = {
|
||||||
.name = "spi0",
|
.name = "spi0",
|
||||||
.channels = MAP(S3C2443_DMAREQSEL_SPI0TX),
|
.channels = MAP(S3C2443_DMAREQSEL_SPI0TX),
|
||||||
.hw_addr.to = S3C2410_PA_SPI + S3C2410_SPTDAT,
|
|
||||||
.hw_addr.from = S3C2410_PA_SPI + S3C2410_SPRDAT,
|
|
||||||
},
|
},
|
||||||
[DMACH_SPI1] = {
|
[DMACH_SPI1] = {
|
||||||
.name = "spi1",
|
.name = "spi1",
|
||||||
.channels = MAP(S3C2443_DMAREQSEL_SPI1TX),
|
.channels = MAP(S3C2443_DMAREQSEL_SPI1TX),
|
||||||
.hw_addr.to = S3C2410_PA_SPI + 0x20 + S3C2410_SPTDAT,
|
|
||||||
.hw_addr.from = S3C2410_PA_SPI + 0x20 + S3C2410_SPRDAT,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART0] = {
|
[DMACH_UART0] = {
|
||||||
.name = "uart0",
|
.name = "uart0",
|
||||||
.channels = MAP(S3C2443_DMAREQSEL_UART0_0),
|
.channels = MAP(S3C2443_DMAREQSEL_UART0_0),
|
||||||
.hw_addr.to = S3C2410_PA_UART0 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2410_PA_UART0 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART1] = {
|
[DMACH_UART1] = {
|
||||||
.name = "uart1",
|
.name = "uart1",
|
||||||
.channels = MAP(S3C2443_DMAREQSEL_UART1_0),
|
.channels = MAP(S3C2443_DMAREQSEL_UART1_0),
|
||||||
.hw_addr.to = S3C2410_PA_UART1 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2410_PA_UART1 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART2] = {
|
[DMACH_UART2] = {
|
||||||
.name = "uart2",
|
.name = "uart2",
|
||||||
.channels = MAP(S3C2443_DMAREQSEL_UART2_0),
|
.channels = MAP(S3C2443_DMAREQSEL_UART2_0),
|
||||||
.hw_addr.to = S3C2410_PA_UART2 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2410_PA_UART2 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART3] = {
|
[DMACH_UART3] = {
|
||||||
.name = "uart3",
|
.name = "uart3",
|
||||||
.channels = MAP(S3C2443_DMAREQSEL_UART3_0),
|
.channels = MAP(S3C2443_DMAREQSEL_UART3_0),
|
||||||
.hw_addr.to = S3C2443_PA_UART3 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2443_PA_UART3 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART0_SRC2] = {
|
[DMACH_UART0_SRC2] = {
|
||||||
.name = "uart0",
|
.name = "uart0",
|
||||||
.channels = MAP(S3C2443_DMAREQSEL_UART0_1),
|
.channels = MAP(S3C2443_DMAREQSEL_UART0_1),
|
||||||
.hw_addr.to = S3C2410_PA_UART0 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2410_PA_UART0 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART1_SRC2] = {
|
[DMACH_UART1_SRC2] = {
|
||||||
.name = "uart1",
|
.name = "uart1",
|
||||||
.channels = MAP(S3C2443_DMAREQSEL_UART1_1),
|
.channels = MAP(S3C2443_DMAREQSEL_UART1_1),
|
||||||
.hw_addr.to = S3C2410_PA_UART1 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2410_PA_UART1 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART2_SRC2] = {
|
[DMACH_UART2_SRC2] = {
|
||||||
.name = "uart2",
|
.name = "uart2",
|
||||||
.channels = MAP(S3C2443_DMAREQSEL_UART2_1),
|
.channels = MAP(S3C2443_DMAREQSEL_UART2_1),
|
||||||
.hw_addr.to = S3C2410_PA_UART2 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2410_PA_UART2 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_UART3_SRC2] = {
|
[DMACH_UART3_SRC2] = {
|
||||||
.name = "uart3",
|
.name = "uart3",
|
||||||
.channels = MAP(S3C2443_DMAREQSEL_UART3_1),
|
.channels = MAP(S3C2443_DMAREQSEL_UART3_1),
|
||||||
.hw_addr.to = S3C2443_PA_UART3 + S3C2410_UTXH,
|
|
||||||
.hw_addr.from = S3C2443_PA_UART3 + S3C2410_URXH,
|
|
||||||
},
|
},
|
||||||
[DMACH_TIMER] = {
|
[DMACH_TIMER] = {
|
||||||
.name = "timer",
|
.name = "timer",
|
||||||
@@ -124,27 +102,22 @@ static struct s3c24xx_dma_map __initdata s3c2443_dma_mappings[] = {
|
|||||||
[DMACH_I2S_IN] = {
|
[DMACH_I2S_IN] = {
|
||||||
.name = "i2s-sdi",
|
.name = "i2s-sdi",
|
||||||
.channels = MAP(S3C2443_DMAREQSEL_I2SRX),
|
.channels = MAP(S3C2443_DMAREQSEL_I2SRX),
|
||||||
.hw_addr.from = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
|
||||||
},
|
},
|
||||||
[DMACH_I2S_OUT] = {
|
[DMACH_I2S_OUT] = {
|
||||||
.name = "i2s-sdo",
|
.name = "i2s-sdo",
|
||||||
.channels = MAP(S3C2443_DMAREQSEL_I2STX),
|
.channels = MAP(S3C2443_DMAREQSEL_I2STX),
|
||||||
.hw_addr.to = S3C2410_PA_IIS + S3C2410_IISFIFO,
|
|
||||||
},
|
},
|
||||||
[DMACH_PCM_IN] = {
|
[DMACH_PCM_IN] = {
|
||||||
.name = "pcm-in",
|
.name = "pcm-in",
|
||||||
.channels = MAP(S3C2443_DMAREQSEL_PCMIN),
|
.channels = MAP(S3C2443_DMAREQSEL_PCMIN),
|
||||||
.hw_addr.from = S3C2440_PA_AC97 + S3C_AC97_PCM_DATA,
|
|
||||||
},
|
},
|
||||||
[DMACH_PCM_OUT] = {
|
[DMACH_PCM_OUT] = {
|
||||||
.name = "pcm-out",
|
.name = "pcm-out",
|
||||||
.channels = MAP(S3C2443_DMAREQSEL_PCMOUT),
|
.channels = MAP(S3C2443_DMAREQSEL_PCMOUT),
|
||||||
.hw_addr.to = S3C2440_PA_AC97 + S3C_AC97_PCM_DATA,
|
|
||||||
},
|
},
|
||||||
[DMACH_MIC_IN] = {
|
[DMACH_MIC_IN] = {
|
||||||
.name = "mic-in",
|
.name = "mic-in",
|
||||||
.channels = MAP(S3C2443_DMAREQSEL_MICIN),
|
.channels = MAP(S3C2443_DMAREQSEL_MICIN),
|
||||||
.hw_addr.from = S3C2440_PA_AC97 + S3C_AC97_MIC_DATA,
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
#define __ASM_ARCH_MAP_H __FILE__
|
#define __ASM_ARCH_MAP_H __FILE__
|
||||||
|
|
||||||
#include <plat/map-base.h>
|
#include <plat/map-base.h>
|
||||||
|
#include <plat/map-s3c.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Post-mux Chip Select Regions Xm0CSn_
|
* Post-mux Chip Select Regions Xm0CSn_
|
||||||
@@ -83,7 +84,6 @@
|
|||||||
#define S3C64XX_PA_IIC1 (0x7F00F000)
|
#define S3C64XX_PA_IIC1 (0x7F00F000)
|
||||||
|
|
||||||
#define S3C64XX_PA_GPIO (0x7F008000)
|
#define S3C64XX_PA_GPIO (0x7F008000)
|
||||||
#define S3C64XX_VA_GPIO S3C_ADDR_CPU(0x00000000)
|
|
||||||
#define S3C64XX_SZ_GPIO SZ_4K
|
#define S3C64XX_SZ_GPIO SZ_4K
|
||||||
|
|
||||||
#define S3C64XX_PA_SDRAM (0x50000000)
|
#define S3C64XX_PA_SDRAM (0x50000000)
|
||||||
@@ -94,16 +94,10 @@
|
|||||||
#define S3C64XX_PA_VIC1 (0x71300000)
|
#define S3C64XX_PA_VIC1 (0x71300000)
|
||||||
|
|
||||||
#define S3C64XX_PA_MODEM (0x74108000)
|
#define S3C64XX_PA_MODEM (0x74108000)
|
||||||
#define S3C64XX_VA_MODEM S3C_ADDR_CPU(0x00100000)
|
|
||||||
|
|
||||||
#define S3C64XX_PA_USBHOST (0x74300000)
|
#define S3C64XX_PA_USBHOST (0x74300000)
|
||||||
|
|
||||||
#define S3C64XX_PA_USB_HSPHY (0x7C100000)
|
#define S3C64XX_PA_USB_HSPHY (0x7C100000)
|
||||||
#define S3C64XX_VA_USB_HSPHY S3C_ADDR_CPU(0x00200000)
|
|
||||||
|
|
||||||
/* place VICs close together */
|
|
||||||
#define VA_VIC0 (S3C_VA_IRQ + 0x00)
|
|
||||||
#define VA_VIC1 (S3C_VA_IRQ + 0x10000)
|
|
||||||
|
|
||||||
/* compatibiltiy defines. */
|
/* compatibiltiy defines. */
|
||||||
#define S3C_PA_TIMER S3C64XX_PA_TIMER
|
#define S3C_PA_TIMER S3C64XX_PA_TIMER
|
||||||
@@ -119,7 +113,6 @@
|
|||||||
#define S3C_PA_FB S3C64XX_PA_FB
|
#define S3C_PA_FB S3C64XX_PA_FB
|
||||||
#define S3C_PA_USBHOST S3C64XX_PA_USBHOST
|
#define S3C_PA_USBHOST S3C64XX_PA_USBHOST
|
||||||
#define S3C_PA_USB_HSOTG S3C64XX_PA_USB_HSOTG
|
#define S3C_PA_USB_HSOTG S3C64XX_PA_USB_HSOTG
|
||||||
#define S3C_VA_USB_HSPHY S3C64XX_VA_USB_HSPHY
|
|
||||||
#define S3C_PA_RTC S3C64XX_PA_RTC
|
#define S3C_PA_RTC S3C64XX_PA_RTC
|
||||||
#define S3C_PA_WDT S3C64XX_PA_WATCHDOG
|
#define S3C_PA_WDT S3C64XX_PA_WATCHDOG
|
||||||
|
|
||||||
|
@@ -329,9 +329,6 @@ static struct platform_device *crag6410_devices[] __initdata = {
|
|||||||
&s3c_device_fb,
|
&s3c_device_fb,
|
||||||
&s3c_device_ohci,
|
&s3c_device_ohci,
|
||||||
&s3c_device_usb_hsotg,
|
&s3c_device_usb_hsotg,
|
||||||
&s3c_device_adc,
|
|
||||||
&s3c_device_rtc,
|
|
||||||
&s3c_device_ts,
|
|
||||||
&s3c_device_timer[0],
|
&s3c_device_timer[0],
|
||||||
&s3c64xx_device_iis0,
|
&s3c64xx_device_iis0,
|
||||||
&s3c64xx_device_iis1,
|
&s3c64xx_device_iis1,
|
||||||
|
@@ -205,12 +205,6 @@ static struct platform_device mini6410_lcd_powerdev = {
|
|||||||
.dev.platform_data = &mini6410_lcd_power_data,
|
.dev.platform_data = &mini6410_lcd_power_data,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
|
||||||
.delay = 10000,
|
|
||||||
.presc = 49,
|
|
||||||
.oversampling_shift = 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device *mini6410_devices[] __initdata = {
|
static struct platform_device *mini6410_devices[] __initdata = {
|
||||||
&mini6410_device_eth,
|
&mini6410_device_eth,
|
||||||
&s3c_device_hsmmc0,
|
&s3c_device_hsmmc0,
|
||||||
@@ -319,7 +313,7 @@ static void __init mini6410_machine_init(void)
|
|||||||
|
|
||||||
s3c_nand_set_platdata(&mini6410_nand_info);
|
s3c_nand_set_platdata(&mini6410_nand_info);
|
||||||
s3c_fb_set_platdata(&mini6410_lcd_pdata);
|
s3c_fb_set_platdata(&mini6410_lcd_pdata);
|
||||||
s3c24xx_ts_set_platdata(&s3c_ts_platform);
|
s3c24xx_ts_set_platdata(NULL);
|
||||||
|
|
||||||
/* configure nCS1 width to 16 bits */
|
/* configure nCS1 width to 16 bits */
|
||||||
|
|
||||||
|
@@ -198,12 +198,6 @@ static struct platform_device *real6410_devices[] __initdata = {
|
|||||||
&s3c_device_ohci,
|
&s3c_device_ohci,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
|
||||||
.delay = 10000,
|
|
||||||
.presc = 49,
|
|
||||||
.oversampling_shift = 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
static void __init real6410_map_io(void)
|
static void __init real6410_map_io(void)
|
||||||
{
|
{
|
||||||
u32 tmp;
|
u32 tmp;
|
||||||
@@ -300,7 +294,7 @@ static void __init real6410_machine_init(void)
|
|||||||
|
|
||||||
s3c_fb_set_platdata(&real6410_lcd_pdata);
|
s3c_fb_set_platdata(&real6410_lcd_pdata);
|
||||||
s3c_nand_set_platdata(&real6410_nand_info);
|
s3c_nand_set_platdata(&real6410_nand_info);
|
||||||
s3c24xx_ts_set_platdata(&s3c_ts_platform);
|
s3c24xx_ts_set_platdata(NULL);
|
||||||
|
|
||||||
/* configure nCS1 width to 16 bits */
|
/* configure nCS1 width to 16 bits */
|
||||||
|
|
||||||
|
@@ -619,12 +619,6 @@ static struct i2c_board_info i2c_devs1[] __initdata = {
|
|||||||
{ I2C_BOARD_INFO("24c128", 0x57), }, /* Samsung S524AD0XD1 */
|
{ I2C_BOARD_INFO("24c128", 0x57), }, /* Samsung S524AD0XD1 */
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
|
||||||
.delay = 10000,
|
|
||||||
.presc = 49,
|
|
||||||
.oversampling_shift = 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
/* LCD Backlight data */
|
/* LCD Backlight data */
|
||||||
static struct samsung_bl_gpio_info smdk6410_bl_gpio_info = {
|
static struct samsung_bl_gpio_info smdk6410_bl_gpio_info = {
|
||||||
.no = S3C64XX_GPF(15),
|
.no = S3C64XX_GPF(15),
|
||||||
@@ -666,7 +660,7 @@ static void __init smdk6410_machine_init(void)
|
|||||||
|
|
||||||
samsung_keypad_set_platdata(&smdk6410_keypad_data);
|
samsung_keypad_set_platdata(&smdk6410_keypad_data);
|
||||||
|
|
||||||
s3c24xx_ts_set_platdata(&s3c_ts_platform);
|
s3c24xx_ts_set_platdata(NULL);
|
||||||
|
|
||||||
/* configure nCS1 width to 16 bits */
|
/* configure nCS1 width to 16 bits */
|
||||||
|
|
||||||
|
@@ -129,12 +129,6 @@ static struct i2c_board_info smdk6440_i2c_devs1[] __initdata = {
|
|||||||
/* To be populated */
|
/* To be populated */
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
|
||||||
.delay = 10000,
|
|
||||||
.presc = 49,
|
|
||||||
.oversampling_shift = 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
/* LCD Backlight data */
|
/* LCD Backlight data */
|
||||||
static struct samsung_bl_gpio_info smdk6440_bl_gpio_info = {
|
static struct samsung_bl_gpio_info smdk6440_bl_gpio_info = {
|
||||||
.no = S5P6440_GPF(15),
|
.no = S5P6440_GPF(15),
|
||||||
@@ -155,7 +149,7 @@ static void __init smdk6440_map_io(void)
|
|||||||
|
|
||||||
static void __init smdk6440_machine_init(void)
|
static void __init smdk6440_machine_init(void)
|
||||||
{
|
{
|
||||||
s3c24xx_ts_set_platdata(&s3c_ts_platform);
|
s3c24xx_ts_set_platdata(NULL);
|
||||||
|
|
||||||
s3c_i2c0_set_platdata(&s5p6440_i2c0_data);
|
s3c_i2c0_set_platdata(&s5p6440_i2c0_data);
|
||||||
s3c_i2c1_set_platdata(&s5p6440_i2c1_data);
|
s3c_i2c1_set_platdata(&s5p6440_i2c1_data);
|
||||||
|
@@ -148,12 +148,6 @@ static struct i2c_board_info smdk6450_i2c_devs1[] __initdata = {
|
|||||||
{ I2C_BOARD_INFO("24c128", 0x57), },/* Samsung S524AD0XD1 EEPROM */
|
{ I2C_BOARD_INFO("24c128", 0x57), },/* Samsung S524AD0XD1 EEPROM */
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
|
||||||
.delay = 10000,
|
|
||||||
.presc = 49,
|
|
||||||
.oversampling_shift = 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
/* LCD Backlight data */
|
/* LCD Backlight data */
|
||||||
static struct samsung_bl_gpio_info smdk6450_bl_gpio_info = {
|
static struct samsung_bl_gpio_info smdk6450_bl_gpio_info = {
|
||||||
.no = S5P6450_GPF(15),
|
.no = S5P6450_GPF(15),
|
||||||
@@ -174,7 +168,7 @@ static void __init smdk6450_map_io(void)
|
|||||||
|
|
||||||
static void __init smdk6450_machine_init(void)
|
static void __init smdk6450_machine_init(void)
|
||||||
{
|
{
|
||||||
s3c24xx_ts_set_platdata(&s3c_ts_platform);
|
s3c24xx_ts_set_platdata(NULL);
|
||||||
|
|
||||||
s3c_i2c0_set_platdata(&s5p6450_i2c0_data);
|
s3c_i2c0_set_platdata(&s5p6450_i2c0_data);
|
||||||
s3c_i2c1_set_platdata(&s5p6450_i2c1_data);
|
s3c_i2c1_set_platdata(&s5p6450_i2c1_data);
|
||||||
|
@@ -203,12 +203,6 @@ static struct platform_device *smdkc100_devices[] __initdata = {
|
|||||||
&s5pc100_device_spdif,
|
&s5pc100_device_spdif,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
|
||||||
.delay = 10000,
|
|
||||||
.presc = 49,
|
|
||||||
.oversampling_shift = 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
/* LCD Backlight data */
|
/* LCD Backlight data */
|
||||||
static struct samsung_bl_gpio_info smdkc100_bl_gpio_info = {
|
static struct samsung_bl_gpio_info smdkc100_bl_gpio_info = {
|
||||||
.no = S5PC100_GPD(0),
|
.no = S5PC100_GPD(0),
|
||||||
@@ -228,7 +222,7 @@ static void __init smdkc100_map_io(void)
|
|||||||
|
|
||||||
static void __init smdkc100_machine_init(void)
|
static void __init smdkc100_machine_init(void)
|
||||||
{
|
{
|
||||||
s3c24xx_ts_set_platdata(&s3c_ts_platform);
|
s3c24xx_ts_set_platdata(NULL);
|
||||||
|
|
||||||
/* I2C */
|
/* I2C */
|
||||||
s3c_i2c0_set_platdata(NULL);
|
s3c_i2c0_set_platdata(NULL);
|
||||||
|
@@ -14,7 +14,6 @@ config CPU_S5PV210
|
|||||||
select S3C_PL330_DMA
|
select S3C_PL330_DMA
|
||||||
select S5P_EXT_INT
|
select S5P_EXT_INT
|
||||||
select S5P_HRT
|
select S5P_HRT
|
||||||
select S5PV210_PM if PM
|
|
||||||
help
|
help
|
||||||
Enable S5PV210 CPU support
|
Enable S5PV210 CPU support
|
||||||
|
|
||||||
@@ -169,9 +168,4 @@ config MACH_TORBRECK
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
config S5PV210_PM
|
|
||||||
bool
|
|
||||||
help
|
|
||||||
Power Management code common to S5PV210
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
@@ -14,7 +14,7 @@ obj- :=
|
|||||||
|
|
||||||
obj-$(CONFIG_CPU_S5PV210) += cpu.o init.o clock.o dma.o
|
obj-$(CONFIG_CPU_S5PV210) += cpu.o init.o clock.o dma.o
|
||||||
obj-$(CONFIG_CPU_S5PV210) += setup-i2c0.o
|
obj-$(CONFIG_CPU_S5PV210) += setup-i2c0.o
|
||||||
obj-$(CONFIG_S5PV210_PM) += pm.o sleep.o
|
obj-$(CONFIG_PM) += pm.o sleep.o
|
||||||
|
|
||||||
# machine support
|
# machine support
|
||||||
|
|
||||||
|
@@ -265,12 +265,6 @@ static struct i2c_board_info smdkv210_i2c_devs2[] __initdata = {
|
|||||||
/* To Be Updated */
|
/* To Be Updated */
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
|
|
||||||
.delay = 10000,
|
|
||||||
.presc = 49,
|
|
||||||
.oversampling_shift = 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
/* LCD Backlight data */
|
/* LCD Backlight data */
|
||||||
static struct samsung_bl_gpio_info smdkv210_bl_gpio_info = {
|
static struct samsung_bl_gpio_info smdkv210_bl_gpio_info = {
|
||||||
.no = S5PV210_GPD0(3),
|
.no = S5PV210_GPD0(3),
|
||||||
@@ -296,7 +290,7 @@ static void __init smdkv210_machine_init(void)
|
|||||||
smdkv210_dm9000_init();
|
smdkv210_dm9000_init();
|
||||||
|
|
||||||
samsung_keypad_set_platdata(&smdkv210_keypad_data);
|
samsung_keypad_set_platdata(&smdkv210_keypad_data);
|
||||||
s3c24xx_ts_set_platdata(&s3c_ts_platform);
|
s3c24xx_ts_set_platdata(NULL);
|
||||||
|
|
||||||
s3c_i2c0_set_platdata(NULL);
|
s3c_i2c0_set_platdata(NULL);
|
||||||
s3c_i2c1_set_platdata(NULL);
|
s3c_i2c1_set_platdata(NULL);
|
||||||
|
@@ -1,100 +0,0 @@
|
|||||||
/* linux/include/asm-arm/plat-s3c24xx/map.h
|
|
||||||
*
|
|
||||||
* Copyright (c) 2008 Simtec Electronics
|
|
||||||
* Ben Dooks <ben@simtec.co.uk>
|
|
||||||
*
|
|
||||||
* S3C24XX - Memory map definitions
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __ASM_PLAT_S3C24XX_MAP_H
|
|
||||||
#define __ASM_PLAT_S3C24XX_MAP_H
|
|
||||||
|
|
||||||
/* interrupt controller is the first thing we put in, to make
|
|
||||||
* the assembly code for the irq detection easier
|
|
||||||
*/
|
|
||||||
#define S3C24XX_VA_IRQ S3C_VA_IRQ
|
|
||||||
#define S3C2410_PA_IRQ (0x4A000000)
|
|
||||||
#define S3C24XX_SZ_IRQ SZ_1M
|
|
||||||
|
|
||||||
/* memory controller registers */
|
|
||||||
#define S3C24XX_VA_MEMCTRL S3C_VA_MEM
|
|
||||||
#define S3C2410_PA_MEMCTRL (0x48000000)
|
|
||||||
#define S3C24XX_SZ_MEMCTRL SZ_1M
|
|
||||||
|
|
||||||
/* UARTs */
|
|
||||||
#define S3C24XX_VA_UART S3C_VA_UART
|
|
||||||
#define S3C2410_PA_UART (0x50000000)
|
|
||||||
#define S3C24XX_SZ_UART SZ_1M
|
|
||||||
#define S3C_UART_OFFSET (0x4000)
|
|
||||||
|
|
||||||
#define S3C_VA_UARTx(uart) (S3C_VA_UART + ((uart * S3C_UART_OFFSET)))
|
|
||||||
|
|
||||||
/* Timers */
|
|
||||||
#define S3C24XX_VA_TIMER S3C_VA_TIMER
|
|
||||||
#define S3C2410_PA_TIMER (0x51000000)
|
|
||||||
#define S3C24XX_SZ_TIMER SZ_1M
|
|
||||||
|
|
||||||
/* Clock and Power management */
|
|
||||||
#define S3C24XX_VA_CLKPWR S3C_VA_SYS
|
|
||||||
#define S3C24XX_SZ_CLKPWR SZ_1M
|
|
||||||
|
|
||||||
/* USB Device port */
|
|
||||||
#define S3C2410_PA_USBDEV (0x52000000)
|
|
||||||
#define S3C24XX_SZ_USBDEV SZ_1M
|
|
||||||
|
|
||||||
/* Watchdog */
|
|
||||||
#define S3C24XX_VA_WATCHDOG S3C_VA_WATCHDOG
|
|
||||||
#define S3C2410_PA_WATCHDOG (0x53000000)
|
|
||||||
#define S3C24XX_SZ_WATCHDOG SZ_1M
|
|
||||||
|
|
||||||
/* Standard size definitions for peripheral blocks. */
|
|
||||||
|
|
||||||
#define S3C24XX_SZ_IIS SZ_1M
|
|
||||||
#define S3C24XX_SZ_ADC SZ_1M
|
|
||||||
#define S3C24XX_SZ_SPI SZ_1M
|
|
||||||
#define S3C24XX_SZ_SDI SZ_1M
|
|
||||||
#define S3C24XX_SZ_NAND SZ_1M
|
|
||||||
|
|
||||||
/* GPIO ports */
|
|
||||||
|
|
||||||
/* the calculation for the VA of this must ensure that
|
|
||||||
* it is the same distance apart from the UART in the
|
|
||||||
* phsyical address space, as the initial mapping for the IO
|
|
||||||
* is done as a 1:1 mapping. This puts it (currently) at
|
|
||||||
* 0xFA800000, which is not in the way of any current mapping
|
|
||||||
* by the base system.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define S3C2410_PA_GPIO (0x56000000)
|
|
||||||
#define S3C24XX_VA_GPIO ((S3C24XX_PA_GPIO - S3C24XX_PA_UART) + S3C24XX_VA_UART)
|
|
||||||
#define S3C24XX_SZ_GPIO SZ_1M
|
|
||||||
|
|
||||||
|
|
||||||
/* ISA style IO, for each machine to sort out mappings for, if it
|
|
||||||
* implements it. We reserve two 16M regions for ISA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define S3C24XX_VA_ISA_WORD S3C2410_ADDR(0x02000000)
|
|
||||||
#define S3C24XX_VA_ISA_BYTE S3C2410_ADDR(0x03000000)
|
|
||||||
|
|
||||||
/* deal with the registers that move under the 2412/2413 */
|
|
||||||
|
|
||||||
#if defined(CONFIG_CPU_S3C2412) || defined(CONFIG_CPU_S3C2413)
|
|
||||||
#ifndef __ASSEMBLY__
|
|
||||||
extern void __iomem *s3c24xx_va_gpio2;
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_CPU_S3C2412_ONLY
|
|
||||||
#define S3C24XX_VA_GPIO2 (S3C24XX_VA_GPIO + 0x10)
|
|
||||||
#else
|
|
||||||
#define S3C24XX_VA_GPIO2 s3c24xx_va_gpio2
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#define s3c24xx_va_gpio2 S3C24XX_VA_GPIO
|
|
||||||
#define S3C24XX_VA_GPIO2 S3C24XX_VA_GPIO
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __ASM_PLAT_S3C24XX_MAP_H */
|
|
@@ -72,7 +72,6 @@ static inline unsigned long s5p_get_pll46xx(unsigned long baseclk,
|
|||||||
mdiv = (pll_con0 >> PLL46XX_MDIV_SHIFT) & PLL46XX_MDIV_MASK;
|
mdiv = (pll_con0 >> PLL46XX_MDIV_SHIFT) & PLL46XX_MDIV_MASK;
|
||||||
pdiv = (pll_con0 >> PLL46XX_PDIV_SHIFT) & PLL46XX_PDIV_MASK;
|
pdiv = (pll_con0 >> PLL46XX_PDIV_SHIFT) & PLL46XX_PDIV_MASK;
|
||||||
sdiv = (pll_con0 >> PLL46XX_SDIV_SHIFT) & PLL46XX_SDIV_MASK;
|
sdiv = (pll_con0 >> PLL46XX_SDIV_SHIFT) & PLL46XX_SDIV_MASK;
|
||||||
kdiv = pll_con1 & PLL46XX_KDIV_MASK;
|
|
||||||
|
|
||||||
if (pll_type == pll_4650c)
|
if (pll_type == pll_4650c)
|
||||||
kdiv = pll_con1 & PLL4650C_KDIV_MASK;
|
kdiv = pll_con1 & PLL4650C_KDIV_MASK;
|
||||||
|
@@ -58,22 +58,5 @@ struct platform_device s3c_device_hsmmc0 = {
|
|||||||
|
|
||||||
void s3c_sdhci0_set_platdata(struct s3c_sdhci_platdata *pd)
|
void s3c_sdhci0_set_platdata(struct s3c_sdhci_platdata *pd)
|
||||||
{
|
{
|
||||||
struct s3c_sdhci_platdata *set = &s3c_hsmmc0_def_platdata;
|
s3c_sdhci_set_platdata(pd, &s3c_hsmmc0_def_platdata);
|
||||||
|
|
||||||
set->cd_type = pd->cd_type;
|
|
||||||
set->ext_cd_init = pd->ext_cd_init;
|
|
||||||
set->ext_cd_cleanup = pd->ext_cd_cleanup;
|
|
||||||
set->ext_cd_gpio = pd->ext_cd_gpio;
|
|
||||||
set->ext_cd_gpio_invert = pd->ext_cd_gpio_invert;
|
|
||||||
|
|
||||||
if (pd->max_width)
|
|
||||||
set->max_width = pd->max_width;
|
|
||||||
if (pd->cfg_gpio)
|
|
||||||
set->cfg_gpio = pd->cfg_gpio;
|
|
||||||
if (pd->cfg_card)
|
|
||||||
set->cfg_card = pd->cfg_card;
|
|
||||||
if (pd->host_caps)
|
|
||||||
set->host_caps |= pd->host_caps;
|
|
||||||
if (pd->clk_type)
|
|
||||||
set->clk_type = pd->clk_type;
|
|
||||||
}
|
}
|
||||||
|
@@ -58,22 +58,5 @@ struct platform_device s3c_device_hsmmc1 = {
|
|||||||
|
|
||||||
void s3c_sdhci1_set_platdata(struct s3c_sdhci_platdata *pd)
|
void s3c_sdhci1_set_platdata(struct s3c_sdhci_platdata *pd)
|
||||||
{
|
{
|
||||||
struct s3c_sdhci_platdata *set = &s3c_hsmmc1_def_platdata;
|
s3c_sdhci_set_platdata(pd, &s3c_hsmmc1_def_platdata);
|
||||||
|
|
||||||
set->cd_type = pd->cd_type;
|
|
||||||
set->ext_cd_init = pd->ext_cd_init;
|
|
||||||
set->ext_cd_cleanup = pd->ext_cd_cleanup;
|
|
||||||
set->ext_cd_gpio = pd->ext_cd_gpio;
|
|
||||||
set->ext_cd_gpio_invert = pd->ext_cd_gpio_invert;
|
|
||||||
|
|
||||||
if (pd->max_width)
|
|
||||||
set->max_width = pd->max_width;
|
|
||||||
if (pd->cfg_gpio)
|
|
||||||
set->cfg_gpio = pd->cfg_gpio;
|
|
||||||
if (pd->cfg_card)
|
|
||||||
set->cfg_card = pd->cfg_card;
|
|
||||||
if (pd->host_caps)
|
|
||||||
set->host_caps |= pd->host_caps;
|
|
||||||
if (pd->clk_type)
|
|
||||||
set->clk_type = pd->clk_type;
|
|
||||||
}
|
}
|
||||||
|
@@ -59,22 +59,5 @@ struct platform_device s3c_device_hsmmc2 = {
|
|||||||
|
|
||||||
void s3c_sdhci2_set_platdata(struct s3c_sdhci_platdata *pd)
|
void s3c_sdhci2_set_platdata(struct s3c_sdhci_platdata *pd)
|
||||||
{
|
{
|
||||||
struct s3c_sdhci_platdata *set = &s3c_hsmmc2_def_platdata;
|
s3c_sdhci_set_platdata(pd, &s3c_hsmmc2_def_platdata);
|
||||||
|
|
||||||
set->cd_type = pd->cd_type;
|
|
||||||
set->ext_cd_init = pd->ext_cd_init;
|
|
||||||
set->ext_cd_cleanup = pd->ext_cd_cleanup;
|
|
||||||
set->ext_cd_gpio = pd->ext_cd_gpio;
|
|
||||||
set->ext_cd_gpio_invert = pd->ext_cd_gpio_invert;
|
|
||||||
|
|
||||||
if (pd->max_width)
|
|
||||||
set->max_width = pd->max_width;
|
|
||||||
if (pd->cfg_gpio)
|
|
||||||
set->cfg_gpio = pd->cfg_gpio;
|
|
||||||
if (pd->cfg_card)
|
|
||||||
set->cfg_card = pd->cfg_card;
|
|
||||||
if (pd->host_caps)
|
|
||||||
set->host_caps |= pd->host_caps;
|
|
||||||
if (pd->clk_type)
|
|
||||||
set->clk_type = pd->clk_type;
|
|
||||||
}
|
}
|
||||||
|
@@ -62,22 +62,5 @@ struct platform_device s3c_device_hsmmc3 = {
|
|||||||
|
|
||||||
void s3c_sdhci3_set_platdata(struct s3c_sdhci_platdata *pd)
|
void s3c_sdhci3_set_platdata(struct s3c_sdhci_platdata *pd)
|
||||||
{
|
{
|
||||||
struct s3c_sdhci_platdata *set = &s3c_hsmmc3_def_platdata;
|
s3c_sdhci_set_platdata(pd, &s3c_hsmmc3_def_platdata);
|
||||||
|
|
||||||
set->cd_type = pd->cd_type;
|
|
||||||
set->ext_cd_init = pd->ext_cd_init;
|
|
||||||
set->ext_cd_cleanup = pd->ext_cd_cleanup;
|
|
||||||
set->ext_cd_gpio = pd->ext_cd_gpio;
|
|
||||||
set->ext_cd_gpio_invert = pd->ext_cd_gpio_invert;
|
|
||||||
|
|
||||||
if (pd->max_width)
|
|
||||||
set->max_width = pd->max_width;
|
|
||||||
if (pd->cfg_gpio)
|
|
||||||
set->cfg_gpio = pd->cfg_gpio;
|
|
||||||
if (pd->cfg_card)
|
|
||||||
set->cfg_card = pd->cfg_card;
|
|
||||||
if (pd->host_caps)
|
|
||||||
set->host_caps |= pd->host_caps;
|
|
||||||
if (pd->clk_type)
|
|
||||||
set->clk_type = pd->clk_type;
|
|
||||||
}
|
}
|
||||||
|
@@ -43,8 +43,17 @@ struct platform_device s3c_device_ts = {
|
|||||||
.resource = s3c_ts_resource,
|
.resource = s3c_ts_resource,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct s3c2410_ts_mach_info default_ts_data __initdata = {
|
||||||
|
.delay = 10000,
|
||||||
|
.presc = 49,
|
||||||
|
.oversampling_shift = 2,
|
||||||
|
};
|
||||||
|
|
||||||
void __init s3c24xx_ts_set_platdata(struct s3c2410_ts_mach_info *pd)
|
void __init s3c24xx_ts_set_platdata(struct s3c2410_ts_mach_info *pd)
|
||||||
{
|
{
|
||||||
|
if (!pd)
|
||||||
|
pd = &default_ts_data;
|
||||||
|
|
||||||
s3c_set_platdata(pd, sizeof(struct s3c2410_ts_mach_info),
|
s3c_set_platdata(pd, sizeof(struct s3c2410_ts_mach_info),
|
||||||
&s3c_device_ts);
|
&s3c_device_ts);
|
||||||
}
|
}
|
||||||
|
@@ -18,11 +18,6 @@ extern struct s3c2410_dma_chan s3c2410_chans[S3C_DMA_CHANNELS];
|
|||||||
#define DMA_CH_VALID (1<<31)
|
#define DMA_CH_VALID (1<<31)
|
||||||
#define DMA_CH_NEVER (1<<30)
|
#define DMA_CH_NEVER (1<<30)
|
||||||
|
|
||||||
struct s3c24xx_dma_addr {
|
|
||||||
unsigned long from;
|
|
||||||
unsigned long to;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* struct s3c24xx_dma_map
|
/* struct s3c24xx_dma_map
|
||||||
*
|
*
|
||||||
* this holds the mapping information for the channel selected
|
* this holds the mapping information for the channel selected
|
||||||
@@ -31,7 +26,6 @@ struct s3c24xx_dma_addr {
|
|||||||
|
|
||||||
struct s3c24xx_dma_map {
|
struct s3c24xx_dma_map {
|
||||||
const char *name;
|
const char *name;
|
||||||
struct s3c24xx_dma_addr hw_addr;
|
|
||||||
|
|
||||||
unsigned long channels[S3C_DMA_CHANNELS];
|
unsigned long channels[S3C_DMA_CHANNELS];
|
||||||
unsigned long channels_rx[S3C_DMA_CHANNELS];
|
unsigned long channels_rx[S3C_DMA_CHANNELS];
|
||||||
|
84
arch/arm/plat-samsung/include/plat/map-s3c.h
Normal file
84
arch/arm/plat-samsung/include/plat/map-s3c.h
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
/* linux/arch/arm/plat-samsung/include/plat/map-s3c.h
|
||||||
|
*
|
||||||
|
* Copyright (c) 2008 Simtec Electronics
|
||||||
|
* Ben Dooks <ben@simtec.co.uk>
|
||||||
|
*
|
||||||
|
* S3C24XX - Memory map definitions
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __ASM_PLAT_MAP_S3C_H
|
||||||
|
#define __ASM_PLAT_MAP_S3C_H __FILE__
|
||||||
|
|
||||||
|
#define S3C24XX_VA_IRQ S3C_VA_IRQ
|
||||||
|
#define S3C24XX_VA_MEMCTRL S3C_VA_MEM
|
||||||
|
#define S3C24XX_VA_UART S3C_VA_UART
|
||||||
|
|
||||||
|
#define S3C24XX_VA_TIMER S3C_VA_TIMER
|
||||||
|
#define S3C24XX_VA_CLKPWR S3C_VA_SYS
|
||||||
|
#define S3C24XX_VA_WATCHDOG S3C_VA_WATCHDOG
|
||||||
|
|
||||||
|
#define S3C2412_VA_SSMC S3C_ADDR_CPU(0x00000000)
|
||||||
|
#define S3C2412_VA_EBI S3C_ADDR_CPU(0x00010000)
|
||||||
|
|
||||||
|
#define S3C2410_PA_UART (0x50000000)
|
||||||
|
#define S3C24XX_PA_UART S3C2410_PA_UART
|
||||||
|
|
||||||
|
#ifndef S3C_UART_OFFSET
|
||||||
|
#define S3C_UART_OFFSET (0x400)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GPIO ports
|
||||||
|
*
|
||||||
|
* the calculation for the VA of this must ensure that
|
||||||
|
* it is the same distance apart from the UART in the
|
||||||
|
* phsyical address space, as the initial mapping for the IO
|
||||||
|
* is done as a 1:1 mapping. This puts it (currently) at
|
||||||
|
* 0xFA800000, which is not in the way of any current mapping
|
||||||
|
* by the base system.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define S3C2410_PA_GPIO (0x56000000)
|
||||||
|
#define S3C24XX_PA_GPIO S3C2410_PA_GPIO
|
||||||
|
|
||||||
|
#define S3C24XX_VA_GPIO ((S3C24XX_PA_GPIO - S3C24XX_PA_UART) + S3C24XX_VA_UART)
|
||||||
|
#define S3C64XX_VA_GPIO S3C_ADDR_CPU(0x00000000)
|
||||||
|
|
||||||
|
#define S3C64XX_VA_MODEM S3C_ADDR_CPU(0x00100000)
|
||||||
|
#define S3C64XX_VA_USB_HSPHY S3C_ADDR_CPU(0x00200000)
|
||||||
|
|
||||||
|
#define S3C_VA_USB_HSPHY S3C64XX_VA_USB_HSPHY
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ISA style IO, for each machine to sort out mappings for,
|
||||||
|
* if it implements it. We reserve two 16M regions for ISA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define S3C2410_ADDR(x) S3C_ADDR(x)
|
||||||
|
|
||||||
|
#define S3C24XX_VA_ISA_WORD S3C2410_ADDR(0x02000000)
|
||||||
|
#define S3C24XX_VA_ISA_BYTE S3C2410_ADDR(0x03000000)
|
||||||
|
|
||||||
|
/* deal with the registers that move under the 2412/2413 */
|
||||||
|
|
||||||
|
#if defined(CONFIG_CPU_S3C2412) || defined(CONFIG_CPU_S3C2413)
|
||||||
|
#ifndef __ASSEMBLY__
|
||||||
|
extern void __iomem *s3c24xx_va_gpio2;
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_CPU_S3C2412_ONLY
|
||||||
|
#define S3C24XX_VA_GPIO2 (S3C24XX_VA_GPIO + 0x10)
|
||||||
|
#else
|
||||||
|
#define S3C24XX_VA_GPIO2 s3c24xx_va_gpio2
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#define s3c24xx_va_gpio2 S3C24XX_VA_GPIO
|
||||||
|
#define S3C24XX_VA_GPIO2 S3C24XX_VA_GPIO
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <plat/map-s5p.h>
|
||||||
|
|
||||||
|
#endif /* __ASM_PLAT_MAP_S3C_H */
|
@@ -1,4 +1,4 @@
|
|||||||
/* linux/arch/arm/plat-s5p/include/plat/map-s5p.h
|
/* linux/arch/arm/plat-samsung/include/plat/map-s5p.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2010 Samsung Electronics Co., Ltd.
|
* Copyright (c) 2010 Samsung Electronics Co., Ltd.
|
||||||
* http://www.samsung.com/
|
* http://www.samsung.com/
|
||||||
@@ -40,8 +40,6 @@
|
|||||||
#define S5P_VA_GIC_CPU S3C_ADDR(0x02810000)
|
#define S5P_VA_GIC_CPU S3C_ADDR(0x02810000)
|
||||||
#define S5P_VA_GIC_DIST S3C_ADDR(0x02820000)
|
#define S5P_VA_GIC_DIST S3C_ADDR(0x02820000)
|
||||||
|
|
||||||
#define S3C_VA_USB_HSPHY S3C_ADDR(0x02900000)
|
|
||||||
|
|
||||||
#define VA_VIC(x) (S3C_VA_IRQ + ((x) * 0x10000))
|
#define VA_VIC(x) (S3C_VA_IRQ + ((x) * 0x10000))
|
||||||
#define VA_VIC0 VA_VIC(0)
|
#define VA_VIC0 VA_VIC(0)
|
||||||
#define VA_VIC1 VA_VIC(1)
|
#define VA_VIC1 VA_VIC(1)
|
||||||
@@ -58,4 +56,6 @@
|
|||||||
#define S3C_UART_OFFSET (0x400)
|
#define S3C_UART_OFFSET (0x400)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <plat/map-s3c.h>
|
||||||
|
|
||||||
#endif /* __ASM_PLAT_MAP_S5P_H */
|
#endif /* __ASM_PLAT_MAP_S5P_H */
|
@@ -86,6 +86,13 @@ struct s3c_sdhci_platdata {
|
|||||||
struct mmc_card *card);
|
struct mmc_card *card);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* s3c_sdhci_set_platdata() - common helper for setting SDHCI platform data
|
||||||
|
* @pd: The default platform data for this device.
|
||||||
|
* @set: Pointer to the platform data to fill in.
|
||||||
|
*/
|
||||||
|
extern void s3c_sdhci_set_platdata(struct s3c_sdhci_platdata *pd,
|
||||||
|
struct s3c_sdhci_platdata *set);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* s3c_sdhci0_set_platdata - Set platform data for S3C SDHCI device.
|
* s3c_sdhci0_set_platdata - Set platform data for S3C SDHCI device.
|
||||||
* @pd: Platform data to register to device.
|
* @pd: Platform data to register to device.
|
||||||
|
@@ -14,6 +14,7 @@
|
|||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
|
|
||||||
#include <plat/devs.h>
|
#include <plat/devs.h>
|
||||||
|
#include <plat/sdhci.h>
|
||||||
|
|
||||||
void __init *s3c_set_platdata(void *pd, size_t pdsize,
|
void __init *s3c_set_platdata(void *pd, size_t pdsize,
|
||||||
struct platform_device *pdev)
|
struct platform_device *pdev)
|
||||||
@@ -35,3 +36,24 @@ void __init *s3c_set_platdata(void *pd, size_t pdsize,
|
|||||||
pdev->dev.platform_data = npd;
|
pdev->dev.platform_data = npd;
|
||||||
return npd;
|
return npd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void s3c_sdhci_set_platdata(struct s3c_sdhci_platdata *pd,
|
||||||
|
struct s3c_sdhci_platdata *set)
|
||||||
|
{
|
||||||
|
set->cd_type = pd->cd_type;
|
||||||
|
set->ext_cd_init = pd->ext_cd_init;
|
||||||
|
set->ext_cd_cleanup = pd->ext_cd_cleanup;
|
||||||
|
set->ext_cd_gpio = pd->ext_cd_gpio;
|
||||||
|
set->ext_cd_gpio_invert = pd->ext_cd_gpio_invert;
|
||||||
|
|
||||||
|
if (pd->max_width)
|
||||||
|
set->max_width = pd->max_width;
|
||||||
|
if (pd->cfg_gpio)
|
||||||
|
set->cfg_gpio = pd->cfg_gpio;
|
||||||
|
if (pd->cfg_card)
|
||||||
|
set->cfg_card = pd->cfg_card;
|
||||||
|
if (pd->host_caps)
|
||||||
|
set->host_caps |= pd->host_caps;
|
||||||
|
if (pd->clk_type)
|
||||||
|
set->clk_type = pd->clk_type;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user