commit: http://blackfin.uclinux.org/git/?p=linux-kernel;a=commitdiff;h=eeede3e130a7cc2676d012639fa08911bcb69252 branch: http://blackfin.uclinux.org/git/?p=linux-kernel;a=shortlog;h=refs/heads/trunk
Signed-off-by: Scott Jiang <[email protected]> --- drivers/media/video/vs6624.c | 21 +++++++++++---------- drivers/media/video/vs6624_regs.h | 2 +- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/drivers/media/video/vs6624.c b/drivers/media/video/vs6624.c index d5f1209..4089407 100644 --- a/drivers/media/video/vs6624.c +++ b/drivers/media/video/vs6624.c @@ -62,7 +62,7 @@ struct vs6624 { struct v4l2_mbus_framefmt fmt; }; -static struct vs6624_format { +static const struct vs6624_format { enum v4l2_mbus_pixelcode mbus_code; enum v4l2_colorspace colorspace; } vs6624_formats[] = { @@ -515,7 +515,7 @@ static inline int vs6624_read(struct v4l2_subdev *sd, u16 index) u8 buf[2]; buf[0] = index >> 8; - buf[1] = index & 0xFF; + buf[1] = index; i2c_master_send(client, buf, 2); i2c_master_recv(client, buf, 1); @@ -529,7 +529,7 @@ static inline int vs6624_write(struct v4l2_subdev *sd, u16 index, u8 buf[3]; buf[0] = index >> 8; - buf[1] = index & 0xFF; + buf[1] = index; buf[2] = value; return i2c_master_send(client, buf, 3); @@ -680,7 +680,7 @@ static int vs6624_g_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *parms) if (parms->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) return -EINVAL; - memset(cp, 0, sizeof(struct v4l2_captureparm)); + memset(cp, 0, sizeof(*cp)); cp->capability = V4L2_CAP_TIMEPERFRAME; cp->timeperframe.numerator = sensor->frame_rate.denominator; cp->timeperframe.denominator = sensor->frame_rate.numerator; @@ -722,6 +722,7 @@ static int vs6624_s_stream(struct v4l2_subdev *sd, int enable) vs6624_write(sd, VS6624_USER_CMD, 0x2); else vs6624_write(sd, VS6624_USER_CMD, 0x4); + udelay(100); return 0; } @@ -798,7 +799,7 @@ static const struct v4l2_subdev_ops vs6624_ops = { .video = &vs6624_video_ops, }; -static int vs6624_probe(struct i2c_client *client, +static int __devinit vs6624_probe(struct i2c_client *client, const struct i2c_device_id *id) { struct vs6624 *sensor; @@ -813,13 +814,14 @@ static int vs6624_probe(struct i2c_client *client, ret = gpio_request(VS6624_CE, "VS6624 Chip Enable"); if (ret) { - printk(KERN_ERR "failed to request GPIO %d\n", VS6624_CE); + v4l_err(client, "failed to request GPIO %d\n", VS6624_CE); return ret; } gpio_direction_output(VS6624_CE, 1); + /* wait 100ms before any further i2c writes are performed */ mdelay(100); - sensor = kzalloc(sizeof(struct vs6624), GFP_KERNEL); + sensor = kzalloc(sizeof(*sensor), GFP_KERNEL); if (sensor == NULL) { gpio_free(VS6624_CE); return -ENOMEM; @@ -862,7 +864,6 @@ static int vs6624_probe(struct i2c_client *client, sensor->fmt = vs6624_default_fmt; - v4l_info(client, "chip found @ 0x%02x (%s)\n", client->addr << 1, client->adapter->name); @@ -892,7 +893,7 @@ static int vs6624_probe(struct i2c_client *client, return 0; } -static int vs6624_remove(struct i2c_client *client) +static int __devexit vs6624_remove(struct i2c_client *client) { struct v4l2_subdev *sd = i2c_get_clientdata(client); @@ -916,7 +917,7 @@ static struct i2c_driver vs6624_driver = { .name = "vs6624", }, .probe = vs6624_probe, - .remove = vs6624_remove, + .remove = __devexit_p(vs6624_remove), .id_table = vs6624_id, }; diff --git a/drivers/media/video/vs6624_regs.h b/drivers/media/video/vs6624_regs.h index 5b88d4b..f5ffe60 100644 --- a/drivers/media/video/vs6624_regs.h +++ b/drivers/media/video/vs6624_regs.h @@ -21,7 +21,7 @@ #define _VS6624_REGS_H_ /* low level control registers */ -#define VS6624_MICRO_EN 0xC003 /* power enable for all MCU clock */ +#define VS6624_MICRO_EN 0xC003 /* power enable for all MCU clock */ #define VS6624_DIO_EN 0xC044 /* enable digital I/O */ /* device parameters */ #define VS6624_DEV_ID_MSB 0x0001 /* device id MSB */
_______________________________________________ Linux-kernel-commits mailing list [email protected] https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits
