Fix sparse/smatch errors on non-x86 drivers
Subsystems (3)
cover Fix sparse/smatch errors on non-x86 drivers
After applying this patch series:
https://www.mail-archive.com/[email protected]/msg128829.html
Which allows to build all drivers with COMPILE_TEST on x86, my scripts can finally check for errors/warnings on those drivers.
This patch series correct those warnings.
Mauro Carvalho Chehab (21):
media: davinci_vpfe: remove useless checks from ipipe
media: dm365_ipipe: remove an unused var
media: davinci_vpfe: fix vpfe_ipipe_init() error handling
media: davinci_vpfe: mark __iomem as such
media: davinci_vpfe: get rid of an unused var at dm365_isif.c
media: davinci_vpfe: vpfe_video: remove an unused var
media: davinci_vpfe: don't use kernel-doc markup for simple comments
media: davinci_vpfe: fix a typo for "default"
media: davinci_vpfe: cleanup ipipe_[g|s]_config logic
media: davinci_vpfe: fix __user annotations
media: si470x: fix __be16 annotations
media: isif: reorder a statement to match coding style
media: davinci: fix an inconsistent ident
media: mmp-driver: add needed __iomem marks to power_regs
media: vpbe_display: properly handle error case
media: vpbe_display: get rid of warnings
media: ispstat: use %p to print the address of a buffer
media: isppreview: fix __user annotations
media: fsl-viu: use %p to print pointers
media: fsl-viu: fix __iomem annotations
media: omap_vout: fix wrong identing
drivers/media/platform/davinci/isif.c | 2 +- drivers/media/platform/davinci/vpbe_display.c | 12 +- drivers/media/platform/davinci/vpbe_osd.c | 5 +- drivers/media/platform/fsl-viu.c | 43 +++---- drivers/media/platform/marvell-ccic/mmp-driver.c | 2 +- drivers/media/platform/omap/omap_vout.c | 15 ++- drivers/media/platform/omap3isp/isppreview.c | 2 +- drivers/media/platform/omap3isp/ispstat.c | 4 +- drivers/media/radio/si470x/radio-si470x-i2c.c | 6 +- drivers/staging/media/davinci_vpfe/dm365_ipipe.c | 131 ++++++++++----------- .../staging/media/davinci_vpfe/dm365_ipipe_hw.c | 19 +-- drivers/staging/media/davinci_vpfe/dm365_ipipeif.c | 14 +-- drivers/staging/media/davinci_vpfe/dm365_isif.c | 9 +- drivers/staging/media/davinci_vpfe/dm365_resizer.c | 13 +- .../staging/media/davinci_vpfe/vpfe_mc_capture.c | 2 +- drivers/staging/media/davinci_vpfe/vpfe_video.c | 4 +- 16 files changed, 121 insertions(+), 162 deletions(-)
Signature · 1 line
2.14.3
PATCH 1/21 media: davinci_vpfe: remove useless checks from ipipe
The dm365_ipipe_hw.c and dm365_ipipe.c file check if several table pointers, declared at davinci_vpfe_user.h, are filled before using them.
The problem is that those pointers come from struct declarations like:
struct vpfe_ipipe_yee {
...
short table[VPFE_IPIPE_MAX_SIZE_YEE_LUT];
};So, they can't be NULL! Solve those warnings:
drivers/staging/media/davinci_vpfe/dm365_ipipe_hw.c:433 ipipe_set_lutdpc_regs() warn: this array is probably non-NULL. 'dpc->table'
drivers/staging/media/davinci_vpfe/dm365_ipipe_hw.c:763 ipipe_set_gamma_regs() warn: this array is probably non-NULL. 'gamma->table_r'
drivers/staging/media/davinci_vpfe/dm365_ipipe_hw.c:766 ipipe_set_gamma_regs() warn: this array is probably non-NULL. 'gamma->table_b'
drivers/staging/media/davinci_vpfe/dm365_ipipe_hw.c:769 ipipe_set_gamma_regs() warn: this array is probably non-NULL. 'gamma->table_g'
drivers/staging/media/davinci_vpfe/dm365_ipipe_hw.c:791 ipipe_set_3d_lut_regs() warn: this array is probably non-NULL. 'lut_3d->table'
drivers/staging/media/davinci_vpfe/dm365_ipipe_hw.c:903 ipipe_set_gbce_regs() warn: this array is probably non-NULL. 'gbce->table'
drivers/staging/media/davinci_vpfe/dm365_ipipe_hw.c:946 ipipe_set_ee_regs() warn: this array is probably non-NULL. 'ee->table'
drivers/staging/media/davinci_vpfe/dm365_ipipe.c:59 ipipe_validate_lutdpc_params() warn: this array is probably non-NULL. 'lutdpc->table'
drivers/staging/media/davinci_vpfe/dm365_ipipe.c:697 ipipe_get_gamma_params() warn: this array is probably non-NULL. 'gamma_param->table_r'
drivers/staging/media/davinci_vpfe/dm365_ipipe.c:705 ipipe_get_gamma_params() warn: this array is probably non-NULL. 'gamma_param->table_g'
drivers/staging/media/davinci_vpfe/dm365_ipipe.c:712 ipipe_get_gamma_params() warn: this array is probably non-NULL. 'gamma_param->table_b'
drivers/staging/media/davinci_vpfe/dm365_ipipe.c:745 ipipe_get_3d_lut_params() warn: this array is probably non-NULL. 'lut_param->table'
drivers/staging/media/davinci_vpfe/dm365_ipipe.c:926 ipipe_get_gbce_params() warn: this array is probably non-NULL. 'gbce_param->table'--- drivers/staging/media/davinci_vpfe/dm365_ipipe.c | 18 ++++-------------- drivers/staging/media/davinci_vpfe/dm365_ipipe_hw.c | 19 +++---------------- 2 files changed, 7 insertions(+), 30 deletions(-)
drivers/staging/media/davinci_vpfe/dm365_ipipe.c +4 -14
@@ -56,7 +56,7 @@ static int ipipe_validate_lutdpc_params(struct vpfe_ipipe_lutdpc *lutdpc) lutdpc->dpc_size > LUT_DPC_MAX_SIZE)return -EINVAL ; -if (lutdpc->en && !lutdpc->table) +if (lutdpc->en)return -EINVAL ;for (i =0 ; i < lutdpc->dpc_size; i++)
@@ -694,7 +694,7 @@ static int ipipe_get_gamma_params(struct vpfe_ipipe_device *ipipe, void *param) table_size = gamma->tbl_size; -if (!gamma->bypass_r && !gamma_param->table_r) { +if (!gamma->bypass_r) {dev_err (dev,"ipipe_get_gamma_params: table ptr empty for R\n" );return -EINVAL ;
@@ -702,14 +702,14 @@ static int ipipe_get_gamma_params(struct vpfe_ipipe_device *ipipe, void *param)memcpy (gamma_param->table_r, gamma->table_r, (table_size *sizeof (struct vpfe_ipipe_gamma_entry ))); -if (!gamma->bypass_g && !gamma_param->table_g) { +if (!gamma->bypass_g) {dev_err (dev,"ipipe_get_gamma_params: table ptr empty for G\n" );return -EINVAL ; }memcpy (gamma_param->table_g, gamma->table_g, (table_size *sizeof (struct vpfe_ipipe_gamma_entry ))); -if (!gamma->bypass_b && !gamma_param->table_b) { +if (!gamma->bypass_b) {dev_err (dev,"ipipe_get_gamma_params: table ptr empty for B\n" );return -EINVAL ; }
@@ -739,13 +739,8 @@ static int ipipe_get_3d_lut_params(struct vpfe_ipipe_device *ipipe, void *param) {struct vpfe_ipipe_3d_lut *lut_param = param;struct vpfe_ipipe_3d_lut *lut = &ipipe->config.lut; -struct device *dev = ipipe->subdev.v4l2_dev->dev; lut_param->en = lut->en; -if (!lut_param->table) { -dev_err (dev,"ipipe_get_3d_lut_params: Invalid table ptr\n" ); -return -EINVAL ; - } memcpy(lut_param->table, &lut->table, (VPFE_IPIPE_MAX_SIZE_3D_LUT *
@@ -919,14 +914,9 @@ static int ipipe_get_gbce_params(struct vpfe_ipipe_device *ipipe, void *param) {struct vpfe_ipipe_gbce *gbce_param = param;struct vpfe_ipipe_gbce *gbce = &ipipe->config.gbce; -struct device *dev = ipipe->subdev.v4l2_dev->dev; gbce_param->en = gbce->en; gbce_param->type = gbce->type; -if (!gbce_param->table) { -dev_err (dev,"ipipe_get_gbce_params: Invalid table ptr\n" ); -return -EINVAL ; - }memcpy (gbce_param->table, gbce->table, (VPFE_IPIPE_MAX_SIZE_GBCE_LUT *sizeof (unsigned short )));
drivers/staging/media/davinci_vpfe/dm365_ipipe_hw.c +3 -16
@@ -430,9 +430,6 @@ ipipe_set_lutdpc_regs(void __iomem *base_addr, void __iomem *isp5_base_addr,regw_ip (base_addr,LUT_DPC_START_ADDR ,DPC_LUT_ADR );regw_ip (base_addr, dpc->dpc_size,DPC_LUT_SIZ &LUT_DPC_SIZE_MASK ); -if (dpc->table ==NULL ) -return ; -for (count =0 ; count < dpc->dpc_size; count++) {if (count >= max_tbl_size) lut_start_addr =DPC_TB1_START_ADDR ;
@@ -760,13 +757,13 @@ ipipe_set_gamma_regs(void __iomem *base_addr, void __iomem *isp5_base_addr, table_size = gamma->tbl_size; -if (!gamma->bypass_r && gamma->table_r !=NULL ) +if (!gamma->bypass_r)ipipe_update_gamma_tbl (isp5_base_addr, gamma->table_r, table_size,GAMMA_R_START_ADDR ); -if (!gamma->bypass_b && gamma->table_b !=NULL ) +if (!gamma->bypass_b)ipipe_update_gamma_tbl (isp5_base_addr, gamma->table_b, table_size,GAMMA_B_START_ADDR ); -if (!gamma->bypass_g && gamma->table_g !=NULL ) +if (!gamma->bypass_g)ipipe_update_gamma_tbl (isp5_base_addr, gamma->table_g, table_size,GAMMA_G_START_ADDR ); }
@@ -787,10 +784,6 @@ ipipe_set_3d_lut_regs(void __iomem *base_addr, void __iomem *isp5_base_addr,if (!lut_3d->en)return ; -/* lut_3d enabled */ -if (!lut_3d->table) -return ; -/* valied table */ tbl = lut_3d->table;for (i =0 ; i <VPFE_IPIPE_MAX_SIZE_3D_LUT ; i++) {
@@ -900,9 +893,6 @@ ipipe_set_gbce_regs(void __iomem *base_addr, void __iomem *isp5_base_addr,regw_ip (base_addr, gbce->type,GBCE_TYP ); -if (!gbce->table) -return ; -for (count =0 ; count <VPFE_IPIPE_MAX_SIZE_GBCE_LUT ; count +=2 ) w_ip_table(isp5_base_addr, ((gbce->table[count + 1] & mask) << GBCE_ENTRY_SHIFT) | (gbce->table[count] & mask),
@@ -943,9 +933,6 @@ ipipe_set_ee_regs(void __iomem *base_addr, void __iomem *isp5_base_addr,regw_ip (base_addr, ee->es_gain_grad &YEE_THR_MASK ,YEE_G_GAN );regw_ip (base_addr, ee->es_ofst_grad &YEE_THR_MASK ,YEE_G_OFT ); -if (ee->table ==NULL ) -return ; -for (count =0 ; count <VPFE_IPIPE_MAX_SIZE_YEE_LUT ; count +=2 ) w_ip_table(isp5_base_addr, ((ee->table[count + 1] & YEE_ENTRY_MASK) << YEE_ENTRY_SHIFT) |
Signature · 1 line
2.14.3
PATCH 2/21 media: dm365_ipipe: remove an unused var
In reply to Mauro Carvalho Chehabdrivers/staging/media/davinci_vpfe/dm365_ipipe.c:74:17: warning: variable 'dev' set but not used [-Wunused-but-set-variable]
struct device *dev;
^~~--- drivers/staging/media/davinci_vpfe/dm365_ipipe.c | 2 -- 1 file changed, 2 deletions(-)
drivers/staging/media/davinci_vpfe/dm365_ipipe.c +0 -2
@@ -71,14 +71,12 @@ static int ipipe_set_lutdpc_params(struct vpfe_ipipe_device *ipipe, void *param) {struct vpfe_ipipe_lutdpc *lutdpc = &ipipe->config.lutdpc;struct vpfe_ipipe_lutdpc *dpc_param; -struct device *dev;if (!param) {memset ((void *)lutdpc,0 ,sizeof (struct vpfe_ipipe_lutdpc )); goto success; } - dev = ipipe->subdev.v4l2_dev->dev; dpc_param = param; lutdpc->en = dpc_param->en; lutdpc->repl_white = dpc_param->repl_white;
Signature · 1 line
2.14.3
PATCH 3/21 media: davinci_vpfe: fix vpfe_ipipe_init() error handling
In reply to Mauro Carvalho ChehabAs warned:
drivers/staging/media/davinci_vpfe/dm365_ipipe.c:1834 vpfe_ipipe_init() error: we previously assumed 'res' could be null (see line 1797)
There's something wrong at vpfe_ipipe_init():
1) it caches the resourse_size() from from the first region and reuses to the second region;
2) the "res" var is overriden 3 times;
3) at free logic, it assumes that "res->start" is not overriden by platform_get_resource(pdev, IORESOURCE_MEM, 6), but that's not true, as it can even be NULL there.
This patch fixes the above issues by:
a) store the resources used by release_mem_region() on a separate var;
b) stop caching resource_size(), using the function where needed.
--- drivers/staging/media/davinci_vpfe/dm365_ipipe.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
drivers/staging/media/davinci_vpfe/dm365_ipipe.c +8 -8
@@ -1778,25 +1778,25 @@ vpfe_ipipe_init(struct vpfe_ipipe_device *ipipe, struct platform_device *pdev)struct media_pad *pads = &ipipe->pads[0 ];struct v4l2_subdev *sd = &ipipe->subdev;struct media_entity *me = &sd->entity; -static resource_size_t res_len; -struct resource *res; +struct resource *res, *memres; res =platform_get_resource (pdev,IORESOURCE_MEM ,4 );if (!res)return -ENOENT ; - res_len =resource_size (res); - res =request_mem_region (res->start, res_len, res->name); -if (!res) + memres =request_mem_region (res->start,resource_size (res), res->name); +if (!memres)return -EBUSY ; - ipipe->base_addr =ioremap_nocache (res->start, res_len); + ipipe->base_addr =ioremap_nocache (memres->start, +resource_size (memres));if (!ipipe->base_addr) goto error_release; res =platform_get_resource (pdev,IORESOURCE_MEM ,6 );if (!res) goto error_unmap; - ipipe->isp5_base_addr =ioremap_nocache (res->start, res_len); + ipipe->isp5_base_addr =ioremap_nocache (res->start, +resource_size (res));if (!ipipe->isp5_base_addr) goto error_unmap;
@@ -1831,7 +1831,7 @@ vpfe_ipipe_init(struct vpfe_ipipe_device *ipipe, struct platform_device *pdev) error_unmap:iounmap (ipipe->base_addr); error_release: -release_mem_region (res->start, res_len); +release_mem_region (memres->start,resource_size (memres));return -ENOMEM ; }
Signature · 1 line
2.14.3
Re: [PATCH 03/21] media: davinci_vpfe: fix vpfe_ipipe_init() error handling
Quoted 16 lines · Mauro Carvalho Chehab
As warned:
drivers/staging/media/davinci_vpfe/dm365_ipipe.c:1834vpfe_ipipe_init()error: we previously assumed 'res' could be null (see line 1797)There's something wrong at
vpfe_ipipe_init():1) it caches the
resourse_size()from from the first region and reuses to the second region;2) the "res" var is overriden 3 times;
3) at free logic, it assumes that "
res->start" is not overriden byplatform_get_resource(pdev, IORESOURCE_MEM, 6), but that's not true, as it can even be NULL there.This patch fixes the above issues by:
Quoted 7 lines
a) store the resources used by
release_mem_region()on a separate var;b) stop caching
resource_size(), using the function where needed.Signed-off-by Mauro Carvalho Chehab <[email protected]>
I ran coccicheck on a 4.14.74 stable kernel and noticed that 'res' can be NULL in vpfe_ipipe_init. It looks like this patch is not included in the 4.14 stable series. Can this patch be applied? I applied it myself and it applies cleanly, but I have no way to test it.
That 'res->start' error_release could end up a NULL pointer deref.
- Joel
Re: [PATCH 03/21] media: davinci_vpfe: fix vpfe_ipipe_init() error handling
Quoted 23 lines · Joel Fernandes
Quoted 22 lines · Mauro Carvalho Chehab
As warned:
drivers/staging/media/davinci_vpfe/dm365_ipipe.c:1834vpfe_ipipe_init()error: we previously assumed 'res' could be null (see line 1797)There's something wrong at
vpfe_ipipe_init():1) it caches the
resourse_size()from from the first region and reuses to the second region;2) the "res" var is overriden 3 times;
3) at free logic, it assumes that "
res->start" is not overriden byplatform_get_resource(pdev, IORESOURCE_MEM, 6), but that's not true, as it can even be NULL there.This patch fixes the above issues by:
a) store the resources used by
release_mem_region()on a separate var;b) stop caching
resource_size(), using the function where needed.
Quoted 8 lines
Quoted 1 line
Signed-off-by Mauro Carvalho Chehab <[email protected]>I ran coccicheck on a 4.14.74 stable kernel and noticed that 'res' can be NULL in
vpfe_ipipe_init. It looks like this patch is not included in the 4.14 stable series. Can this patch be applied? I applied it myself and it applies cleanly, but I have no way to test it.That '
res->start'error_releasecould end up a NULL pointer deref.
Should this patch goto 4.14 stable? Seems straightforward and worth it to prevent the possible NULL pointer deref issue.
- Joel
PATCH 4/21 media: davinci_vpfe: mark __iomem as such
In reply to Mauro Carvalho ChehabThere are several usages of an __iomem memory that aren't marked as such, causing those warnings:
drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:201:27: warning: incorrect type in assignment (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:201:27: expected void *ipipeif_base_addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:201:27: got void [noderef] <asn:2>*ipipeif_base_addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:71:27: warning: incorrect type in argument 1 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:71:27: expected void const volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:71:27: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:71:27: warning: incorrect type in argument 1 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:71:27: expected void const volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:71:27: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:510:42: warning: incorrect type in initializer (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:510:42: expected void *ipipeif_base_addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:510:42: got void [noderef] <asn:2>*ipipeif_base_addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:71:27: warning: incorrect type in argument 1 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:71:27: expected void const volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:71:27: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:797:42: warning: incorrect type in initializer (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:797:42: expected void *ipipeif_base_addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:797:42: got void [noderef] <asn:2>*ipipeif_base_addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: warning: incorrect type in argument 2 (different address spaces)drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: expected void volatile [noderef] <asn:2>*addrdrivers/staging/media/davinci_vpfe/dm365_ipipeif.c:76:26: got void *
--- drivers/staging/media/davinci_vpfe/dm365_ipipeif.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
drivers/staging/media/davinci_vpfe/dm365_ipipeif.c +6 -6
@@ -66,17 +66,17 @@ ipipeif_get_pack_mode(u32 in_pix_fmt) } } -static inline u32 ipipeif_read (void *addr,u32 offset) +static inline u32 ipipeif_read (void __iomem *addr,u32 offset) {return readl (addr + offset); } -static inline void ipipeif_write (u32 val,void *addr,u32 offset) +static inline void ipipeif_write (u32 val,void __iomem *addr,u32 offset) {writel (val, addr + offset); } -static void ipipeif_config_dpc (void *addr,struct ipipeif_dpc *dpc) +static void ipipeif_config_dpc (void __iomem *addr,struct ipipeif_dpc *dpc) {u32 val =0 ;
@@ -191,7 +191,7 @@ static int ipipeif_hw_setup(struct v4l2_subdev *sd)struct ipipeif_params params = ipipeif->config;enum ipipeif_input_source ipipeif_source;u32 isif_port_if; -void *ipipeif_base_addr; +void __iomem *ipipeif_base_addr;unsigned int val;int data_shift;int pack_mode;
@@ -507,7 +507,7 @@ static int ipipeif_s_ctrl(struct v4l2_ctrl *ctrl)void vpfe_ipipeif_enable (struct vpfe_device *vpfe_dev) {struct vpfe_ipipeif_device *ipipeif = &vpfe_dev->vpfe_ipipeif; -void *ipipeif_base_addr = ipipeif->ipipeif_base_addr; +void __iomem *ipipeif_base_addr = ipipeif->ipipeif_base_addr;unsigned char val;if (ipipeif->input !=IPIPEIF_INPUT_MEMORY )
@@ -794,7 +794,7 @@ static int ipipeif_video_in_queue(struct vpfe_device *vpfe_dev, unsigned long addr) {struct vpfe_ipipeif_device *ipipeif = &vpfe_dev->vpfe_ipipeif; -void *ipipeif_base_addr = ipipeif->ipipeif_base_addr; +void __iomem *ipipeif_base_addr = ipipeif->ipipeif_base_addr;unsigned int adofs;u32 val;
Signature · 1 line
2.14.3
PATCH 5/21 media: davinci_vpfe: get rid of an unused var at dm365_isif.c
In reply to Mauro Carvalho ChehabNot sure what was the original idea here, but the implementation went into a different way, and the fmt var is not used anymore, as warned:
drivers/staging/media/davinci_vpfe/dm365_isif.c: In function '__isif_get_format':drivers/staging/media/davinci_vpfe/dm365_isif.c:1401:29: warning: variable 'fmt' set but not used [-Wunused-but-set-variable]
struct v4l2_subdev_format fmt;
^~~--- drivers/staging/media/davinci_vpfe/dm365_isif.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-)
drivers/staging/media/davinci_vpfe/dm365_isif.c +2 -7
@@ -1397,14 +1397,9 @@ __isif_get_format(struct vpfe_isif_device *isif, struct v4l2_subdev_pad_config *cfg, unsigned int pad, enum v4l2_subdev_format_whence which) { - if (which == V4L2_SUBDEV_FORMAT_TRY) { - struct v4l2_subdev_format fmt; - - fmt.pad = pad; - fmt.which = which; - + if (which == V4L2_SUBDEV_FORMAT_TRY) return v4l2_subdev_get_try_format(&isif->subdev, cfg, pad); - } +return &isif->formats[pad]; }
Signature · 1 line
2.14.3
PATCH 6/21 media: davinci_vpfe: vpfe_video: remove an unused var
In reply to Mauro Carvalho Chehabas warned:
drivers/staging/media/davinci_vpfe/vpfe_video.c: In function 'vpfe_streamon':
drivers/staging/media/davinci_vpfe/vpfe_video.c:1471:31: warning: variable 'sdinfo' set but not used [-Wunused-but-set-variable]
struct vpfe_ext_subdev_info *sdinfo;
^~~~~~While here, cleanup this kernel-doc warning:
drivers/staging/media/davinci_vpfe/vpfe_video.c:225: warning: Function parameter or member 'pipe' not described in 'vpfe_video_validate_pipeline'
--- drivers/staging/media/davinci_vpfe/vpfe_video.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
drivers/staging/media/davinci_vpfe/vpfe_video.c +1 -3
@@ -214,7 +214,7 @@ int vpfe_video_is_pipe_ready(struct vpfe_pipeline *pipe)return 1 ; } -/** +/* * Validate a pipeline by checking both ends of all links for format * discrepancies. *
@@ -1468,7 +1468,6 @@ static int vpfe_streamon(struct file *file, void *priv,struct vpfe_device *vpfe_dev = video->vpfe_dev;struct vpfe_pipeline *pipe = &video->pipe;struct vpfe_fh *fh = file->private_data; -struct vpfe_ext_subdev_info *sdinfo;int ret = -EINVAL ;v4l2_dbg (1 , debug, &vpfe_dev->v4l2_dev,"vpfe_streamon\n" );
@@ -1483,7 +1482,6 @@ static int vpfe_streamon(struct file *file, void *priv,v4l2_err (&vpfe_dev->v4l2_dev,"fh->io_allowed\n" );return -EACCES ; } - sdinfo = video->current_ext_subdev;/* If buffer queue is empty, return error */ if (list_empty (&video->buffer_queue.queued_list)) {v4l2_err (&vpfe_dev->v4l2_dev,"buffer queue is empty\n" );
Signature · 1 line
2.14.3
PATCH 7/21 media: davinci_vpfe: don't use kernel-doc markup for simple comments
In reply to Mauro Carvalho ChehabFix those two warnings:
drivers/staging/media/davinci_vpfe/vpfe_mc_capture.c:90: warning: Function parameter or member 'interface' not described in 'MODULE_PARM_DESC' drivers/staging/media/davinci_vpfe/vpfe_mc_capture.c:90: warning: Function parameter or member '(default' not described in 'MODULE_PARM_DESC'
--- drivers/staging/media/davinci_vpfe/vpfe_mc_capture.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/staging/media/davinci_vpfe/vpfe_mc_capture.c +1 -1
@@ -77,7 +77,7 @@ static bool interface;module_param (interface, bool,0444 );module_param (debug, bool,0644 ); -/** +/* * VPFE capture can be used for capturing video such as from TVP5146 or TVP7002 * and for capture raw bayer data from camera sensors such as mt9p031. At this * point there is problem in co-existence of mt9p031 and tvp5146 due to i2c
Signature · 1 line
2.14.3
PATCH 8/21 media: davinci_vpfe: fix a typo for "default"
In reply to Mauro Carvalho Chehabresizer_set_defualt_configuration -> resizer_set_default_configuration
--- drivers/staging/media/davinci_vpfe/dm365_resizer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/staging/media/davinci_vpfe/dm365_resizer.c +2 -2
@@ -794,7 +794,7 @@ resizer_configure_in_single_shot_mode(struct vpfe_resizer_device *resizer) }static void -resizer_set_defualt_configuration (struct vpfe_resizer_device *resizer) +resizer_set_default_configuration (struct vpfe_resizer_device *resizer) {#define WIDTH_I 640#define HEIGHT_I 480
@@ -916,7 +916,7 @@ resizer_set_configuration(struct vpfe_resizer_device *resizer, struct vpfe_rsz_config *chan_config) {if (!chan_config->config) -resizer_set_defualt_configuration (resizer); +resizer_set_default_configuration (resizer);else if (copy_from_user (&resizer->config.user_config, chan_config->config,sizeof (struct vpfe_rsz_config_params )))
Signature · 1 line
2.14.3
PATCH 9/21 media: davinci_vpfe: cleanup ipipe_[g|s]_config logic
In reply to Mauro Carvalho ChehabReduce one ident level inside those functions and use BIT() macro.
--- drivers/staging/media/davinci_vpfe/dm365_ipipe.c | 98 ++++++++++++------------ 1 file changed, 50 insertions(+), 48 deletions(-)
drivers/staging/media/davinci_vpfe/dm365_ipipe.c +50 -48
@@ -27,6 +27,7 @@*/ #include <linux/slab.h> +#include <linux/bitops.h> #include "dm365_ipipe.h" #include "dm365_ipipe_hw.h"
@@ -1255,37 +1256,38 @@ static int ipipe_s_config(struct v4l2_subdev *sd, struct vpfe_ipipe_config *cfg)int rval =0 ;for (i =0 ; i <ARRAY_SIZE (ipipe_modules); i++) { -unsigned int bit =1 << i; +const struct ipipe_module_if *module_if; +struct ipipe_module_params *params; +void __user *from; +size_t size; +void *to; -if (cfg->flag & bit) { -const struct ipipe_module_if *module_if = - &ipipe_modules[i]; -struct ipipe_module_params *params; -void __user *from = *(void *__user *) - ((void *)cfg + module_if->config_offset); -size_t size; -void *to; +if (!(cfg->flag &BIT (i))) +continue ; - params =kmalloc (sizeof (struct ipipe_module_params ), -GFP_KERNEL ); - to = (void *)params + module_if->param_offset; - size = module_if->param_size; + module_if = &ipipe_modules[i]; + from = *(void *__user *) + ((void *)cfg + module_if->config_offset); -if (to && from && size) { -if (copy_from_user (to, from, size)) { - rval = -EFAULT ; -break ; - } - rval = module_if->set (ipipe, to); -if (rval) - goto error; - }else if (to && !from && size) { - rval = module_if->set (ipipe,NULL ); -if (rval) - goto error; + params =kmalloc (sizeof (struct ipipe_module_params ), +GFP_KERNEL ); + to = (void *)params + module_if->param_offset; + size = module_if->param_size; + +if (to && from && size) { +if (copy_from_user (to, from, size)) { + rval = -EFAULT ; +break ; } -kfree (params); + rval = module_if->set (ipipe, to); +if (rval) + goto error; + }else if (to && !from && size) { + rval = module_if->set (ipipe,NULL ); +if (rval) + goto error; } +kfree (params); } error:return rval;
@@ -1298,33 +1300,33 @@ static int ipipe_g_config(struct v4l2_subdev *sd, struct vpfe_ipipe_config *cfg)int rval =0 ;for (i =1 ; i <ARRAY_SIZE (ipipe_modules); i++) { -unsigned int bit =1 << i; +const struct ipipe_module_if *module_if; +struct ipipe_module_params *params; +void __user *to; +size_t size; +void *from; -if (cfg->flag & bit) { -const struct ipipe_module_if *module_if = - &ipipe_modules[i]; -struct ipipe_module_params *params; -void __user *to = *(void *__user *) - ((void *)cfg + module_if->config_offset); -size_t size; -void *from; +if (!(cfg->flag &BIT (i))) +continue ; - params =kmalloc (sizeof (struct ipipe_module_params ), -GFP_KERNEL ); - from = (void *)params + module_if->param_offset; - size = module_if->param_size; + module_if = &ipipe_modules[i]; + to = *(void *__user *)((void *)cfg + module_if->config_offset); -if (to && from && size) { - rval = module_if->get (ipipe, from); -if (rval) - goto error; -if (copy_to_user (to, from, size)) { - rval = -EFAULT ; -break ; - } + params =kmalloc (sizeof (struct ipipe_module_params ), +GFP_KERNEL ); + from = (void *)params + module_if->param_offset; + size = module_if->param_size; + +if (to && from && size) { + rval = module_if->get (ipipe, from); +if (rval) + goto error; +if (copy_to_user (to, from, size)) { + rval = -EFAULT ; +break ; } -kfree (params); } +kfree (params); } error:return rval;
Signature · 1 line
2.14.3
PATCH 10/21 media: davinci_vpfe: fix __user annotations
In reply to Mauro Carvalho ChehabThe __user annotations on this driver are wrong, causing lots of warnings:
drivers/staging/media/davinci_vpfe/dm365_ipipe.c:1269:22: warning: incorrect type in assignment (different address spaces)
drivers/staging/media/davinci_vpfe/dm365_ipipe.c:1269:22: expected void [noderef] <asn:1>*from
drivers/staging/media/davinci_vpfe/dm365_ipipe.c:1269:22: got void *[noderef] <asn:1><noident>
drivers/staging/media/davinci_vpfe/dm365_ipipe.c:1313:20: warning: incorrect type in assignment (different address spaces)
drivers/staging/media/davinci_vpfe/dm365_ipipe.c:1313:20: expected void [noderef] <asn:1>*to
drivers/staging/media/davinci_vpfe/dm365_ipipe.c:1313:20: got void *[noderef] <asn:1><noident>
drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:424:41: warning: incorrect type in initializer (different address spaces)
drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:424:41: expected struct ipipeif_params *config
drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:424:41: got void [noderef] <asn:1>*arg
drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:474:46: warning: incorrect type in argument 2 (different address spaces)
drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:474:46: expected void [noderef] <asn:1>*arg
drivers/staging/media/davinci_vpfe/dm365_ipipeif.c:474:46: got void *arg
drivers/staging/media/davinci_vpfe/dm365_resizer.c:922:32: warning: incorrect type in argument 2 (different address spaces)
drivers/staging/media/davinci_vpfe/dm365_resizer.c:922:32: expected void const [noderef] <asn:1>*from
drivers/staging/media/davinci_vpfe/dm365_resizer.c:922:32: got struct vpfe_rsz_config_params *config
drivers/staging/media/davinci_vpfe/dm365_resizer.c:945:27: warning: incorrect type in argument 1 (different address spaces)
drivers/staging/media/davinci_vpfe/dm365_resizer.c:945:27: expected void [noderef] <asn:1>*to
drivers/staging/media/davinci_vpfe/dm365_resizer.c:945:27: got void *<noident>
--- drivers/staging/media/davinci_vpfe/dm365_ipipe.c | 15 ++++++--------- drivers/staging/media/davinci_vpfe/dm365_ipipeif.c | 2 +- drivers/staging/media/davinci_vpfe/dm365_resizer.c | 9 +++++---- 3 files changed, 12 insertions(+), 14 deletions(-)
drivers/staging/media/davinci_vpfe/dm365_ipipe.c +6 -9
@@ -1258,16 +1258,14 @@ static int ipipe_s_config(struct v4l2_subdev *sd, struct vpfe_ipipe_config *cfg)for (i =0 ; i <ARRAY_SIZE (ipipe_modules); i++) {const struct ipipe_module_if *module_if;struct ipipe_module_params *params; -void __user *from; +void *from, *to;size_t size; -void *to;if (!(cfg->flag &BIT (i)))continue ; module_if = &ipipe_modules[i]; - from = *(void *__user *) - ((void *)cfg + module_if->config_offset); + from = *(void **)((void *)cfg + module_if->config_offset); params =kmalloc (sizeof (struct ipipe_module_params ),GFP_KERNEL );
@@ -1275,7 +1273,7 @@ static int ipipe_s_config(struct v4l2_subdev *sd, struct vpfe_ipipe_config *cfg) size = module_if->param_size;if (to && from && size) { -if (copy_from_user (to, from, size)) { +if (copy_from_user (to, (void __user *)from, size)) { rval = -EFAULT ;break ; }
@@ -1302,15 +1300,14 @@ static int ipipe_g_config(struct v4l2_subdev *sd, struct vpfe_ipipe_config *cfg)for (i =1 ; i <ARRAY_SIZE (ipipe_modules); i++) {const struct ipipe_module_if *module_if;struct ipipe_module_params *params; -void __user *to; +void *from, *to;size_t size; -void *from;if (!(cfg->flag &BIT (i)))continue ; module_if = &ipipe_modules[i]; - to = *(void *__user *)((void *)cfg + module_if->config_offset); + to = *(void **)((void *)cfg + module_if->config_offset); params =kmalloc (sizeof (struct ipipe_module_params ),GFP_KERNEL );
@@ -1321,7 +1318,7 @@ static int ipipe_g_config(struct v4l2_subdev *sd, struct vpfe_ipipe_config *cfg) rval = module_if->get (ipipe, from);if (rval) goto error; -if (copy_to_user (to, from, size)) { +if (copy_to_user ((void __user *)to, from, size)) { rval = -EFAULT ;break ; }
drivers/staging/media/davinci_vpfe/dm365_ipipeif.c +1 -1
@@ -418,7 +418,7 @@ ipipeif_set_config(struct v4l2_subdev *sd, struct ipipeif_params *config) }static int -ipipeif_get_config (struct v4l2_subdev *sd,void __user *arg) +ipipeif_get_config (struct v4l2_subdev *sd,void *arg) {struct vpfe_ipipeif_device *ipipeif =v4l2_get_subdevdata (sd);struct ipipeif_params *config = arg;
drivers/staging/media/davinci_vpfe/dm365_resizer.c +5 -4
@@ -919,7 +919,8 @@ resizer_set_configuration(struct vpfe_resizer_device *resizer,resizer_set_default_configuration (resizer); else if (copy_from_user(&resizer->config.user_config, - chan_config->config, sizeof(struct vpfe_rsz_config_params))) + (void __user *)chan_config->config, + sizeof(struct vpfe_rsz_config_params)))return -EFAULT ;return 0 ;
@@ -942,9 +943,9 @@ resizer_get_configuration(struct vpfe_resizer_device *resizer,return -EINVAL ; } -if (copy_to_user ((void *)chan_config->config, - (void *)&resizer->config.user_config, -sizeof (struct vpfe_rsz_config_params ))) { +if (copy_to_user ((void __user *)chan_config->config, + (void *)&resizer->config.user_config, +sizeof (struct vpfe_rsz_config_params ))) {dev_err (dev,"resizer_get_configuration: Error in copy to user\n" );return -EFAULT ; }
Signature · 1 line
2.14.3
PATCH 11/21 media: si470x: fix __be16 annotations
In reply to Mauro Carvalho ChehabThe annotations there are wrong as warned:
drivers/media/radio/si470x/radio-si470x-i2c.c:107:35: warning: cast to restricted __be16 drivers/media/radio/si470x/radio-si470x-i2c.c:107:35: warning: cast to restricted __be16 drivers/media/radio/si470x/radio-si470x-i2c.c:107:35: warning: cast to restricted __be16 drivers/media/radio/si470x/radio-si470x-i2c.c:107:35: warning: cast to restricted __be16 drivers/media/radio/si470x/radio-si470x-i2c.c:129:24: warning: incorrect type in assignment (different base types)
drivers/media/radio/si470x/radio-si470x-i2c.c:129:24: expected unsigned short [unsigned] [short] <noident>
drivers/media/radio/si470x/radio-si470x-i2c.c:129:24: got restricted __be16 [usertype] <noident>
drivers/media/radio/si470x/radio-si470x-i2c.c:163:39: warning: cast to restricted __be16 drivers/media/radio/si470x/radio-si470x-i2c.c:163:39: warning: cast to restricted __be16 drivers/media/radio/si470x/radio-si470x-i2c.c:163:39: warning: cast to restricted __be16 drivers/media/radio/si470x/radio-si470x-i2c.c:163:39: warning: cast to restricted __be16
--- drivers/media/radio/si470x/radio-si470x-i2c.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/media/radio/si470x/radio-si470x-i2c.c +3 -3
@@ -91,7 +91,7 @@ MODULE_PARM_DESC(max_rds_errors, "RDS maximum block errors: *1*");*/ static int si470x_get_register (struct si470x_device *radio,int regnr) { -u16 buf[READ_REG_NUM ]; +__be16 buf[READ_REG_NUM ];struct i2c_msg msgs[1 ] = { { .addr = radio->client->addr,
@@ -116,7 +116,7 @@ static int si470x_get_register(struct si470x_device *radio, int regnr)static int si470x_set_register (struct si470x_device *radio,int regnr) {int i; -u16 buf[WRITE_REG_NUM ]; +__be16 buf[WRITE_REG_NUM ];struct i2c_msg msgs[1 ] = { { .addr = radio->client->addr,
@@ -146,7 +146,7 @@ static int si470x_set_register(struct si470x_device *radio, int regnr)static int si470x_get_all_registers (struct si470x_device *radio) {int i; -u16 buf[READ_REG_NUM ]; +__be16 buf[READ_REG_NUM ];struct i2c_msg msgs[1 ] = { { .addr = radio->client->addr,
Signature · 1 line
2.14.3
PATCH 12/21 media: isif: reorder a statement to match coding style
In reply to Mauro Carvalho ChehabOn all places, we do:
void <asn_ref> *foo;
Here, it is doing, instead:
void * <asn_ref> foo;
That tricks static analyzers, making it see errors where there's none. So, just reorder in order to cleanup those warnings:
drivers/media/platform/davinci/isif.c:1066:22: warning: incorrect type in assignment (different address spaces)
drivers/media/platform/davinci/isif.c:1066:22: expected void *[noderef] <asn:2>addr
drivers/media/platform/davinci/isif.c:1066:22: got void [noderef] <asn:2>*
drivers/media/platform/davinci/isif.c:1074:44: warning: incorrect type in assignment (different address spaces)
drivers/media/platform/davinci/isif.c:1074:44: expected void [noderef] <asn:2>*static [toplevel] [assigned] base_addr
drivers/media/platform/davinci/isif.c:1074:44: got void *[noderef] <asn:2>addr
drivers/media/platform/davinci/isif.c:1078:51: warning: incorrect type in assignment (different address spaces)
drivers/media/platform/davinci/isif.c:1078:51: expected void [noderef] <asn:2>*static [toplevel] [assigned] linear_tbl0_addr
drivers/media/platform/davinci/isif.c:1078:51: got void *[noderef] <asn:2>addr
drivers/media/platform/davinci/isif.c:1082:51: warning: incorrect type in assignment (different address spaces)
drivers/media/platform/davinci/isif.c:1082:51: expected void [noderef] <asn:2>*static [toplevel] [assigned] linear_tbl1_addr
drivers/media/platform/davinci/isif.c:1082:51: got void *[noderef] <asn:2>addr
drivers/media/platform/davinci/isif.c:1067:22: warning: dereference of noderef expression
--- drivers/media/platform/davinci/isif.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/media/platform/davinci/isif.c +1 -1
@@ -1027,7 +1027,7 @@ static int isif_probe(struct platform_device *pdev) {void (*setup_pinmux)(void );struct resource *res; -void *__iomem addr; +void __iomem *addr;int status =0 , i;/* Platform data holds setup_pinmux function ptr */
Signature · 1 line
2.14.3
PATCH 13/21 media: davinci: fix an inconsistent ident
In reply to Mauro Carvalho Chehabdrivers/media/platform/davinci/vpbe_osd.c:849 try_layer_config() warn: inconsistent indenting
--- drivers/media/platform/davinci/vpbe_osd.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/media/platform/davinci/vpbe_osd.c +3 -2
@@ -846,9 +846,10 @@ static int try_layer_config(struct osd_state *sd, enum osd_layer layer,/* DM6446: */ /* only one OSD window at a time can use RGB pixel formats */ -if ((osd->vpbe_type ==VPBE_VERSION_1 ) && -is_osd_win (layer) &&is_rgb_pixfmt (lconfig->pixfmt)) { +if ((osd->vpbe_type ==VPBE_VERSION_1 ) && +is_osd_win (layer) &&is_rgb_pixfmt (lconfig->pixfmt)) {enum osd_pix_format pixfmt; +if (layer ==WIN_OSD0 ) pixfmt = osd->win[WIN_OSD1 ].lconfig.pixfmt;else
Signature · 1 line
2.14.3
PATCH 14/21 media: mmp-driver: add needed __iomem marks to power_regs
In reply to Mauro Carvalho ChehabSolve those warnings:
drivers/media/platform/marvell-ccic/mmp-driver.c:135:41: warning: incorrect type in argument 2 (different address spaces)
drivers/media/platform/marvell-ccic/mmp-driver.c:135:41: expected void [noderef] <asn:2>*<noident>
drivers/media/platform/marvell-ccic/mmp-driver.c:135:41: got void *
drivers/media/platform/marvell-ccic/mmp-driver.c:136:44: warning: incorrect type in argument 2 (different address spaces)
drivers/media/platform/marvell-ccic/mmp-driver.c:136:44: expected void [noderef] <asn:2>*<noident>
drivers/media/platform/marvell-ccic/mmp-driver.c:136:44: got void *
drivers/media/platform/marvell-ccic/mmp-driver.c:174:38: warning: incorrect type in argument 2 (different address spaces)
drivers/media/platform/marvell-ccic/mmp-driver.c:174:38: expected void [noderef] <asn:2>*<noident>
drivers/media/platform/marvell-ccic/mmp-driver.c:174:38: got void *
drivers/media/platform/marvell-ccic/mmp-driver.c:175:38: warning: incorrect type in argument 2 (different address spaces)
drivers/media/platform/marvell-ccic/mmp-driver.c:175:38: expected void [noderef] <asn:2>*<noident>
drivers/media/platform/marvell-ccic/mmp-driver.c:175:38: got void *
drivers/media/platform/marvell-ccic/mmp-driver.c:195:48: warning: incorrect type in argument 1 (different address spaces)
drivers/media/platform/marvell-ccic/mmp-driver.c:195:48: expected void [noderef] <asn:2>*<noident>
drivers/media/platform/marvell-ccic/mmp-driver.c:195:48: got void *
drivers/media/platform/marvell-ccic/mmp-driver.c:196:55: warning: incorrect type in argument 2 (different address spaces)
drivers/media/platform/marvell-ccic/mmp-driver.c:196:55: expected void [noderef] <asn:2>*<noident>
drivers/media/platform/marvell-ccic/mmp-driver.c:196:55: got void *
drivers/media/platform/marvell-ccic/mmp-driver.c:197:54: warning: incorrect type in argument 2 (different address spaces)
drivers/media/platform/marvell-ccic/mmp-driver.c:197:54: expected void [noderef] <asn:2>*<noident>
drivers/media/platform/marvell-ccic/mmp-driver.c:197:54: got void *
drivers/media/platform/marvell-ccic/mmp-driver.c:202:48: warning: incorrect type in argument 1 (different address spaces)
drivers/media/platform/marvell-ccic/mmp-driver.c:202:48: expected void [noderef] <asn:2>*<noident>
drivers/media/platform/marvell-ccic/mmp-driver.c:202:48: got void *
drivers/media/platform/marvell-ccic/mmp-driver.c:203:55: warning: incorrect type in argument 2 (different address spaces)
drivers/media/platform/marvell-ccic/mmp-driver.c:203:55: expected void [noderef] <asn:2>*<noident>
drivers/media/platform/marvell-ccic/mmp-driver.c:203:55: got void *
drivers/media/platform/marvell-ccic/mmp-driver.c:204:54: warning: incorrect type in argument 2 (different address spaces)
drivers/media/platform/marvell-ccic/mmp-driver.c:204:54: expected void [noderef] <asn:2>*<noident>
drivers/media/platform/marvell-ccic/mmp-driver.c:204:54: got void *
drivers/media/platform/marvell-ccic/mmp-driver.c:389:25: warning: incorrect type in assignment (different address spaces)
drivers/media/platform/marvell-ccic/mmp-driver.c:389:25: expected void *power_regs
drivers/media/platform/marvell-ccic/mmp-driver.c:389:25: got void [noderef] <asn:2>*
--- drivers/media/platform/marvell-ccic/mmp-driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/media/platform/marvell-ccic/mmp-driver.c +1 -1
@@ -37,7 +37,7 @@ MODULE_LICENSE("GPL");static char *mcam_clks[] = {"CCICAXICLK" ,"CCICFUNCLK" ,"CCICPHYCLK" };struct mmp_camera { -void *power_regs; +void __iomem *power_regs;struct platform_device *pdev;struct mcam_camera mcam;struct list_head devlist;
Signature · 1 line
2.14.3
PATCH 15/21 media: vpbe_display: properly handle error case
In reply to Mauro Carvalho Chehabif v4l2_subdev_call(..., VENC_GET_FLD,...) fails, it currently returns a random value. Instead, return 1.
That's probably better than returning 0, as this is very likely what happens in practice with the current code, as as the probably of an unititialized 32 bits integer to have an specific value (0, in this case), is 1/(2^32).
An alternative would be to return an error code, and let the caller to hint, based on the past received frame, but that sounds weird.
--- drivers/media/platform/davinci/vpbe_display.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/media/platform/davinci/vpbe_display.c +2 -2
@@ -56,8 +56,7 @@ static int vpbe_set_osd_display_params(struct vpbe_display *disp_dev,static int venc_is_second_field (struct vpbe_display *disp_dev) {struct vpbe_device *vpbe_dev = disp_dev->vpbe_dev; -int ret; -int val; +int ret, val; ret = v4l2_subdev_call(vpbe_dev->venc, core,
@@ -67,6 +66,7 @@ static int venc_is_second_field(struct vpbe_display *disp_dev)if (ret <0 ) {v4l2_err (&vpbe_dev->v4l2_dev,"Error in getting Field ID 0\n" ); +return 1 ; }return val; }
Signature · 1 line
2.14.3
PATCH 16/21 media: vpbe_display: get rid of warnings
In reply to Mauro Carvalho ChehabSolve those warnings:
drivers/media/platform/davinci/vpbe_display.c:288 vpbe_start_streaming() warn: inconsistent indenting drivers/media/platform/davinci/vpbe_display.c:1356 register_device() warn: argument 3 to %x specifier is cast from pointer drivers/media/platform/davinci/vpbe_display.c:1356 register_device() warn: argument 4 to %x specifier is cast from pointer
--- drivers/media/platform/davinci/vpbe_display.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/media/platform/davinci/vpbe_display.c +4 -4
@@ -285,7 +285,7 @@ static int vpbe_start_streaming(struct vb2_queue *vq, unsigned int count)struct osd_state *osd_device = layer->disp_dev->osd_device;int ret; - osd_device->ops.disable_layer (osd_device, layer->layer_info.id); + osd_device->ops.disable_layer (osd_device, layer->layer_info.id);/* Get the next frame from the buffer queue */ layer->next_frm = layer->cur_frm = list_entry(layer->dma_queue.next,
@@ -1354,9 +1354,9 @@ static int register_device(struct vpbe_layer *vpbe_display_layer,v4l2_info (&disp_dev->vpbe_dev->v4l2_dev,"Trying to register VPBE display device.\n" );v4l2_info (&disp_dev->vpbe_dev->v4l2_dev, -"layer=%x,layer->video_dev=%x\n" , - (int )vpbe_display_layer, - (int )&vpbe_display_layer->video_dev); +"layer=%p,layer->video_dev=%p\n" , + vpbe_display_layer, + &vpbe_display_layer->video_dev); vpbe_display_layer->video_dev.queue = &vpbe_display_layer->buffer_queue; err = video_register_device(&vpbe_display_layer->video_dev,
Signature · 1 line
2.14.3
PATCH 17/21 media: ispstat: use %p to print the address of a buffer
In reply to Mauro Carvalho ChehabInstead of converting to int, use %p. That prevents this
warning:
drivers/media/platform/omap3isp/ispstat.c:451 isp_stat_bufs_alloc() warn: argument 7 to %08lx specifier is cast from pointer
--- drivers/media/platform/omap3isp/ispstat.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/media/platform/omap3isp/ispstat.c +2 -2
@@ -449,10 +449,10 @@ static int isp_stat_bufs_alloc(struct ispstat *stat, u32 size) buf->empty =1 ;dev_dbg (stat->isp->dev, -"%s: buffer[%u] allocated. dma=0x%08lx virt=0x%08lx" , +"%s: buffer[%u] allocated. dma=0x%08lx virt=%p" , stat->subdev.name, i, (unsigned long )buf->dma_addr, - (unsigned long )buf->virt_addr); + buf->virt_addr); }return 0 ;
Signature · 1 line
2.14.3
Re: [PATCH 17/21] media: ispstat: use %p to print the address of a buffer
Hi Mauro,
Thank you for the patch.
Quoted 16 lines · On Friday, 6 April 2018 17:23:18 EEST Mauro Carvalho Chehab wrote:
Instead of converting to int, use %p. That prevents this
warning:
drivers/media/platform/omap3isp/ispstat.c:451isp_stat_bufs_alloc()warn:
argument 7 to %08lx specifier is cast from pointerSigned-off-by Mauro Carvalho Chehab <[email protected]>--- drivers/media/platform/omap3isp/ispstat.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)(quoted diff) +0
-0
b/drivers/media/platform/omap3isp/ispstat.cindex47cbc7e3d825..eb1b589b0aeb100644
drivers/media/platform/omap3isp/ispstat.c static int isp_stat_bufs_alloc(struct ispstat *stat, · line 455
Quoted 9 lines
drivers/media/platform/omap3isp/ispstat.c +2
-2@@ -449,10 +449,10 @@ static int isp_stat_bufs_alloc(struct ispstat *stat, u32 size) buf->empty = 1;dev_dbg (stat->isp->dev, -"%s: buffer[%u] allocated. dma=0x%08lx virt=0x%08lx" , +"%s: buffer[%u] allocated. dma=0x%08lx virt=%p" , stat->subdev.name, i, (unsigned long )buf->dma_addr, - (unsigned long )buf->virt_addr); + buf->virt_addr);
While at it you can use %pad for buf->dma_addr.
dev_dbg(stat->isp->dev, "%s: buffer[%u] allocated. dma=%pad virt=%p", stat->subdev.name, i, &buf->dma_addr, buf->virt_addr);
With that change,
Quoted 3 lines
drivers/media/platform/omap3isp/ispstat.c +0
-0}return 0 ;
Signature · 3 lines
Regards, Laurent Pinchart
Mauro Carvalho Chehab
Reviewed-by Laurent PinchartRe: [PATCH 17/21] media: ispstat: use %p to print the address of a buffer
Em Fri, 06 Apr 2018 18:46:05 +0300
Laurent Pinchart <[email protected]> escreveu:
Quoted 33 lines
Hi Mauro,
Thank you for the patch.
Quoted 16 lines · On Friday, 6 April 2018 17:23:18 EEST Mauro Carvalho Chehab wrote:
Instead of converting to int, use %p. That prevents this
warning:
drivers/media/platform/omap3isp/ispstat.c:451isp_stat_bufs_alloc()warn:
argument 7 to %08lx specifier is cast from pointerSigned-off-by Mauro Carvalho Chehab <[email protected]>--- drivers/media/platform/omap3isp/ispstat.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)(quoted diff) +0
-0
b/drivers/media/platform/omap3isp/ispstat.cindex47cbc7e3d825..eb1b589b0aeb100644drivers/media/platform/omap3isp/ispstat.c static int isp_stat_bufs_alloc(struct ispstat *stat, · line 455
Quoted 9 lines
drivers/media/platform/omap3isp/ispstat.c +2
-2@@ -449,10 +449,10 @@ static int isp_stat_bufs_alloc(struct ispstat *stat, u32 size) buf->empty = 1;dev_dbg (stat->isp->dev, -"%s: buffer[%u] allocated. dma=0x%08lx virt=0x%08lx" , +"%s: buffer[%u] allocated. dma=0x%08lx virt=%p" , stat->subdev.name, i, (unsigned long )buf->dma_addr, - (unsigned long )buf->virt_addr); + buf->virt_addr);While at it you can use %pad for
buf->dma_addr.
Quoted 12 lines
dev_dbg(stat->isp->dev, "%s: buffer[%u] allocated. dma=%pad virt=%p", stat->subdev.name, i, &buf->dma_addr, buf->virt_addr);With that change,
Reviewed-by Laurent Pinchart <[email protected]>Quoted 3 lines
drivers/media/platform/omap3isp/ispstat.c +0
-0}return 0 ;
OK. New patch enclosed.
Thanks,
Mauro
[PATCH] media: ispstat: use %p to print the address of a buffer
Instead of converting to int, use %p. That prevents this
warning:
drivers/media/platform/omap3isp/ispstat.c:451 isp_stat_bufs_alloc() warn: argument 7 to %08lx specifier is cast from pointer
drivers/media/platform/omap3isp/ispstat.c +2 -4
@@ -449,10 +449,8 @@ static int isp_stat_bufs_alloc(struct ispstat *stat, u32 size) buf->empty =1 ;dev_dbg (stat->isp->dev, -"%s: buffer[%u] allocated. dma=0x%08lx virt=0x%08lx" , - stat->subdev.name, i, - (unsigned long )buf->dma_addr, - (unsigned long )buf->virt_addr); +"%s: buffer[%u] allocated. dma=%pad virt=%p" , + stat->subdev.name, i, &buf->dma_addr, buf->virt_addr); }return 0 ;
PATCH 18/21 media: isppreview: fix __user annotations
In reply to Mauro Carvalho ChehabThat prevent those warnings:
drivers/media/platform/omap3isp/isppreview.c:893:45: warning: incorrect type in initializer (different address spaces)
drivers/media/platform/omap3isp/isppreview.c:893:45: expected void [noderef] <asn:1>*from
drivers/media/platform/omap3isp/isppreview.c:893:45: got void *[noderef] <asn:1><noident>
drivers/media/platform/omap3isp/isppreview.c:893:47: warning: dereference of noderef expression
--- drivers/media/platform/omap3isp/isppreview.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/media/platform/omap3isp/isppreview.c +1 -1
@@ -890,7 +890,7 @@ static int preview_config(struct isp_prev_device *prev, params = &prev->params.params[!!(active & bit)];if (cfg->flag & bit) { -void __user *from = *(void *__user *) +void __user *from = *(void __user **) ((void *)cfg + attr->config_offset);void *to = (void *)params + attr->param_offset;size_t size = attr->param_size;
Signature · 1 line
2.14.3
Re: [PATCH 18/21] media: isppreview: fix __user annotations
Hi Mauro,
Thank you for the patch.
Quoted 8 lines · On Friday, 6 April 2018 17:23:19 EEST Mauro Carvalho Chehab wrote:
That prevent those warnings:
drivers/media/platform/omap3isp/isppreview.c:893:45: warning: incorrect
type in initializer (different address spaces)drivers/media/platform/omap3isp/isppreview.c:893:45: expected void
[noderef] <asn:1>*fromdrivers/media/platform/omap3isp/isppreview.c:893:45:
got void *[noderef] <asn:1><noident>drivers/media/platform/omap3isp/isppreview.c:893:47: warning: dereference of noderef expression
That's nice, but it would be even nicer to explain what the problem is and how you fix it, otherwise one might be left wondering if the fix is correct, or if it could be a false positive.
With the commit message updated,
Quoted 19 lines
Signed-off-by Mauro Carvalho Chehab <[email protected]>--- drivers/media/platform/omap3isp/isppreview.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)(quoted diff) +0
-0
b/drivers/media/platform/omap3isp/isppreview.cindexac30a0f83780..c2ef5870b231100644drivers/media/platform/omap3isp/isppreview.c +1
-1@@ -890,7 +890,7 @@ static int preview_config(struct isp_prev_device *prev, params = &prev->params.params[!!(active & bit)];if (cfg->flag & bit) { -void __user *from = *(void *__user *) +void __user *from = *(void __user **) ((void *)cfg + attr->config_offset);void *to = (void *)params + attr->param_offset;size_t size = attr->param_size;
Signature · 3 lines
Regards, Laurent Pinchart
Mauro Carvalho Chehab
Reviewed-by Laurent PinchartRe: [PATCH 18/21] media: isppreview: fix __user annotations
Em Fri, 06 Apr 2018 18:54:50 +0300
Laurent Pinchart <[email protected]> escreveu:
Quoted 14 lines
Hi Mauro,
Thank you for the patch.
Quoted 8 lines · On Friday, 6 April 2018 17:23:19 EEST Mauro Carvalho Chehab wrote:
That prevent those warnings:
drivers/media/platform/omap3isp/isppreview.c:893:45: warning: incorrect
type in initializer (different address spaces)drivers/media/platform/omap3isp/isppreview.c:893:45: expected void
[noderef] <asn:1>*fromdrivers/media/platform/omap3isp/isppreview.c:893:45:
got void *[noderef] <asn:1><noident>drivers/media/platform/omap3isp/isppreview.c:893:47: warning: dereference of noderef expression
Quoted 3 lines
That's nice, but it would be even nicer to explain what the problem is and how you fix it, otherwise one might be left wondering if the fix is correct, or if it could be a false positive.
Ok. Please see the enclosed patch.
Quoted 3 lines
With the commit message updated,
Reviewed-by Laurent Pinchart <[email protected]>
Thanks,
Mauro
[PATCH] media: isppreview: fix __user annotations
The 'from' variable at preview_config() expects an __user * type.
However, the logic there does:
from = *(void * __user *) ((void *)cfg + attr->config_offset);
With actually means a void pointer, pointing to a void __ user pointer. When the first pointer is de-referenced with *(foo), the type it returns is "void *" instead of "void __user *".
Change it to:
from = *(void __user **) ((void *)cfg + attr->config_offset);
in order to obtain, when de-referenced, a void __user pointer, as desired.
That prevent those warnings:
drivers/media/platform/omap3isp/isppreview.c:893:45: warning: incorrect type in initializer (different address spaces)
drivers/media/platform/omap3isp/isppreview.c:893:45: expected void [noderef] <asn:1>*from
drivers/media/platform/omap3isp/isppreview.c:893:45: got void *[noderef] <asn:1><noident>
drivers/media/platform/omap3isp/isppreview.c:893:47: warning: dereference of noderef expression
drivers/media/platform/omap3isp/isppreview.c +1 -1
@@ -890,7 +890,7 @@ static int preview_config(struct isp_prev_device *prev, params = &prev->params.params[!!(active & bit)];if (cfg->flag & bit) { -void __user *from = *(void *__user *) +void __user *from = *(void __user **) ((void *)cfg + attr->config_offset);void *to = (void *)params + attr->param_offset;size_t size = attr->param_size;
PATCH 19/21 media: fsl-viu: use %p to print pointers
In reply to Mauro Carvalho ChehabSolve those warnings:
drivers/media/platform/fsl-viu.c:299 restart_video_queue() warn: argument 3 to %08lx specifier is cast from pointer drivers/media/platform/fsl-viu.c:506 buffer_queue() warn: argument 2 to %08lx specifier is cast from pointer drivers/media/platform/fsl-viu.c:518 buffer_queue() warn: argument 2 to %08lx specifier is cast from pointer drivers/media/platform/fsl-viu.c:528 buffer_queue() warn: argument 2 to %08lx specifier is cast from pointer drivers/media/platform/fsl-viu.c:1219 viu_open() warn: argument 2 to %08lx specifier is cast from pointer drivers/media/platform/fsl-viu.c:1219 viu_open() warn: argument 3 to %08lx specifier is cast from pointer drivers/media/platform/fsl-viu.c:1219 viu_open() warn: argument 4 to %08lx specifier is cast from pointer drivers/media/platform/fsl-viu.c:1329 viu_mmap() warn: argument 2 to %08lx specifier is cast from pointer drivers/media/platform/fsl-viu.c:1334 viu_mmap() warn: argument 2 to %08lx specifier is cast from pointer
--- drivers/media/platform/fsl-viu.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-)
drivers/media/platform/fsl-viu.c +6 -11
@@ -296,7 +296,7 @@ static int restart_video_queue(struct viu_dmaqueue *vidq) {struct viu_buf *buf, *prev; -dprintk (1 ,"%s vidq=0x%08lx\n" , __func__, (unsigned long )vidq); +dprintk (1 ,"%s vidq=%p\n" , __func__, vidq);if (!list_empty (&vidq->active)) { buf = list_entry(vidq->active.next, struct viu_buf, vb.queue); dprintk(2, "restart_queue [%p/%d]: restart dma\n",
@@ -503,8 +503,7 @@ static void buffer_queue(struct videobuf_queue *vq, struct videobuf_buffer *vb)struct viu_buf *prev;if (!list_empty (&vidq->queued)) { -dprintk (1 ,"adding vb queue=0x%08lx\n" , - (unsigned long )&buf->vb.queue); +dprintk (1 ,"adding vb queue=%p\n" , &buf->vb.queue);dprintk (1 ,"vidq pointer 0x%p, queued 0x%p\n" , vidq, &vidq->queued); dprintk(1, "dev %p, queued: self %p, next %p, head %p\n",
@@ -515,8 +514,7 @@ static void buffer_queue(struct videobuf_queue *vq, struct videobuf_buffer *vb)dprintk (2 ,"[%p/%d] buffer_queue - append to queued\n" , buf, buf->vb.i); }else if (list_empty (&vidq->active)) { -dprintk (1 ,"adding vb active=0x%08lx\n" , - (unsigned long )&buf->vb.queue); +dprintk (1 ,"adding vb active=%p\n" , &buf->vb.queue);list_add_tail (&buf->vb.queue, &vidq->active); buf->vb.state =VIDEOBUF_ACTIVE ;mod_timer (&vidq->timeout, jiffies+BUFFER_TIMEOUT );
@@ -525,8 +523,7 @@ static void buffer_queue(struct videobuf_queue *vq, struct videobuf_buffer *vb)buffer_activate (dev, buf); }else { -dprintk (1 ,"adding vb queue2=0x%08lx\n" , - (unsigned long )&buf->vb.queue); +dprintk (1 ,"adding vb queue2=%p\n" , &buf->vb.queue); prev = list_entry(vidq->active.prev, struct viu_buf, vb.queue); if (prev->vb.width == buf->vb.width && prev->vb.height == buf->vb.height &&
@@ -1216,9 +1213,7 @@ static int viu_open(struct file *file) dev->crop_current.width = fh->width; dev->crop_current.height = fh->height; -dprintk (1 ,"Open: fh=0x%08lx, dev=0x%08lx, dev->vidq=0x%08lx\n" , - (unsigned long )fh, (unsigned long )dev, - (unsigned long )&dev->vidq); +dprintk (1 ,"Open: fh=%p, dev=%p, dev->vidq=%p\n" , fh, dev, &dev->vidq);dprintk (1 ,"Open: list_empty queued=%d\n" ,list_empty (&dev->vidq.queued)); dprintk(1, "Open: list_empty active=%d\n",
@@ -1331,7 +1326,7 @@ static int viu_mmap(struct file *file, struct vm_area_struct *vma)struct viu_dev *dev = fh->dev;int ret; -dprintk (1 ,"mmap called, vma=0x%08lx\n" , (unsigned long )vma); +dprintk (1 ,"mmap called, vma=%p\n" , vma);if (mutex_lock_interruptible (&dev->lock))return -ERESTARTSYS ;
Signature · 1 line
2.14.3
PATCH 20/21 media: fsl-viu: fix __iomem annotations
In reply to Mauro Carvalho ChehabThose annotations are wrong, causing this warning:
drivers/media/platform/fsl-viu.c:1440:21: warning: incorrect type in assignment (different address spaces)
drivers/media/platform/fsl-viu.c:1440:21: expected struct viu_reg *vr
drivers/media/platform/fsl-viu.c:1440:21: got struct viu_reg [noderef] <asn:2>*[assigned] viu_regs
--- drivers/media/platform/fsl-viu.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-)
drivers/media/platform/fsl-viu.c +11 -15
@@ -134,7 +134,7 @@ struct viu_dev {int dma_done;/* Hardware register area */ -struct viu_reg *vr; +struct viu_reg __iomem *vr;/* Interrupt vector */ int irq;
@@ -250,7 +250,7 @@ static struct viu_fmt *format_by_fourcc(int fourcc)static void viu_start_dma (struct viu_dev *dev) { -struct viu_reg *vr = dev->vr; +struct viu_reg __iomem *vr = dev->vr; dev->field =0 ;
@@ -261,7 +261,7 @@ static void viu_start_dma(struct viu_dev *dev)static void viu_stop_dma (struct viu_dev *dev) { -struct viu_reg *vr = dev->vr; +struct viu_reg __iomem *vr = dev->vr;int cnt =100 ;u32 status_cfg;
@@ -401,7 +401,7 @@ static void free_buffer(struct videobuf_queue *vq, struct viu_buf *buf)inline int buffer_activate (struct viu_dev *dev,struct viu_buf *buf) { -struct viu_reg *vr = dev->vr; +struct viu_reg __iomem *vr = dev->vr;int bpp;/* setup the DMA base address */
@@ -706,10 +706,8 @@ static int verify_preview(struct viu_dev *dev, struct v4l2_window *win)return 0 ; } -inline void viu_activate_overlay (struct viu_reg *viu_reg) +inline void viu_activate_overlay (struct viu_reg __iomem *vr) { -struct viu_reg *vr = viu_reg; -out_be32 (&vr->field_base_addr, reg_val.field_base_addr);out_be32 (&vr->dma_inc, reg_val.dma_inc);out_be32 (&vr->picture_count, reg_val.picture_count);
@@ -988,10 +986,8 @@ inline void viu_activate_next_buf(struct viu_dev *dev, } } -inline void viu_default_settings (struct viu_reg *viu_reg) +inline void viu_default_settings (struct viu_reg __iomem *vr) { -struct viu_reg *vr = viu_reg; -out_be32 (&vr->luminance,0x9512A254 );out_be32 (&vr->chroma_r,0x03310000 );out_be32 (&vr->chroma_g,0x06600F38 );
@@ -1004,7 +1000,7 @@ inline void viu_default_settings(struct viu_reg *viu_reg)static void viu_overlay_intr (struct viu_dev *dev,u32 status) { -struct viu_reg *vr = dev->vr; +struct viu_reg __iomem *vr = dev->vr;if (status &INT_DMA_END_STATUS ) dev->dma_done =1 ;
@@ -1035,7 +1031,7 @@ static void viu_overlay_intr(struct viu_dev *dev, u32 status)static void viu_capture_intr (struct viu_dev *dev,u32 status) {struct viu_dmaqueue *vidq = &dev->vidq; -struct viu_reg *vr = dev->vr; +struct viu_reg __iomem *vr = dev->vr;struct viu_buf *buf;int field_num;int need_two;
@@ -1107,7 +1103,7 @@ static void viu_capture_intr(struct viu_dev *dev, u32 status)static irqreturn_t viu_intr (int irq,void *dev_id) {struct viu_dev *dev = (struct viu_dev *)dev_id; -struct viu_reg *vr = dev->vr; +struct viu_reg __iomem *vr = dev->vr;u32 status;u32 error;
@@ -1172,7 +1168,7 @@ static int viu_open(struct file *file)struct video_device *vdev =video_devdata (file);struct viu_dev *dev =video_get_drvdata (vdev);struct viu_fh *fh; -struct viu_reg *vr; +struct viu_reg __iomem *vr;int minor = vdev->minor;u32 status_cfg;
@@ -1306,7 +1302,7 @@ static int viu_release(struct file *file)return 0 ; } -static void viu_reset (struct viu_reg *reg) +static void viu_reset (struct viu_reg __iomem *reg) {out_be32 (®->status_cfg,0 );out_be32 (®->luminance,0x9512a254 );
Signature · 1 line
2.14.3
PATCH 21/21 media: omap_vout: fix wrong identing
In reply to Mauro Carvalho ChehabAs warned:
drivers/media/platform/omap/omap_vout.c:711 omap_vout_buffer_setup() warn: inconsistent indenting
--- drivers/media/platform/omap/omap_vout.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-)
drivers/media/platform/omap/omap_vout.c +7 -8
@@ -702,19 +702,18 @@ static int omap_vout_buffer_setup(struct videobuf_queue *q, unsigned int *count, virt_addr =omap_vout_alloc_buffer (vout->buffer_size, &phy_addr);if (!virt_addr) { -if (ovid->rotation_type ==VOUT_ROT_NONE ) { +if (ovid->rotation_type ==VOUT_ROT_NONE )break ; - }else { -if (!is_rotation_enabled (vout)) -break ; + +if (!is_rotation_enabled (vout)) +break ; +/* Free the VRFB buffers if no space for V4L2 buffers */ for (j = i; j < *count; j++) { -omap_vout_free_buffer ( - vout->smsshado_virt_addr[j], - vout->smsshado_size); +omap_vout_free_buffer (vout->smsshado_virt_addr[j], + vout->smsshado_size); vout->smsshado_virt_addr[j] =0 ; vout->smsshado_phy_addr[j] =0 ; - } } } vout->buf_virt_addr[i] = virt_addr;
Signature · 1 line
2.14.3