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 @@
*/
#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;
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;
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;
}
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;
const struct ipipe_module_if *module_if;
struct ipipe_module_params *params;
void __user *from;
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);
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;
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;
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;
}
const struct ipipe_module_if *module_if;
struct ipipe_module_params *params;
void __user *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);
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;
......
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