Kamil Debski wrote: > > This patch adds platform support for Multi Format Codec 5.1. > MFC 5.1 is capable of handling a range of video codecs and this driver > provides V4L2 interface for video decoding. > > Signed-off-by: Kamil Debski <k.debski@xxxxxxxxxxx> > Signed-off-by: Kyungmin Park <kyungmin.park@xxxxxxxxxxx> > --- > arch/arm/mach-s5pv310/clock.c | 28 ++++++++++++- > arch/arm/mach-s5pv310/include/mach/map.h | 2 + > arch/arm/mach-s5pv310/include/mach/regs-clock.h | 3 + > arch/arm/plat-s5p/Kconfig | 5 ++ > arch/arm/plat-s5p/Makefile | 2 +- > arch/arm/plat-s5p/dev-mfc.c | 49 > +++++++++++++++++++++++ > arch/arm/plat-samsung/include/plat/devs.h | 1 + > 7 files changed, 88 insertions(+), 2 deletions(-) > create mode 100644 arch/arm/plat-s5p/dev-mfc.c > > diff --git a/arch/arm/mach-s5pv310/clock.c b/arch/arm/mach-s5pv310/clock.c > index f142b8c..d28fa6f 100644 > --- a/arch/arm/mach-s5pv310/clock.c > +++ b/arch/arm/mach-s5pv310/clock.c > @@ -523,6 +523,11 @@ static struct clk init_clocks_off[] = { > .enable = s5pv310_clk_ip_lcd1_ctrl, > .ctrlbit = (1 << 0), > }, { > + .name = "mfc", > + .id = -1, > + .enable = s5pv310_clk_ip_mfc_ctrl, Where is "s5pv310_clk_ip_mfc_ctrl" in your patch or mainline? Please make sure that your patch can be applied into current maintainer's tree before submitting. > + .ctrlbit = (1 << 0), > + }, { > .name = "hsmmc", > .id = 0, > .parent = &clk_aclk_133.clk, > @@ -734,6 +739,18 @@ static struct clksrc_sources clkset_group = { > .nr_sources = ARRAY_SIZE(clkset_group_list), > }; > > +static struct clk *clkset_group1_list[] = { What group1? We can know it is used for MFC now, but if there is in just clock.c, can't do it. > + [0] = &clk_mout_mpll.clk, > + [1] = &clk_sclk_apll.clk, > + [2] = &clk_mout_epll.clk, > + [3] = &clk_sclk_vpll.clk, As you know, above sources are not connected to one same MUX, so should be separated. > +}; > + > +static struct clksrc_sources clkset_group1 = { > + .sources = clkset_group1_list, > + .nr_sources = ARRAY_SIZE(clkset_group1_list), > +}; > + > static struct clk *clkset_mout_g2d0_list[] = { > [0] = &clk_mout_mpll.clk, > [1] = &clk_sclk_apll.clk, > @@ -1076,7 +1093,16 @@ static struct clksrc_clk clksrcs[] = { > .ctrlbit = (1 << 16), > }, > .reg_div = { .reg = S5P_CLKDIV_FSYS3, .shift = 8, .size = 8 }, > - } > + }, { > + .clk = { > + .name = "sclk_mfc", > + .id = -1, > + }, > + .sources = &clkset_group1, > + .reg_src = { .reg = S5P_CLKSRC_MFC, .shift = 8, .size = 1 }, > + .reg_div = { .reg = S5P_CLKDIV_MFC, .shift = 0, .size = 4 }, > + }, > + > }; > > /* Clock initialization code */ > diff --git a/arch/arm/mach-s5pv310/include/mach/map.h b/arch/arm/mach- > s5pv310/include/mach/map.h > index 0db3a47..576ba55 100644 > --- a/arch/arm/mach-s5pv310/include/mach/map.h > +++ b/arch/arm/mach-s5pv310/include/mach/map.h > @@ -29,6 +29,7 @@ > #define S5PV310_PA_FIMC1 0x11810000 > #define S5PV310_PA_FIMC2 0x11820000 > #define S5PV310_PA_FIMC3 0x11830000 > +#define S5PV310_PA_MFC 0x13400000 > #define S5PV310_PA_I2S0 0x03830000 > #define S5PV310_PA_I2S1 0xE3100000 > #define S5PV310_PA_I2S2 0xE2A00000 > @@ -129,6 +130,7 @@ > #define S5P_PA_FIMC1 S5PV310_PA_FIMC1 > #define S5P_PA_FIMC2 S5PV310_PA_FIMC2 > #define S5P_PA_FIMC3 S5PV310_PA_FIMC3 > +#define S5P_PA_MFC S5PV310_PA_MFC > #define S5P_PA_ONENAND S5PC210_PA_ONENAND > #define S5P_PA_ONENAND_DMA S5PC210_PA_ONENAND_DMA > #define S5P_PA_SDRAM S5PV310_PA_SDRAM > diff --git a/arch/arm/mach-s5pv310/include/mach/regs-clock.h b/arch/arm/mach- > s5pv310/include/mach/regs-clock.h > index 9ef5f0c..f6b8181 100644 > --- a/arch/arm/mach-s5pv310/include/mach/regs-clock.h > +++ b/arch/arm/mach-s5pv310/include/mach/regs-clock.h > @@ -176,4 +176,7 @@ > > #define S5P_EPLL_CON S5P_EPLL_CON0 > > +/* MFC related */ > +#define S5P_CLKSRC_MFC S5P_CLKREG(0x0C228) > +#define S5P_CLKDIV_MFC S5P_CLKREG(0x0C528) > #endif /* __ASM_ARCH_REGS_CLOCK_H */ > diff --git a/arch/arm/plat-s5p/Kconfig b/arch/arm/plat-s5p/Kconfig > index 4166964..ea9032e 100644 > --- a/arch/arm/plat-s5p/Kconfig > +++ b/arch/arm/plat-s5p/Kconfig > @@ -5,6 +5,11 @@ > # > # Licensed under GPLv2 > > +config S5P_DEV_MFC > + bool > + help > + Compile in platform device definitions for MFC > + Hmm...above S5P_DEV_MFC should be moved after PLAT_S5P? > config PLAT_S5P > bool > depends on (ARCH_S5P64X0 || ARCH_S5P6442 || ARCH_S5PC100 || > ARCH_S5PV210 || ARCH_S5PV310) > diff --git a/arch/arm/plat-s5p/Makefile b/arch/arm/plat-s5p/Makefile > index cfcd1db..54e330d 100644 > --- a/arch/arm/plat-s5p/Makefile > +++ b/arch/arm/plat-s5p/Makefile > @@ -24,7 +24,7 @@ obj-$(CONFIG_SUSPEND) += pm.o > obj-$(CONFIG_SUSPEND) += irq-pm.o > > # devices > - > +obj-$(CONFIG_S5P_DEV_MFC) += dev-mfc.o > obj-$(CONFIG_S5P_DEV_FIMC0) += dev-fimc0.o > obj-$(CONFIG_S5P_DEV_FIMC1) += dev-fimc1.o > obj-$(CONFIG_S5P_DEV_FIMC2) += dev-fimc2.o > diff --git a/arch/arm/plat-s5p/dev-mfc.c b/arch/arm/plat-s5p/dev-mfc.c > new file mode 100644 > index 0000000..0dfcb1a > --- /dev/null > +++ b/arch/arm/plat-s5p/dev-mfc.c > @@ -0,0 +1,49 @@ > +/* linux/arch/arm/plat-s5p/dev-mfc.c > + * > + * Copyright (c) 2010 Samsung Electronics > + * > + * Base S5P MFC 5.1 resource and device 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. > + */ > + > + > +#include <linux/kernel.h> > +#include <linux/interrupt.h> > +#include <linux/platform_device.h> > +#include <linux/dma-mapping.h> > +#include <linux/ioport.h> > + > +#include <mach/map.h> > +#include <plat/devs.h> > +#include <plat/irqs.h> > + > +static struct resource s5p_mfc_resource[] = { > + [0] = { > + .start = S5P_PA_MFC, > + .end = S5P_PA_MFC + SZ_64K - 1, > + .flags = IORESOURCE_MEM, > + }, > + [1] = { > + .start = IRQ_MFC, > + .end = IRQ_MFC, > + .flags = IORESOURCE_IRQ, > + } > +}; > + > +static u64 s5p_mfc_dma_mask = DMA_BIT_MASK(32); > + > +struct platform_device s5p_device_mfc = { > + .name = "s5p-mfc", > + .id = -1, > + .num_resources = ARRAY_SIZE(s5p_mfc_resource), > + .resource = s5p_mfc_resource, > + .dev = { > + .dma_mask = &s5p_mfc_dma_mask, > + .coherent_dma_mask = DMA_BIT_MASK(32), > + }, > +}; > + > +EXPORT_SYMBOL(s5p_device_mfc); > diff --git a/arch/arm/plat-samsung/include/plat/devs.h b/arch/arm/plat- > samsung/include/plat/devs.h > index 9f42dee..6a869b8 100644 > --- a/arch/arm/plat-samsung/include/plat/devs.h > +++ b/arch/arm/plat-samsung/include/plat/devs.h > @@ -135,6 +135,7 @@ extern struct platform_device s5p_device_fimc1; > extern struct platform_device s5p_device_fimc2; > extern struct platform_device s5p_device_fimc3; > > +extern struct platform_device s5p_device_mfc; > extern struct platform_device s5p_device_mipi_csis0; > extern struct platform_device s5p_device_mipi_csis1; > > -- > 1.6.3.3 Thanks. Best regards, Kgene. -- Kukjin Kim <kgene.kim@xxxxxxxxxxx>, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd. -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html