Re: [PATCH 13/15] [media] marvell-ccic: add dma burst mode support in marvell-ccic driver
On Fri, 23 Nov 2012, Albert Wang wrote: This patch adds the dma burst size config support for marvell-ccic. Developer can set the dma burst size in specified board driver. Signed-off-by: Libin Yang lby...@marvell.com Signed-off-by: Albert Wang twan...@marvell.com --- .../media/platform/marvell-ccic/mcam-core-soc.c|2 +- drivers/media/platform/marvell-ccic/mcam-core.h|7 --- drivers/media/platform/marvell-ccic/mmp-driver.c | 11 +++ include/media/mmp-camera.h |1 + 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/drivers/media/platform/marvell-ccic/mcam-core-soc.c b/drivers/media/platform/marvell-ccic/mcam-core-soc.c index a0df8b4..518e6dc 100644 --- a/drivers/media/platform/marvell-ccic/mcam-core-soc.c +++ b/drivers/media/platform/marvell-ccic/mcam-core-soc.c @@ -100,7 +100,7 @@ static int mcam_camera_add_device(struct soc_camera_device *icd) mcam_ctlr_stop(mcam); mcam_set_config_needed(mcam, 1); mcam_reg_write(mcam, REG_CTRL1, -C1_RESERVED | C1_DMAPOSTED); + mcam-burst | C1_RESERVED | C1_DMAPOSTED); mcam_reg_write(mcam, REG_CLKCTRL, (mcam-mclk_src 29) | mcam-mclk_div); cam_dbg(mcam, camera: set sensor mclk = %dMHz\n, mcam-mclk_min); diff --git a/drivers/media/platform/marvell-ccic/mcam-core.h b/drivers/media/platform/marvell-ccic/mcam-core.h index e149aa3..999b581 100755 --- a/drivers/media/platform/marvell-ccic/mcam-core.h +++ b/drivers/media/platform/marvell-ccic/mcam-core.h @@ -132,6 +132,7 @@ struct mcam_camera { short int use_smbus;/* SMBUS or straight I2c? */ enum mcam_buffer_mode buffer_mode; + int burst; int mclk_min; int mclk_src; int mclk_div; @@ -419,9 +420,9 @@ int mcam_soc_camera_host_register(struct mcam_camera *mcam); #define C1_DESC_3WORD 0x0200 /* Three-word descriptors used */ #defineC1_444ALPHA 0x00f0/* Alpha field in RGB444 */ #defineC1_ALPHA_SHFT 20 -#defineC1_DMAB32 0x/* 32-byte DMA burst */ -#defineC1_DMAB16 0x0200/* 16-byte DMA burst */ -#defineC1_DMAB64 0x0400/* 64-byte DMA burst */ +#defineC1_DMAB64 0x/* 64-byte DMA burst */ +#defineC1_DMAB128 0x0200/* 128-byte DMA burst */ +#defineC1_DMAB256 0x0400/* 256-byte DMA burst */ Was this a bug in the driver or is it a different IP version? Thanks Guennadi #defineC1_DMAB_MASK0x0600 #defineC1_TWOBUFS 0x0800/* Use only two DMA buffers */ #defineC1_PWRDWN 0x1000/* Power down */ diff --git a/drivers/media/platform/marvell-ccic/mmp-driver.c b/drivers/media/platform/marvell-ccic/mmp-driver.c index bea7224..e840941 100755 --- a/drivers/media/platform/marvell-ccic/mmp-driver.c +++ b/drivers/media/platform/marvell-ccic/mmp-driver.c @@ -365,6 +365,17 @@ static int mmpcam_probe(struct platform_device *pdev) mcam-dphy = (pdata-dphy); mcam-mipi_enabled = 0; mcam-lane = pdata-lane; + switch (pdata-dma_burst) { + case 128: + mcam-burst = C1_DMAB128; + break; + case 256: + mcam-burst = C1_DMAB256; + break; + default: + mcam-burst = C1_DMAB64; + break; + } INIT_LIST_HEAD(mcam-buffers); /* diff --git a/include/media/mmp-camera.h b/include/media/mmp-camera.h index 731f81f..7a5e63c 100755 --- a/include/media/mmp-camera.h +++ b/include/media/mmp-camera.h @@ -11,6 +11,7 @@ struct mmp_camera_platform_data { int mclk_src; int mclk_div; int chip_id; + int dma_burst; /* * MIPI support */ -- 1.7.9.5 --- Guennadi Liakhovetski, Ph.D. Freelance Open-Source Software Developer http://www.open-technology.de/ -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [PATCH 13/15] [media] marvell-ccic: add dma burst mode support in marvell-ccic driver
Hi, Guennadi -Original Message- From: Guennadi Liakhovetski [mailto:g.liakhovet...@gmx.de] Sent: Tuesday, 27 November, 2012 23:56 To: Albert Wang Cc: cor...@lwn.net; linux-media@vger.kernel.org; Libin Yang Subject: Re: [PATCH 13/15] [media] marvell-ccic: add dma burst mode support in marvell-ccic driver On Fri, 23 Nov 2012, Albert Wang wrote: This patch adds the dma burst size config support for marvell-ccic. Developer can set the dma burst size in specified board driver. Signed-off-by: Libin Yang lby...@marvell.com Signed-off-by: Albert Wang twan...@marvell.com --- .../media/platform/marvell-ccic/mcam-core-soc.c|2 +- drivers/media/platform/marvell-ccic/mcam-core.h|7 --- drivers/media/platform/marvell-ccic/mmp-driver.c | 11 +++ include/media/mmp-camera.h |1 + 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/drivers/media/platform/marvell-ccic/mcam-core-soc.c b/drivers/media/platform/marvell-ccic/mcam-core-soc.c index a0df8b4..518e6dc 100644 --- a/drivers/media/platform/marvell-ccic/mcam-core-soc.c +++ b/drivers/media/platform/marvell-ccic/mcam-core-soc.c @@ -100,7 +100,7 @@ static int mcam_camera_add_device(struct soc_camera_device *icd) mcam_ctlr_stop(mcam); mcam_set_config_needed(mcam, 1); mcam_reg_write(mcam, REG_CTRL1, - C1_RESERVED | C1_DMAPOSTED); +mcam-burst | C1_RESERVED | C1_DMAPOSTED); mcam_reg_write(mcam, REG_CLKCTRL, (mcam-mclk_src 29) | mcam-mclk_div); cam_dbg(mcam, camera: set sensor mclk = %dMHz\n, mcam-mclk_min); diff --git a/drivers/media/platform/marvell-ccic/mcam-core.h b/drivers/media/platform/marvell-ccic/mcam-core.h index e149aa3..999b581 100755 --- a/drivers/media/platform/marvell-ccic/mcam-core.h +++ b/drivers/media/platform/marvell-ccic/mcam-core.h @@ -132,6 +132,7 @@ struct mcam_camera { short int use_smbus;/* SMBUS or straight I2c? */ enum mcam_buffer_mode buffer_mode; +int burst; int mclk_min; int mclk_src; int mclk_div; @@ -419,9 +420,9 @@ int mcam_soc_camera_host_register(struct mcam_camera *mcam); #define C1_DESC_3WORD 0x0200/* Three-word descriptors used */ #define C1_444ALPHA 0x00f0/* Alpha field in RGB444 */ #define C1_ALPHA_SHFT 20 -#define C1_DMAB32 0x/* 32-byte DMA burst */ -#define C1_DMAB16 0x0200/* 16-byte DMA burst */ -#define C1_DMAB64 0x0400/* 64-byte DMA burst */ +#define C1_DMAB64 0x/* 64-byte DMA burst */ +#define C1_DMAB128 0x0200/* 128-byte DMA burst */ +#define C1_DMAB256 0x0400/* 256-byte DMA burst */ Was this a bug in the driver or is it a different IP version? I think it's a bug in old code. We didn't find the definition in our specs. Thanks Guennadi #define C1_DMAB_MASK0x0600 #define C1_TWOBUFS 0x0800/* Use only two DMA buffers */ #define C1_PWRDWN 0x1000/* Power down */ diff --git a/drivers/media/platform/marvell-ccic/mmp-driver.c b/drivers/media/platform/marvell-ccic/mmp-driver.c index bea7224..e840941 100755 --- a/drivers/media/platform/marvell-ccic/mmp-driver.c +++ b/drivers/media/platform/marvell-ccic/mmp-driver.c @@ -365,6 +365,17 @@ static int mmpcam_probe(struct platform_device *pdev) mcam-dphy = (pdata-dphy); mcam-mipi_enabled = 0; mcam-lane = pdata-lane; +switch (pdata-dma_burst) { +case 128: +mcam-burst = C1_DMAB128; +break; +case 256: +mcam-burst = C1_DMAB256; +break; +default: +mcam-burst = C1_DMAB64; +break; +} INIT_LIST_HEAD(mcam-buffers); /* diff --git a/include/media/mmp-camera.h b/include/media/mmp-camera.h index 731f81f..7a5e63c 100755 --- a/include/media/mmp-camera.h +++ b/include/media/mmp-camera.h @@ -11,6 +11,7 @@ struct mmp_camera_platform_data { int mclk_src; int mclk_div; int chip_id; +int dma_burst; /* * MIPI support */ -- 1.7.9.5 --- Guennadi Liakhovetski, Ph.D. Freelance Open-Source Software Developer http://www.open-technology.de/ -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 13/15] [media] marvell-ccic: add dma burst mode support in marvell-ccic driver
This patch adds the dma burst size config support for marvell-ccic. Developer can set the dma burst size in specified board driver. Signed-off-by: Libin Yang lby...@marvell.com Signed-off-by: Albert Wang twan...@marvell.com --- .../media/platform/marvell-ccic/mcam-core-soc.c|2 +- drivers/media/platform/marvell-ccic/mcam-core.h|7 --- drivers/media/platform/marvell-ccic/mmp-driver.c | 11 +++ include/media/mmp-camera.h |1 + 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/drivers/media/platform/marvell-ccic/mcam-core-soc.c b/drivers/media/platform/marvell-ccic/mcam-core-soc.c index a0df8b4..518e6dc 100644 --- a/drivers/media/platform/marvell-ccic/mcam-core-soc.c +++ b/drivers/media/platform/marvell-ccic/mcam-core-soc.c @@ -100,7 +100,7 @@ static int mcam_camera_add_device(struct soc_camera_device *icd) mcam_ctlr_stop(mcam); mcam_set_config_needed(mcam, 1); mcam_reg_write(mcam, REG_CTRL1, - C1_RESERVED | C1_DMAPOSTED); + mcam-burst | C1_RESERVED | C1_DMAPOSTED); mcam_reg_write(mcam, REG_CLKCTRL, (mcam-mclk_src 29) | mcam-mclk_div); cam_dbg(mcam, camera: set sensor mclk = %dMHz\n, mcam-mclk_min); diff --git a/drivers/media/platform/marvell-ccic/mcam-core.h b/drivers/media/platform/marvell-ccic/mcam-core.h index e149aa3..999b581 100755 --- a/drivers/media/platform/marvell-ccic/mcam-core.h +++ b/drivers/media/platform/marvell-ccic/mcam-core.h @@ -132,6 +132,7 @@ struct mcam_camera { short int use_smbus;/* SMBUS or straight I2c? */ enum mcam_buffer_mode buffer_mode; + int burst; int mclk_min; int mclk_src; int mclk_div; @@ -419,9 +420,9 @@ int mcam_soc_camera_host_register(struct mcam_camera *mcam); #define C1_DESC_3WORD 0x0200 /* Three-word descriptors used */ #define C1_444ALPHA 0x00f0/* Alpha field in RGB444 */ #define C1_ALPHA_SHFT 20 -#define C1_DMAB32 0x/* 32-byte DMA burst */ -#define C1_DMAB16 0x0200/* 16-byte DMA burst */ -#define C1_DMAB64 0x0400/* 64-byte DMA burst */ +#define C1_DMAB64 0x/* 64-byte DMA burst */ +#define C1_DMAB128 0x0200/* 128-byte DMA burst */ +#define C1_DMAB256 0x0400/* 256-byte DMA burst */ #define C1_DMAB_MASK0x0600 #define C1_TWOBUFS 0x0800/* Use only two DMA buffers */ #define C1_PWRDWN 0x1000/* Power down */ diff --git a/drivers/media/platform/marvell-ccic/mmp-driver.c b/drivers/media/platform/marvell-ccic/mmp-driver.c index bea7224..e840941 100755 --- a/drivers/media/platform/marvell-ccic/mmp-driver.c +++ b/drivers/media/platform/marvell-ccic/mmp-driver.c @@ -365,6 +365,17 @@ static int mmpcam_probe(struct platform_device *pdev) mcam-dphy = (pdata-dphy); mcam-mipi_enabled = 0; mcam-lane = pdata-lane; + switch (pdata-dma_burst) { + case 128: + mcam-burst = C1_DMAB128; + break; + case 256: + mcam-burst = C1_DMAB256; + break; + default: + mcam-burst = C1_DMAB64; + break; + } INIT_LIST_HEAD(mcam-buffers); /* diff --git a/include/media/mmp-camera.h b/include/media/mmp-camera.h index 731f81f..7a5e63c 100755 --- a/include/media/mmp-camera.h +++ b/include/media/mmp-camera.h @@ -11,6 +11,7 @@ struct mmp_camera_platform_data { int mclk_src; int mclk_div; int chip_id; + int dma_burst; /* * MIPI support */ -- 1.7.9.5 -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html