Hi Guys,
well i have actually able to create sysfs entry and able to pass some value to desired brightness level but it is returning ov5640_write_reg fail. i have only modified ov5640_mipi.c file only.
Below is my code snippet please check.
ov5640_mipi.c
===================================================================================================
static struct kobject *ov5640_mipi_kobj;
static ssize_t ov5640_mipi_brightness_set(struct device *dev, struct device_attribute *attr, char *buf,size_t size)
{
int err;
unsigned long val;
if (strict_strtoul(buf, 10, &val))
return -EINVAL;
pr_info("GB : ov5640_mipi_brightness_set\n");
switch(val){
case 0 : ov5640_write_reg(0x5001, 0xff);
ov5640_write_reg(0x5587, 0x40);
ov5640_write_reg(0x5580, 0x04);
ov5640_write_reg(0x5588, 0x01);
break;
..................
..................
}
static struct kobj_attribute brightness = __ATTR(brightness_ctrl, 0664, NULL, ov5640_mipi_brightness_set);
static struct attribute *attributes_ov5640_mipi[] = {
&brightness.attr,
NULL,
};
static struct attribute_group attr_group_ov5640_mipi = {
.attrs = attributes_ov5640_mipi,
};
static int create_sysfs_interfaces(struct device *dev)// calling from probe function
{
int err;
ov5640_mipi_kobj = kobject_create_and_add("ov5640_mipi_sensor", &dev->kobj);
if(!ov5640_mipi_kobj)
return -ENOMEM;
err = sysfs_create_group(ov5640_mipi_kobj, &attr_group_ov5640_mipi);
if (err)
{
kobject_put(ov5640_mipi_kobj);
dev_err(dev, "%s:Unable to create interface\n", __func__);
return -1;
}
pr_info("GB : create_sysfs_interfaces\n");
return 0;
}
$ echo 0 > /sys/bus/i2c/../devices/ov5640_brightness_set/brightness_ctrl
GB : ov5640_mipi_brightness_set
ov5640_write_reg:write reg error:reg=5001,val=ff
ov5640_write_reg:write reg error:reg=5587,val=40
ov5640_write_reg:write reg error:reg=5580,val=4
ov5640_write_reg:write reg error:reg=5588,val=1
Solved! Go to Solution.
For the above question update is :
when board boot up when it comes to shell the camera will be in power down mode so until unless some application is run to start the camera in active mode you can't modify any register. in my case i have to run gstreamer after that i used my sysfs entries to modify brightness it worked.
have you try to make it as a ioctl function and then control the brightness via ioctl?
Hi jimmychan,
Well yes i have tried and set brightness value through ioctl call.
regards,
Ganesh Biradar
For the above question update is :
when board boot up when it comes to shell the camera will be in power down mode so until unless some application is run to start the camera in active mode you can't modify any register. in my case i have to run gstreamer after that i used my sysfs entries to modify brightness it worked.