devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arun Kumar K <arunkk.samsung@gmail.com>
To: Arun Kumar K <arun.kk@samsung.com>
Cc: linux-samsung-soc@vger.kernel.org,
	devicetree-discuss@lists.ozlabs.org, kgene.kim@samsung.com,
	k.debski@samsung.com, jtp.park@samsung.com,
	thomas.abraham@linaro.org, k.lewandowsk@samsung.com,
	s.nawrocki@samsung.com, ch.naveen@samsung.com, joshi@samsung.com
Subject: Re: [PATCH v5] ARM: EXYNOS: Add MFC device tree support
Date: Fri, 12 Oct 2012 12:12:59 +0530	[thread overview]
Message-ID: <CALt3h7_1a3d0yXWLVqWgATgaJ897V1beerfZ==AkDd5AhkMFmQ@mail.gmail.com> (raw)
In-Reply-To: <1348765784-7508-2-git-send-email-arun.kk@samsung.com>

Hi all,
Any comments / acks on this?

Regards
Arun

On Thu, Sep 27, 2012 at 10:39 PM, Arun Kumar K <arun.kk@samsung.com> wrote:
> This patch adds device tree entry for MFC v6 in the Exynos5
> SoC. Makes the required changes in the clock files and adds
> MFC to the DT device list.
>
> Signed-off-by: Naveen Krishna Chatradhi <ch.naveen@samsung.com>
> Signed-off-by: Arun Kumar K <arun.kk@samsung.com>
> ---
>  .../devicetree/bindings/media/s5p-mfc.txt          |   23 +++++++++++++
>  arch/arm/boot/dts/exynos5250-smdk5250.dts          |    5 +++
>  arch/arm/boot/dts/exynos5250.dtsi                  |    6 +++
>  arch/arm/mach-exynos/Kconfig                       |    1 +
>  arch/arm/mach-exynos/clock-exynos5.c               |    2 +-
>  arch/arm/mach-exynos/mach-exynos5-dt.c             |   16 +++++++++
>  arch/arm/plat-samsung/devs.c                       |    1 +
>  arch/arm/plat-samsung/include/plat/mfc.h           |   11 ++++++
>  arch/arm/plat-samsung/s5p-dev-mfc.c                |   34 ++++++++++++++++++++
>  9 files changed, 98 insertions(+), 1 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/media/s5p-mfc.txt
>
> diff --git a/Documentation/devicetree/bindings/media/s5p-mfc.txt b/Documentation/devicetree/bindings/media/s5p-mfc.txt
> new file mode 100644
> index 0000000..67ec3d4
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/s5p-mfc.txt
> @@ -0,0 +1,23 @@
> +* Samsung Multi Format Codec (MFC)
> +
> +Multi Format Codec (MFC) is the IP present in Samsung SoCs which
> +supports high resolution decoding and encoding functionalities.
> +The MFC device driver is a v4l2 driver which can encode/decode
> +video raw/elementary streams and has support for all popular
> +video codecs.
> +
> +Required properties:
> +  - compatible : value should be either one among the following
> +       (a) "samsung,mfc-v5" for MFC v5 present in Exynos4 SoCs
> +       (b) "samsung,mfc-v6" for MFC v6 present in Exynos5 SoCs
> +
> +  - reg : Physical base address of the IP registers and length of memory
> +         mapped region.
> +
> +  - interrupts : MFC interrupt number to the CPU.
> +
> +  - samsung,mfc-r : Base address of the first memory bank used by MFC
> +                   for DMA contiguous memory allocation and its size.
> +
> +  - samsung,mfc-l : Base address of the second memory bank used by MFC
> +                   for DMA contiguous memory allocation and its size.
> diff --git a/arch/arm/boot/dts/exynos5250-smdk5250.dts b/arch/arm/boot/dts/exynos5250-smdk5250.dts
> index a352df4..21d4ccd 100644
> --- a/arch/arm/boot/dts/exynos5250-smdk5250.dts
> +++ b/arch/arm/boot/dts/exynos5250-smdk5250.dts
> @@ -166,4 +166,9 @@
>         spi_2: spi@12d40000 {
>                 status = "disabled";
>         };
> +
> +       codec@11000000 {
> +               samsung,mfc-r = <0x43000000 0x800000>;
> +               samsung,mfc-l = <0x51000000 0x800000>;
> +       };
>  };
> diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi
> index dddfd6e..49546bc 100644
> --- a/arch/arm/boot/dts/exynos5250.dtsi
> +++ b/arch/arm/boot/dts/exynos5250.dtsi
> @@ -62,6 +62,12 @@
>                 interrupts = <0 42 0>;
>         };
>
> +       codec@11000000 {
> +               compatible = "samsung,mfc-v6";
> +               reg = <0x11000000 0x10000>;
> +               interrupts = <0 96 0>;
> +       };
> +
>         rtc {
>                 compatible = "samsung,s3c6410-rtc";
>                 reg = <0x101E0000 0x100>;
> diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
> index 4372075..a0677f6 100644
> --- a/arch/arm/mach-exynos/Kconfig
> +++ b/arch/arm/mach-exynos/Kconfig
> @@ -64,6 +64,7 @@ config SOC_EXYNOS5250
>         select SAMSUNG_DMADEV
>         select S5P_PM if PM
>         select S5P_SLEEP if PM
> +       select S5P_DEV_MFC
>         help
>           Enable EXYNOS5250 SoC support
>
> diff --git a/arch/arm/mach-exynos/clock-exynos5.c b/arch/arm/mach-exynos/clock-exynos5.c
> index bab6140..46dfea6 100644
> --- a/arch/arm/mach-exynos/clock-exynos5.c
> +++ b/arch/arm/mach-exynos/clock-exynos5.c
> @@ -664,7 +664,7 @@ static struct clk exynos5_init_clocks_off[] = {
>                 .ctrlbit        = (1 << 25),
>         }, {
>                 .name           = "mfc",
> -               .devname        = "s5p-mfc",
> +               .devname        = "s5p-mfc-v6",
>                 .enable         = exynos5_clk_ip_mfc_ctrl,
>                 .ctrlbit        = (1 << 0),
>         }, {
> diff --git a/arch/arm/mach-exynos/mach-exynos5-dt.c b/arch/arm/mach-exynos/mach-exynos5-dt.c
> index fee9dcd..b4ed43a 100644
> --- a/arch/arm/mach-exynos/mach-exynos5-dt.c
> +++ b/arch/arm/mach-exynos/mach-exynos5-dt.c
> @@ -11,6 +11,8 @@
>
>  #include <linux/of_platform.h>
>  #include <linux/serial_core.h>
> +#include <linux/memblock.h>
> +#include <linux/of_fdt.h>
>
>  #include <asm/mach/arch.h>
>  #include <asm/hardware/gic.h>
> @@ -18,6 +20,7 @@
>
>  #include <plat/cpu.h>
>  #include <plat/regs-serial.h>
> +#include <plat/mfc.h>
>
>  #include "common.h"
>
> @@ -72,6 +75,7 @@ static const struct of_dev_auxdata exynos5250_auxdata_lookup[] __initconst = {
>                                 "exynos-gsc.2", NULL),
>         OF_DEV_AUXDATA("samsung,exynos5-gsc", EXYNOS5_PA_GSC3,
>                                 "exynos-gsc.3", NULL),
> +       OF_DEV_AUXDATA("samsung,mfc-v6", 0x11000000, "s5p-mfc-v6", NULL),
>         {},
>  };
>
> @@ -92,6 +96,17 @@ static char const *exynos5250_dt_compat[] __initdata = {
>         NULL
>  };
>
> +static void __init exynos5_reserve(void)
> +{
> +       struct s5p_mfc_dt_meminfo mfc_mem;
> +
> +       /* Reserve memory for MFC only if it's available */
> +       mfc_mem.compatible = "samsung,mfc-v6";
> +       if (of_scan_flat_dt(s5p_fdt_find_mfc_mem, &mfc_mem))
> +               s5p_mfc_reserve_mem(mfc_mem.roff, mfc_mem.rsize, mfc_mem.loff,
> +                               mfc_mem.lsize);
> +}
> +
>  DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)")
>         /* Maintainer: Kukjin Kim <kgene.kim@samsung.com> */
>         .init_irq       = exynos5_init_irq,
> @@ -102,4 +117,5 @@ DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)")
>         .timer          = &exynos4_timer,
>         .dt_compat      = exynos5250_dt_compat,
>         .restart        = exynos5_restart,
> +       .reserve        = exynos5_reserve,
>  MACHINE_END
> diff --git a/arch/arm/plat-samsung/devs.c b/arch/arm/plat-samsung/devs.c
> index 2df7af8..081621a 100644
> --- a/arch/arm/plat-samsung/devs.c
> +++ b/arch/arm/plat-samsung/devs.c
> @@ -934,6 +934,7 @@ struct platform_device s5p_device_mfc_r = {
>                 .coherent_dma_mask      = DMA_BIT_MASK(32),
>         },
>  };
> +
>  #endif /* CONFIG_S5P_DEV_MFC */
>
>  /* MIPI CSIS */
> diff --git a/arch/arm/plat-samsung/include/plat/mfc.h b/arch/arm/plat-samsung/include/plat/mfc.h
> index ac13227..128b719 100644
> --- a/arch/arm/plat-samsung/include/plat/mfc.h
> +++ b/arch/arm/plat-samsung/include/plat/mfc.h
> @@ -10,6 +10,14 @@
>  #ifndef __PLAT_SAMSUNG_MFC_H
>  #define __PLAT_SAMSUNG_MFC_H __FILE__
>
> +struct s5p_mfc_dt_meminfo {
> +       unsigned long   loff;
> +       unsigned long   lsize;
> +       unsigned long   roff;
> +       unsigned long   rsize;
> +       char            *compatible;
> +};
> +
>  /**
>   * s5p_mfc_reserve_mem - function to early reserve memory for MFC driver
>   * @rbase:     base address for MFC 'right' memory interface
> @@ -24,4 +32,7 @@
>  void __init s5p_mfc_reserve_mem(phys_addr_t rbase, unsigned int rsize,
>                                 phys_addr_t lbase, unsigned int lsize);
>
> +int s5p_fdt_find_mfc_mem(unsigned long node, const char *uname,
> +               int depth, void *data);
> +
>  #endif /* __PLAT_SAMSUNG_MFC_H */
> diff --git a/arch/arm/plat-samsung/s5p-dev-mfc.c b/arch/arm/plat-samsung/s5p-dev-mfc.c
> index ad60894..ef9f470 100644
> --- a/arch/arm/plat-samsung/s5p-dev-mfc.c
> +++ b/arch/arm/plat-samsung/s5p-dev-mfc.c
> @@ -14,6 +14,8 @@
>  #include <linux/dma-mapping.h>
>  #include <linux/memblock.h>
>  #include <linux/ioport.h>
> +#include <linux/of_fdt.h>
> +#include <linux/of.h>
>
>  #include <mach/map.h>
>  #include <plat/devs.h>
> @@ -69,3 +71,35 @@ static int __init s5p_mfc_memory_init(void)
>         return 0;
>  }
>  device_initcall(s5p_mfc_memory_init);
> +
> +#ifdef CONFIG_OF
> +int s5p_fdt_find_mfc_mem(unsigned long node, const char *uname,
> +               int depth, void *data)
> +{
> +       __be32 *prop;
> +       unsigned long len;
> +       struct s5p_mfc_dt_meminfo *mfc_mem = data;
> +
> +       if (!data)
> +               return 0;
> +
> +       if (!of_flat_dt_is_compatible(node, mfc_mem->compatible))
> +               return 0;
> +
> +       prop = of_get_flat_dt_prop(node, "samsung,mfc-l", &len);
> +       if (!prop || (len != 2 * sizeof(unsigned long)))
> +               return 0;
> +
> +       mfc_mem->loff = be32_to_cpu(prop[0]);
> +       mfc_mem->lsize = be32_to_cpu(prop[1]);
> +
> +       prop = of_get_flat_dt_prop(node, "samsung,mfc-r", &len);
> +       if (!prop || (len != 2 * sizeof(unsigned long)))
> +               return 0;
> +
> +       mfc_mem->roff = be32_to_cpu(prop[0]);
> +       mfc_mem->rsize = be32_to_cpu(prop[1]);
> +
> +       return 1;
> +}
> +#endif
> --
> 1.7.0.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2012-10-12  6:42 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-27 17:09 [PATCH v5] Add MFC device tree support Arun Kumar K
2012-09-27 17:09 ` [PATCH v5] ARM: EXYNOS: " Arun Kumar K
2012-10-12  6:42   ` Arun Kumar K [this message]
2012-10-23  7:04   ` 김승우
2012-10-23 10:12     ` Arun Kumar K
2012-10-19  1:39       ` Kukjin Kim
2012-10-23 14:30   ` Kukjin Kim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CALt3h7_1a3d0yXWLVqWgATgaJ897V1beerfZ==AkDd5AhkMFmQ@mail.gmail.com' \
    --to=arunkk.samsung@gmail.com \
    --cc=arun.kk@samsung.com \
    --cc=ch.naveen@samsung.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=joshi@samsung.com \
    --cc=jtp.park@samsung.com \
    --cc=k.debski@samsung.com \
    --cc=k.lewandowsk@samsung.com \
    --cc=kgene.kim@samsung.com \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=s.nawrocki@samsung.com \
    --cc=thomas.abraham@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).