Commit aa8485d6 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

media: davinci_vpfe: cleanup ipipe_[g|s]_config logic

Reduce one ident level inside those functions and use BIT()
macro.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent b2f92225
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
*/ */
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/bitops.h>
#include "dm365_ipipe.h" #include "dm365_ipipe.h"
#include "dm365_ipipe_hw.h" #include "dm365_ipipe_hw.h"
...@@ -1255,37 +1256,38 @@ static int ipipe_s_config(struct v4l2_subdev *sd, struct vpfe_ipipe_config *cfg) ...@@ -1255,37 +1256,38 @@ static int ipipe_s_config(struct v4l2_subdev *sd, struct vpfe_ipipe_config *cfg)
int rval = 0; int rval = 0;
for (i = 0; i < ARRAY_SIZE(ipipe_modules); i++) { 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;
if (cfg->flag & bit) { void __user *from;
const struct ipipe_module_if *module_if = size_t size;
&ipipe_modules[i]; void *to;
struct ipipe_module_params *params;
void __user *from = *(void * __user *) if (!(cfg->flag & BIT(i)))
((void *)cfg + module_if->config_offset); continue;
size_t size;
void *to; module_if = &ipipe_modules[i];
from = *(void * __user *)
params = kmalloc(sizeof(struct ipipe_module_params), ((void *)cfg + module_if->config_offset);
GFP_KERNEL);
to = (void *)params + module_if->param_offset; params = kmalloc(sizeof(struct ipipe_module_params),
size = module_if->param_size; GFP_KERNEL);
to = (void *)params + module_if->param_offset;
if (to && from && size) { size = module_if->param_size;
if (copy_from_user(to, from, size)) {
rval = -EFAULT; if (to && from && size) {
break; if (copy_from_user(to, from, size)) {
} rval = -EFAULT;
rval = module_if->set(ipipe, to); break;
if (rval)
goto error;
} else if (to && !from && size) {
rval = module_if->set(ipipe, NULL);
if (rval)
goto error;
} }
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: error:
return rval; return rval;
...@@ -1298,33 +1300,33 @@ static int ipipe_g_config(struct v4l2_subdev *sd, struct vpfe_ipipe_config *cfg) ...@@ -1298,33 +1300,33 @@ static int ipipe_g_config(struct v4l2_subdev *sd, struct vpfe_ipipe_config *cfg)
int rval = 0; int rval = 0;
for (i = 1; i < ARRAY_SIZE(ipipe_modules); i++) { 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;
if (cfg->flag & bit) { void __user *to;
const struct ipipe_module_if *module_if = size_t size;
&ipipe_modules[i]; void *from;
struct ipipe_module_params *params;
void __user *to = *(void * __user *) if (!(cfg->flag & BIT(i)))
((void *)cfg + module_if->config_offset); continue;
size_t size;
void *from; module_if = &ipipe_modules[i];
to = *(void * __user *)((void *)cfg + module_if->config_offset);
params = kmalloc(sizeof(struct ipipe_module_params),
GFP_KERNEL); params = kmalloc(sizeof(struct ipipe_module_params),
from = (void *)params + module_if->param_offset; GFP_KERNEL);
size = module_if->param_size; from = (void *)params + module_if->param_offset;
size = module_if->param_size;
if (to && from && size) {
rval = module_if->get(ipipe, from); if (to && from && size) {
if (rval) rval = module_if->get(ipipe, from);
goto error; if (rval)
if (copy_to_user(to, from, size)) { goto error;
rval = -EFAULT; if (copy_to_user(to, from, size)) {
break; rval = -EFAULT;
} break;
} }
kfree(params);
} }
kfree(params);
} }
error: error:
return rval; return rval;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment