[PATCH] imon: constify attribute_group structures

2017-08-04 Thread Amitoj Kaur Chawla
Functions working with attribute_groups provided by 
work with const attribute_group. These attribute_group structures do not
change at runtime so mark them as const.

File size before:
 text  data bss dec hex filename
 3698116776 960   54717d5bd drivers/media/rc/imon.o

File size after:
 text  data bss dec hex filename
 3717316584 960   54717d5bd drivers/media/rc/imon.o

This change was made with the help of Coccinelle.

Signed-off-by: Amitoj Kaur Chawla <amitoj1...@gmail.com>
---
 drivers/media/rc/imon.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/rc/imon.c b/drivers/media/rc/imon.c
index bd76534..717ba78 100644
--- a/drivers/media/rc/imon.c
+++ b/drivers/media/rc/imon.c
@@ -911,7 +911,7 @@ static struct attribute *imon_display_sysfs_entries[] = {
NULL
 };
 
-static struct attribute_group imon_display_attr_group = {
+static const struct attribute_group imon_display_attr_group = {
.attrs = imon_display_sysfs_entries
 };
 
@@ -920,7 +920,7 @@ static struct attribute *imon_rf_sysfs_entries[] = {
NULL
 };
 
-static struct attribute_group imon_rf_attr_group = {
+static const struct attribute_group imon_rf_attr_group = {
.attrs = imon_rf_sysfs_entries
 };
 
-- 
2.7.4



[PATCH v2] staging: media: atomisp: Use kvfree() instead of kfree()/vfree()

2017-07-10 Thread Amitoj Kaur Chawla
Conditionally calling kfree()/vfree() can be replaced by a call to
kvfree() which handles both kmalloced memory and vmalloced memory.
The resulting wrapper function has been replaced with direct calls
to kvfree().

This change was made with the help of the following Coccinelle 
semantic patch:
//
@@
expression a;
@@
- if(...) { vfree(a); }
- else { kfree(a); }
+ kvfree(a);
// 

Signed-off-by: Amitoj Kaur Chawla <amitoj1...@gmail.com>
---
Changes in v2:
-Remove wrapper function

 .../staging/media/atomisp/pci/atomisp2/atomisp_cmd.c  | 19 +++
 .../staging/media/atomisp/pci/atomisp2/atomisp_cmd.h  |  1 -
 .../media/atomisp/pci/atomisp2/atomisp_compat_css20.c |  4 ++--
 .../media/atomisp/pci/atomisp2/atomisp_internal.h |  2 --
 4 files changed, 5 insertions(+), 21 deletions(-)

diff --git a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c 
b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c
index 97093ba..7bf5dcd 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c
+++ b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c
@@ -112,19 +112,6 @@ void *atomisp_kernel_zalloc(size_t bytes, bool zero_mem)
 }
 
 /*
- * Free buffer allocated with atomisp_kernel_malloc()/atomisp_kernel_zalloc
- * helper
- */
-void atomisp_kernel_free(void *ptr)
-{
-   /* Verify if buffer was allocated by vmalloc() or kmalloc() */
-   if (is_vmalloc_addr(ptr))
-   vfree(ptr);
-   else
-   kfree(ptr);
-}
-
-/*
  * get sensor:dis71430/ov2720 related info from v4l2_subdev->priv data field.
  * subdev->priv is set in mrst.c
  */
@@ -785,7 +772,7 @@ void atomisp_flush_params_queue(struct atomisp_video_pipe 
*pipe)
   struct atomisp_css_params_with_list, list);
list_del(>list);
atomisp_free_css_parameters(>params);
-   atomisp_kernel_free(param);
+   kvfree(param);
}
 }
 
@@ -1132,7 +1119,7 @@ void atomisp_buf_done(struct atomisp_sub_device *asd, int 
error,
asd->params.dvs_6axis = NULL;
atomisp_free_css_parameters(
>frame_params[vb->i]->params);
-   atomisp_kernel_free(pipe->frame_params[vb->i]);
+   kvfree(pipe->frame_params[vb->i]);
pipe->frame_params[vb->i] = NULL;
}
 
@@ -4375,7 +4362,7 @@ int atomisp_set_parameters(struct video_device *vdev,
if (css_param)
atomisp_free_css_parameters(css_param);
if (param)
-   atomisp_kernel_free(param);
+   kvfree(param);
 
return ret;
 }
diff --git a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.h 
b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.h
index 8e6d9df..1ccd911 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.h
+++ b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.h
@@ -80,7 +80,6 @@ static inline void __iomem *atomisp_get_io_virt_addr(unsigned 
int address)
 */
 void *atomisp_kernel_malloc(size_t bytes);
 void *atomisp_kernel_zalloc(size_t bytes, bool zero_mem);
-void atomisp_kernel_free(void *ptr);
 
 /*
  * Interrupt functions
diff --git a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_css20.c 
b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_css20.c
index b830b24..2b6d7bb 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_css20.c
+++ b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_css20.c
@@ -1676,7 +1676,7 @@ int atomisp_alloc_metadata_output_buf(struct 
atomisp_sub_device *asd)
stream_info.metadata_info.size);
if (!asd->params.metadata_user[i]) {
while (--i >= 0) {
-   
atomisp_kernel_free(asd->params.metadata_user[i]);
+   kvfree(asd->params.metadata_user[i]);
asd->params.metadata_user[i] = NULL;
}
return -ENOMEM;
@@ -1692,7 +1692,7 @@ void atomisp_free_metadata_output_buf(struct 
atomisp_sub_device *asd)
 
for (i = 0; i < ATOMISP_METADATA_TYPE_NUM; i++) {
if (asd->params.metadata_user[i]) {
-   atomisp_kernel_free(asd->params.metadata_user[i]);
+   kvfree(asd->params.metadata_user[i]);
asd->params.metadata_user[i] = NULL;
}
}
diff --git a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_internal.h 
b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_internal.h
index d366713..afced4f 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_internal.h
+++ b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_internal.h
@@ -312,8 +312,6 @@ extern struct device *at

Re: [PATCH 2/2] staging: media: atomisp2: Replace kfree()/vfree() with kvfree()

2017-07-08 Thread Amitoj Kaur Chawla
On Sat, Jul 8, 2017 at 4:58 AM, Bernd Petrovitsch
<be...@petrovitsch.priv.at> wrote:
> On Fri, 2017-07-07 at 20:41 -0400, Amitoj Kaur Chawla wrote:
> [...]
>> --- a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c
>> +++ b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c
>> @@ -117,11 +117,7 @@ void *atomisp_kernel_zalloc(size_t bytes, bool
>> zero_mem)
>>   */
>>  void atomisp_kernel_free(void *ptr)
>>  {
>> - /* Verify if buffer was allocated by vmalloc() or kmalloc()
>> */
>> - if (is_vmalloc_addr(ptr))
>> - vfree(ptr);
>> - else
>> - kfree(ptr);
>> + kvfree(ptr);
>>  }
>>
>>  /*
>
> Why not get rid of the trivial wrapper function completely?
>

Oh yes, i'll send a v2.

Amitoj


[PATCH 2/2] staging: media: atomisp2: Replace kfree()/vfree() with kvfree()

2017-07-07 Thread Amitoj Kaur Chawla
Conditionally calling kfree()/vfree() can be replaced by a call to 
kvfree() which handles both kmalloced memory and vmalloced memory. 
Consequently removed an unnecessary comment.

The Coccinelle semantic patch used to make the change is as follows:
//
@@
expression a;
@@
- if(...) { vfree(a); } 
- else { kfree(a); }
+ kvfree(a);
@@
expression a;
@@
- if(...) { kfree(a); } 
- else { vfree(a); }
+ kvfree(a);
// 

Signed-off-by: Amitoj Kaur Chawla <amitoj1...@gmail.com>
---
 drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c | 6 +-
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c 
b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c
index 97093ba..a156dd424 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c
+++ b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c
@@ -117,11 +117,7 @@ void *atomisp_kernel_zalloc(size_t bytes, bool zero_mem)
  */
 void atomisp_kernel_free(void *ptr)
 {
-   /* Verify if buffer was allocated by vmalloc() or kmalloc() */
-   if (is_vmalloc_addr(ptr))
-   vfree(ptr);
-   else
-   kfree(ptr);
+   kvfree(ptr);
 }
 
 /*
-- 
2.7.4



[PATCH 1/2] staging: media: atomisp2: css2400: Replace kfree()/vfree() with kvfree()

2017-07-07 Thread Amitoj Kaur Chawla
Conditionally calling kfree()/vfree() can be replaced by a call to 
kvfree() which handles both kmalloced memory and vmalloced memory.

The Coccinelle semantic patch used to make the change is as follows:
//
@@
expression a;
@@
- if(...) { vfree(a); }
- else { kfree(a); }
+ kvfree(a);
@@
expression a;
@@
- if(...) { kfree(a); }
- else { vfree(a); }
+ kvfree(a);
// 

Signed-off-by: Amitoj Kaur Chawla <amitoj1...@gmail.com>
---
 drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css.c | 5 +
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css.c 
b/drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css.c
index 73c7658..1b0708f 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css.c
+++ b/drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css.c
@@ -2029,10 +2029,7 @@ void *sh_css_calloc(size_t N, size_t size)
 
 void sh_css_free(void *ptr)
 {
-   if (is_vmalloc_addr(ptr))
-   vfree(ptr);
-   else
-   kfree(ptr);
+   kvfree(ptr);
 }
 
 /* For Acceleration API: Flush FW (shared buffer pointer) arguments */
-- 
2.7.4



[PATCH] staging: media: atomisp: Remove unnecessary return statement in void function

2017-06-29 Thread Amitoj Kaur Chawla
Return statement at the end of a void function is useless.

The Coccinelle semantic patch used to make this change is as follows:
//
@@
identifier f;
expression e;
@@
void f(...) {
<...
- return
  e;
  ...>
  }
//

Signed-off-by: Amitoj Kaur Chawla <amitoj1...@gmail.com>
---
 drivers/staging/media/atomisp/pci/atomisp2/hmm/hmm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/media/atomisp/pci/atomisp2/hmm/hmm.c 
b/drivers/staging/media/atomisp/pci/atomisp2/hmm/hmm.c
index 5729539..22c0342 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/hmm/hmm.c
+++ b/drivers/staging/media/atomisp/pci/atomisp2/hmm/hmm.c
@@ -636,7 +636,7 @@ void hmm_vunmap(ia_css_ptr virt)
return;
}
 
-   return hmm_bo_vunmap(bo);
+   hmm_bo_vunmap(bo);
 }
 
 int hmm_pool_register(unsigned int pool_size,
-- 
2.7.4



[PATCH] i2c: Modify error handling

2016-07-30 Thread Amitoj Kaur Chawla
devm_gpiod_get returns an ERR_PTR on error so a null check is
incorrect and an IS_ERR check is required.

The Coccinelle semantic patch used to make this change is as follows:
@@
expression e;
statement S;
@@

  e = devm_gpiod_get(...);
 if(
-   !e
+   IS_ERR(e)
   )
  {
   ...
-  return ...;
+  return PTR_ERR(e);
  }

Signed-off-by: Amitoj Kaur Chawla <amitoj1...@gmail.com>
---
 drivers/media/i2c/adp1653.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/i2c/adp1653.c b/drivers/media/i2c/adp1653.c
index 7e9cbf7..54b355e 100644
--- a/drivers/media/i2c/adp1653.c
+++ b/drivers/media/i2c/adp1653.c
@@ -466,9 +466,9 @@ static int adp1653_of_init(struct i2c_client *client,
of_node_put(child);
 
pd->enable_gpio = devm_gpiod_get(>dev, "enable", GPIOD_OUT_LOW);
-   if (!pd->enable_gpio) {
+   if (IS_ERR(pd->enable_gpio)) {
dev_err(>dev, "Error getting GPIO\n");
-   return -EINVAL;
+   return PTR_ERR(pd->enable_gpio);
}
 
return 0;
-- 
1.9.1

--
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] ddbridge: Replace vmalloc with vzalloc

2016-06-19 Thread Amitoj Kaur Chawla
vzalloc combines vmalloc and memset 0.

The Coccinelle semantic patch used to make this change is as follows:
@@
type T;
T *d;
expression e;
statement S;
@@

d =
-vmalloc
+vzalloc
 (...);
if (!d) S
-   memset(d, 0, sizeof(T));

Signed-off-by: Amitoj Kaur Chawla <amitoj1...@gmail.com>
---
 drivers/media/pci/ddbridge/ddbridge-core.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/media/pci/ddbridge/ddbridge-core.c 
b/drivers/media/pci/ddbridge/ddbridge-core.c
index 6e995ef..47def73 100644
--- a/drivers/media/pci/ddbridge/ddbridge-core.c
+++ b/drivers/media/pci/ddbridge/ddbridge-core.c
@@ -1569,10 +1569,9 @@ static int ddb_probe(struct pci_dev *pdev, const struct 
pci_device_id *id)
if (pci_enable_device(pdev) < 0)
return -ENODEV;
 
-   dev = vmalloc(sizeof(struct ddb));
+   dev = vzalloc(sizeof(struct ddb));
if (dev == NULL)
return -ENOMEM;
-   memset(dev, 0, sizeof(struct ddb));
 
dev->pdev = pdev;
pci_set_drvdata(pdev, dev);
-- 
1.9.1

--
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] saa7164: Replace if and BUG with BUG_ON

2016-05-28 Thread Amitoj Kaur Chawla
Replace if condition and BUG() with a BUG_ON having the conditional
expression of the if statement as argument.

The Coccinelle semantic patch used to make this change is as follows:
@@ expression E,f; @@

(
  if (<+... f(...) ...+>) { BUG(); }
|
- if (E) { BUG(); }
+ BUG_ON(E);
)

Signed-off-by: Amitoj Kaur Chawla <amitoj1...@gmail.com>
---
 drivers/media/pci/saa7164/saa7164-encoder.c | 6 ++
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/media/pci/saa7164/saa7164-encoder.c 
b/drivers/media/pci/saa7164/saa7164-encoder.c
index 1b184c3..32a353d 100644
--- a/drivers/media/pci/saa7164/saa7164-encoder.c
+++ b/drivers/media/pci/saa7164/saa7164-encoder.c
@@ -1022,8 +1022,7 @@ int saa7164_encoder_register(struct saa7164_port *port)
 
dprintk(DBGLVL_ENC, "%s()\n", __func__);
 
-   if (port->type != SAA7164_MPEG_ENCODER)
-   BUG();
+   BUG_ON(port->type != SAA7164_MPEG_ENCODER);
 
/* Sanity check that the PCI configuration space is active */
if (port->hwcfg.BARLocation == 0) {
@@ -1151,8 +1150,7 @@ void saa7164_encoder_unregister(struct saa7164_port *port)
 
dprintk(DBGLVL_ENC, "%s(port=%d)\n", __func__, port->nr);
 
-   if (port->type != SAA7164_MPEG_ENCODER)
-   BUG();
+   BUG_ON(port->type != SAA7164_MPEG_ENCODER);
 
if (port->v4l_device) {
if (port->v4l_device->minor != -1)
-- 
1.9.1

--
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