Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0f75a96b authored by Kamil Debski's avatar Kamil Debski Committed by Kukjin Kim
Browse files

ARM: S5P: Add support for MFC device



Add support for MFC device to plat-s5p, mach-exynos4, mach-s5pv210:
 - clock support
 - memory mapping and reserving
 - s5p_device_mfc platform device

Signed-off-by: default avatarKamil Debski <k.debski@samsung.com>
Signed-off-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: default avatarKukjin Kim <kgene.kim@samsung.com>
parent 35ce909e
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -753,6 +753,7 @@ config ARCH_S5PV210
	bool "Samsung S5PV210/S5PC110"
	select CPU_V7
	select ARCH_SPARSEMEM_ENABLE
	select ARCH_HAS_HOLES_MEMORYMODEL
	select GENERIC_GPIO
	select HAVE_CLK
	select CLKDEV_LOOKUP
@@ -770,6 +771,7 @@ config ARCH_EXYNOS4
	bool "Samsung EXYNOS4"
	select CPU_V7
	select ARCH_SPARSEMEM_ENABLE
	select ARCH_HAS_HOLES_MEMORYMODEL
	select GENERIC_GPIO
	select HAVE_CLK
	select CLKDEV_LOOKUP
+61 −0
Original line number Diff line number Diff line
@@ -527,6 +527,11 @@ static struct clk init_clocks_off[] = {
		.name		= "fimg2d",
		.enable		= exynos4_clk_ip_image_ctrl,
		.ctrlbit	= (1 << 0),
	}, {
		.name		= "mfc",
		.devname	= "s5p-mfc",
		.enable		= exynos4_clk_ip_mfc_ctrl,
		.ctrlbit	= (1 << 0),
	}, {
		.name		= "i2c",
		.devname	= "s3c2440-i2c.0",
@@ -731,6 +736,52 @@ static struct clksrc_sources clkset_mout_g2d = {
	.nr_sources	= ARRAY_SIZE(clkset_mout_g2d_list),
};

static struct clk *clkset_mout_mfc0_list[] = {
	[0] = &clk_mout_mpll.clk,
	[1] = &clk_sclk_apll.clk,
};

static struct clksrc_sources clkset_mout_mfc0 = {
	.sources	= clkset_mout_mfc0_list,
	.nr_sources	= ARRAY_SIZE(clkset_mout_mfc0_list),
};

static struct clksrc_clk clk_mout_mfc0 = {
	.clk	= {
		.name		= "mout_mfc0",
	},
	.sources	= &clkset_mout_mfc0,
	.reg_src	= { .reg = S5P_CLKSRC_MFC, .shift = 0, .size = 1 },
};

static struct clk *clkset_mout_mfc1_list[] = {
	[0] = &clk_mout_epll.clk,
	[1] = &clk_sclk_vpll.clk,
};

static struct clksrc_sources clkset_mout_mfc1 = {
	.sources	= clkset_mout_mfc1_list,
	.nr_sources	= ARRAY_SIZE(clkset_mout_mfc1_list),
};

static struct clksrc_clk clk_mout_mfc1 = {
	.clk	= {
		.name		= "mout_mfc1",
	},
	.sources	= &clkset_mout_mfc1,
	.reg_src	= { .reg = S5P_CLKSRC_MFC, .shift = 4, .size = 1 },
};

static struct clk *clkset_mout_mfc_list[] = {
	[0] = &clk_mout_mfc0.clk,
	[1] = &clk_mout_mfc1.clk,
};

static struct clksrc_sources clkset_mout_mfc = {
	.sources	= clkset_mout_mfc_list,
	.nr_sources	= ARRAY_SIZE(clkset_mout_mfc_list),
};

static struct clksrc_clk clk_dout_mmc0 = {
	.clk		= {
		.name		= "dout_mmc0",
@@ -972,6 +1023,14 @@ static struct clksrc_clk clksrcs[] = {
		.sources = &clkset_mout_g2d,
		.reg_src = { .reg = S5P_CLKSRC_IMAGE, .shift = 8, .size = 1 },
		.reg_div = { .reg = S5P_CLKDIV_IMAGE, .shift = 0, .size = 4 },
	}, {
		.clk		= {
			.name		= "sclk_mfc",
			.devname	= "s5p-mfc",
		},
		.sources = &clkset_mout_mfc,
		.reg_src = { .reg = S5P_CLKSRC_MFC, .shift = 8, .size = 1 },
		.reg_div = { .reg = S5P_CLKDIV_MFC, .shift = 0, .size = 4 },
	}, {
		.clk		= {
			.name		= "sclk_mmc",
@@ -1049,6 +1108,8 @@ static struct clksrc_clk *sysclks[] = {
	&clk_dout_mmc2,
	&clk_dout_mmc3,
	&clk_dout_mmc4,
	&clk_mout_mfc0,
	&clk_mout_mfc1,
};

static int xtal_rate;
+2 −0
Original line number Diff line number Diff line
@@ -108,6 +108,7 @@

#define EXYNOS4_PA_EHCI			0x12580000
#define EXYNOS4_PA_HSPHY		0x125B0000
#define EXYNOS4_PA_MFC			0x13400000

#define EXYNOS4_PA_UART			0x13800000

@@ -155,6 +156,7 @@
#define S5P_PA_ONENAND_DMA		EXYNOS4_PA_ONENAND_DMA
#define S5P_PA_SDRAM			EXYNOS4_PA_SDRAM
#define S5P_PA_SROMC			EXYNOS4_PA_SROMC
#define S5P_PA_MFC			EXYNOS4_PA_MFC
#define S5P_PA_SYSCON			EXYNOS4_PA_SYSCON
#define S5P_PA_TIMER			EXYNOS4_PA_TIMER
#define S5P_PA_EHCI			EXYNOS4_PA_EHCI
+7 −0
Original line number Diff line number Diff line
@@ -323,6 +323,12 @@ static struct clk init_clocks_off[] = {
		.parent		= &clk_hclk_dsys.clk,
		.enable		= s5pv210_clk_ip0_ctrl,
		.ctrlbit	= (1 << 26),
	}, {
		.name		= "mfc",
		.devname	= "s5p-mfc",
		.parent		= &clk_pclk_psys.clk,
		.enable		= s5pv210_clk_ip0_ctrl,
		.ctrlbit	= (1 << 16),
	}, {
		.name		= "otg",
		.parent		= &clk_hclk_psys.clk,
@@ -914,6 +920,7 @@ static struct clksrc_clk clksrcs[] = {
	}, {
		.clk		= {
			.name		= "sclk_mfc",
			.devname	= "s5p-mfc",
			.enable		= s5pv210_clk_ip0_ctrl,
			.ctrlbit	= (1 << 16),
		},
+3 −0
Original line number Diff line number Diff line
@@ -59,6 +59,8 @@

#define S5PV210_PA_CFCON		0xE8200000

#define S5PV210_PA_MFC			0xF1700000

#define S5PV210_PA_HSMMC(x)		(0xEB000000 + ((x) * 0x100000))

#define S5PV210_PA_HSOTG		0xEC000000
@@ -107,6 +109,7 @@
#define S5P_PA_FIMC1			S5PV210_PA_FIMC1
#define S5P_PA_FIMC2			S5PV210_PA_FIMC2
#define S5P_PA_MIPI_CSIS0		S5PV210_PA_MIPI_CSIS
#define S5P_PA_MFC			S5PV210_PA_MFC
#define S5P_PA_ONENAND			S5PC110_PA_ONENAND
#define S5P_PA_ONENAND_DMA		S5PC110_PA_ONENAND_DMA
#define S5P_PA_SDRAM			S5PV210_PA_SDRAM
Loading