All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Gortmaker <paul.gortmaker-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org>
To: Philipp Zabel <p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Cc: Fabio Estevam
	<fabio.estevam-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
	Matt Porter <mporter-l0cyMroinI0@public.gmane.org>,
	Dong Aisheng
	<dong.aisheng-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Greg Kroah-Hartman
	<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>,
	Richard Zhao
	<richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
	Javier Martin
	<javier.martin-N4RbWZIug12MkV8/HQOAswC/G2K4zDHf@public.gmane.org>,
	kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org,
	Huang Shijie <shijie8-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Subject: Re: [PATCH v6 3/4] media: coda: use genalloc API
Date: Fri, 16 Nov 2012 10:08:18 -0500	[thread overview]
Message-ID: <50A656E2.707@windriver.com> (raw)
In-Reply-To: <1353061817-3207-4-git-send-email-p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>

On 12-11-16 05:30 AM, Philipp Zabel wrote:
> This patch depends on "genalloc: add a global pool list,
> allow to find pools by phys address", which provides the
> of_get_named_gen_pool function.
> 
> Signed-off-by: Philipp Zabel <p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
> ---
>  drivers/media/platform/Kconfig |    3 +--
>  drivers/media/platform/coda.c  |   47 ++++++++++++++++++++++++++++------------
>  2 files changed, 34 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
> index 181c768..09d45c6 100644
> --- a/drivers/media/platform/Kconfig
> +++ b/drivers/media/platform/Kconfig
> @@ -130,10 +130,9 @@ if V4L_MEM2MEM_DRIVERS
>  
>  config VIDEO_CODA
>  	tristate "Chips&Media Coda multi-standard codec IP"
> -	depends on VIDEO_DEV && VIDEO_V4L2 && ARCH_MXC
> +	depends on VIDEO_DEV && VIDEO_V4L2

What was the logic for reducing the dependency scope here?
Your commit log doesn't mention that at all, and when I see
things like that, I predict allyesconfig build failures,
unless there is a similar dependency elsewhere that isn't
visible in just the context of this patch alone.

P.
--

>  	select VIDEOBUF2_DMA_CONTIG
>  	select V4L2_MEM2MEM_DEV
> -	select IRAM_ALLOC if SOC_IMX53
>  	---help---
>  	   Coda is a range of video codec IPs that supports
>  	   H.264, MPEG-4, and other video formats.
> diff --git a/drivers/media/platform/coda.c b/drivers/media/platform/coda.c
> index cd04ae2..f17b659 100644
> --- a/drivers/media/platform/coda.c
> +++ b/drivers/media/platform/coda.c
> @@ -14,6 +14,7 @@
>  #include <linux/clk.h>
>  #include <linux/delay.h>
>  #include <linux/firmware.h>
> +#include <linux/genalloc.h>
>  #include <linux/interrupt.h>
>  #include <linux/io.h>
>  #include <linux/irq.h>
> @@ -24,7 +25,6 @@
>  #include <linux/videodev2.h>
>  #include <linux/of.h>
>  
> -#include <mach/iram.h>
>  #include <media/v4l2-ctrls.h>
>  #include <media/v4l2-device.h>
>  #include <media/v4l2-ioctl.h>
> @@ -43,6 +43,7 @@
>  #define CODA7_WORK_BUF_SIZE	(512 * 1024 + CODA_FMO_BUF_SIZE * 8 * 1024)
>  #define CODA_PARA_BUF_SIZE	(10 * 1024)
>  #define CODA_ISRAM_SIZE	(2048 * 2)
> +#define CODADX6_IRAM_SIZE	0xb000
>  #define CODA7_IRAM_SIZE		0x14000 /* 81920 bytes */
>  
>  #define CODA_MAX_FRAMEBUFFERS	2
> @@ -128,7 +129,10 @@ struct coda_dev {
>  
>  	struct coda_aux_buf	codebuf;
>  	struct coda_aux_buf	workbuf;
> +	struct gen_pool		*iram_pool;
> +	long unsigned int	iram_vaddr;
>  	long unsigned int	iram_paddr;
> +	unsigned long		iram_size;
>  
>  	spinlock_t		irqlock;
>  	struct mutex		dev_mutex;
> @@ -1958,6 +1962,22 @@ static int __devinit coda_probe(struct platform_device *pdev)
>  		return -ENOENT;
>  	}
>  
> +	/* Without device tree, get SRAM paddr from second memory resource */
> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
> +	if (res != NULL)
> +		dev->iram_pool = gen_pool_find_by_phys(res->start);
> +#ifdef CONFIG_OF
> +	if (!dev->iram_pool) {
> +		struct device_node *np = pdev->dev.of_node;
> +
> +		dev->iram_pool = of_get_named_gen_pool(np, "iram", 0);
> +	}
> +#endif
> +	if (!dev->iram_pool) {
> +		dev_err(&pdev->dev, "iram pool not available\n");
> +		return -ENOMEM;
> +	}
> +
>  	ret = v4l2_device_register(&pdev->dev, &dev->v4l2_dev);
>  	if (ret)
>  		return ret;
> @@ -1992,18 +2012,17 @@ static int __devinit coda_probe(struct platform_device *pdev)
>  		return -ENOMEM;
>  	}
>  
> -	if (dev->devtype->product == CODA_DX6) {
> -		dev->iram_paddr = 0xffff4c00;
> -	} else {
> -		void __iomem *iram_vaddr;
> -
> -		iram_vaddr = iram_alloc(CODA7_IRAM_SIZE,
> -					&dev->iram_paddr);
> -		if (!iram_vaddr) {
> -			dev_err(&pdev->dev, "unable to alloc iram\n");
> -			return -ENOMEM;
> -		}
> +	if (dev->devtype->product == CODA_DX6)
> +		dev->iram_size = CODADX6_IRAM_SIZE;
> +	else
> +		dev->iram_size = CODA7_IRAM_SIZE;
> +	dev->iram_vaddr = gen_pool_alloc(dev->iram_pool, dev->iram_size);
> +	if (!dev->iram_vaddr) {
> +		dev_err(&pdev->dev, "unable to alloc iram\n");
> +		return -ENOMEM;
>  	}
> +	dev->iram_paddr = gen_pool_virt_to_phys(dev->iram_pool,
> +						dev->iram_vaddr);
>  
>  	platform_set_drvdata(pdev, dev);
>  
> @@ -2020,8 +2039,8 @@ static int coda_remove(struct platform_device *pdev)
>  	if (dev->alloc_ctx)
>  		vb2_dma_contig_cleanup_ctx(dev->alloc_ctx);
>  	v4l2_device_unregister(&dev->v4l2_dev);
> -	if (dev->iram_paddr)
> -		iram_free(dev->iram_paddr, CODA7_IRAM_SIZE);
> +	if (dev->iram_vaddr)
> +		gen_pool_free(dev->iram_pool, dev->iram_vaddr, dev->iram_size);
>  	if (dev->codebuf.vaddr)
>  		dma_free_coherent(&pdev->dev, dev->codebuf.size,
>  				  &dev->codebuf.vaddr, dev->codebuf.paddr);
> 

WARNING: multiple messages have this Message-ID (diff)
From: Paul Gortmaker <paul.gortmaker@windriver.com>
To: Philipp Zabel <p.zabel@pengutronix.de>
Cc: <linux-kernel@vger.kernel.org>, Arnd Bergmann <arnd@arndb.de>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	Grant Likely <grant.likely@secretlab.ca>,
	Rob Herring <rob.herring@calxeda.com>,
	Shawn Guo <shawn.guo@linaro.org>,
	Richard Zhao <richard.zhao@freescale.com>,
	"Huang Shijie" <shijie8@gmail.com>,
	Dong Aisheng <dong.aisheng@linaro.org>,
	"Matt Porter" <mporter@ti.com>,
	Fabio Estevam <fabio.estevam@freescale.com>,
	"Javier Martin" <javier.martin@vista-silicon.com>,
	<kernel@pengutronix.de>, <devicetree-discuss@lists.ozlabs.org>
Subject: Re: [PATCH v6 3/4] media: coda: use genalloc API
Date: Fri, 16 Nov 2012 10:08:18 -0500	[thread overview]
Message-ID: <50A656E2.707@windriver.com> (raw)
In-Reply-To: <1353061817-3207-4-git-send-email-p.zabel@pengutronix.de>

On 12-11-16 05:30 AM, Philipp Zabel wrote:
> This patch depends on "genalloc: add a global pool list,
> allow to find pools by phys address", which provides the
> of_get_named_gen_pool function.
> 
> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
> ---
>  drivers/media/platform/Kconfig |    3 +--
>  drivers/media/platform/coda.c  |   47 ++++++++++++++++++++++++++++------------
>  2 files changed, 34 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
> index 181c768..09d45c6 100644
> --- a/drivers/media/platform/Kconfig
> +++ b/drivers/media/platform/Kconfig
> @@ -130,10 +130,9 @@ if V4L_MEM2MEM_DRIVERS
>  
>  config VIDEO_CODA
>  	tristate "Chips&Media Coda multi-standard codec IP"
> -	depends on VIDEO_DEV && VIDEO_V4L2 && ARCH_MXC
> +	depends on VIDEO_DEV && VIDEO_V4L2

What was the logic for reducing the dependency scope here?
Your commit log doesn't mention that at all, and when I see
things like that, I predict allyesconfig build failures,
unless there is a similar dependency elsewhere that isn't
visible in just the context of this patch alone.

P.
--

>  	select VIDEOBUF2_DMA_CONTIG
>  	select V4L2_MEM2MEM_DEV
> -	select IRAM_ALLOC if SOC_IMX53
>  	---help---
>  	   Coda is a range of video codec IPs that supports
>  	   H.264, MPEG-4, and other video formats.
> diff --git a/drivers/media/platform/coda.c b/drivers/media/platform/coda.c
> index cd04ae2..f17b659 100644
> --- a/drivers/media/platform/coda.c
> +++ b/drivers/media/platform/coda.c
> @@ -14,6 +14,7 @@
>  #include <linux/clk.h>
>  #include <linux/delay.h>
>  #include <linux/firmware.h>
> +#include <linux/genalloc.h>
>  #include <linux/interrupt.h>
>  #include <linux/io.h>
>  #include <linux/irq.h>
> @@ -24,7 +25,6 @@
>  #include <linux/videodev2.h>
>  #include <linux/of.h>
>  
> -#include <mach/iram.h>
>  #include <media/v4l2-ctrls.h>
>  #include <media/v4l2-device.h>
>  #include <media/v4l2-ioctl.h>
> @@ -43,6 +43,7 @@
>  #define CODA7_WORK_BUF_SIZE	(512 * 1024 + CODA_FMO_BUF_SIZE * 8 * 1024)
>  #define CODA_PARA_BUF_SIZE	(10 * 1024)
>  #define CODA_ISRAM_SIZE	(2048 * 2)
> +#define CODADX6_IRAM_SIZE	0xb000
>  #define CODA7_IRAM_SIZE		0x14000 /* 81920 bytes */
>  
>  #define CODA_MAX_FRAMEBUFFERS	2
> @@ -128,7 +129,10 @@ struct coda_dev {
>  
>  	struct coda_aux_buf	codebuf;
>  	struct coda_aux_buf	workbuf;
> +	struct gen_pool		*iram_pool;
> +	long unsigned int	iram_vaddr;
>  	long unsigned int	iram_paddr;
> +	unsigned long		iram_size;
>  
>  	spinlock_t		irqlock;
>  	struct mutex		dev_mutex;
> @@ -1958,6 +1962,22 @@ static int __devinit coda_probe(struct platform_device *pdev)
>  		return -ENOENT;
>  	}
>  
> +	/* Without device tree, get SRAM paddr from second memory resource */
> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
> +	if (res != NULL)
> +		dev->iram_pool = gen_pool_find_by_phys(res->start);
> +#ifdef CONFIG_OF
> +	if (!dev->iram_pool) {
> +		struct device_node *np = pdev->dev.of_node;
> +
> +		dev->iram_pool = of_get_named_gen_pool(np, "iram", 0);
> +	}
> +#endif
> +	if (!dev->iram_pool) {
> +		dev_err(&pdev->dev, "iram pool not available\n");
> +		return -ENOMEM;
> +	}
> +
>  	ret = v4l2_device_register(&pdev->dev, &dev->v4l2_dev);
>  	if (ret)
>  		return ret;
> @@ -1992,18 +2012,17 @@ static int __devinit coda_probe(struct platform_device *pdev)
>  		return -ENOMEM;
>  	}
>  
> -	if (dev->devtype->product == CODA_DX6) {
> -		dev->iram_paddr = 0xffff4c00;
> -	} else {
> -		void __iomem *iram_vaddr;
> -
> -		iram_vaddr = iram_alloc(CODA7_IRAM_SIZE,
> -					&dev->iram_paddr);
> -		if (!iram_vaddr) {
> -			dev_err(&pdev->dev, "unable to alloc iram\n");
> -			return -ENOMEM;
> -		}
> +	if (dev->devtype->product == CODA_DX6)
> +		dev->iram_size = CODADX6_IRAM_SIZE;
> +	else
> +		dev->iram_size = CODA7_IRAM_SIZE;
> +	dev->iram_vaddr = gen_pool_alloc(dev->iram_pool, dev->iram_size);
> +	if (!dev->iram_vaddr) {
> +		dev_err(&pdev->dev, "unable to alloc iram\n");
> +		return -ENOMEM;
>  	}
> +	dev->iram_paddr = gen_pool_virt_to_phys(dev->iram_pool,
> +						dev->iram_vaddr);
>  
>  	platform_set_drvdata(pdev, dev);
>  
> @@ -2020,8 +2039,8 @@ static int coda_remove(struct platform_device *pdev)
>  	if (dev->alloc_ctx)
>  		vb2_dma_contig_cleanup_ctx(dev->alloc_ctx);
>  	v4l2_device_unregister(&dev->v4l2_dev);
> -	if (dev->iram_paddr)
> -		iram_free(dev->iram_paddr, CODA7_IRAM_SIZE);
> +	if (dev->iram_vaddr)
> +		gen_pool_free(dev->iram_pool, dev->iram_vaddr, dev->iram_size);
>  	if (dev->codebuf.vaddr)
>  		dma_free_coherent(&pdev->dev, dev->codebuf.size,
>  				  &dev->codebuf.vaddr, dev->codebuf.paddr);
> 

  parent reply	other threads:[~2012-11-16 15:08 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-16 10:30 [PATCH v6 0/4] Add generic driver for on-chip SRAM Philipp Zabel
2012-11-16 10:30 ` Philipp Zabel
2012-11-16 10:30 ` [PATCH v6 1/4] genalloc: add a global pool list, allow to find pools by phys address Philipp Zabel
2012-11-21  7:46   ` Andrew Morton
2012-11-16 10:30 ` [PATCH v6 2/4] misc: Generic on-chip SRAM allocation driver Philipp Zabel
     [not found] ` <1353061817-3207-1-git-send-email-p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-11-16 10:30   ` [PATCH v6 3/4] media: coda: use genalloc API Philipp Zabel
2012-11-16 10:30     ` Philipp Zabel
     [not found]     ` <1353061817-3207-4-git-send-email-p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-11-16 15:08       ` Paul Gortmaker [this message]
2012-11-16 15:08         ` Paul Gortmaker
2012-11-16 15:21         ` Philipp Zabel
     [not found]           ` <1353079273.2413.160.camel-/rZezPiN1rtR6QfukMTsflXZhhPuCNm+@public.gmane.org>
2012-11-16 16:00             ` Paul Gortmaker
2012-11-16 16:00               ` Paul Gortmaker
2012-11-16 16:51               ` Philipp Zabel
     [not found]                 ` <1353084667.2413.414.camel-/rZezPiN1rtR6QfukMTsflXZhhPuCNm+@public.gmane.org>
2012-11-19 15:21                   ` Paul Gortmaker
2012-11-19 15:21                     ` Paul Gortmaker
2012-11-16 10:30   ` [PATCH v6 4/4] ARM: dts: add sram for imx53 and imx6q Philipp Zabel
2012-11-16 10:30     ` Philipp Zabel

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=50A656E2.707@windriver.com \
    --to=paul.gortmaker-cwa4wttnnzf54taoqtywwq@public.gmane.org \
    --cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
    --cc=dong.aisheng-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=fabio.estevam-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
    --cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
    --cc=javier.martin-N4RbWZIug12MkV8/HQOAswC/G2K4zDHf@public.gmane.org \
    --cc=kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mporter-l0cyMroinI0@public.gmane.org \
    --cc=p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
    --cc=richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
    --cc=rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org \
    --cc=shijie8-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.