提交 f0a12d0c 编写于 作者: L Lars-Peter Clausen 提交者: Mauro Carvalho Chehab

[media] tvp514x: Fix init seqeunce

client->driver->id_table will always point to the first entry in the device id
table. So all devices will use the same init sequence. Use the id table entry
that gets passed to the driver's probe() function to get the right init
sequence.
Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
Acked-by: NLad, Prabhakar <prabhakar.csengg@gmail.com>
Tested-by: NLad, Prabhakar <prabhakar.csengg@gmail.com>
Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
上级 12d866ec
...@@ -123,6 +123,8 @@ struct tvp514x_decoder { ...@@ -123,6 +123,8 @@ struct tvp514x_decoder {
/* mc related members */ /* mc related members */
struct media_pad pad; struct media_pad pad;
struct v4l2_mbus_framefmt format; struct v4l2_mbus_framefmt format;
struct tvp514x_reg *int_seq;
}; };
/* TVP514x default register values */ /* TVP514x default register values */
...@@ -864,7 +866,6 @@ tvp514x_s_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *a) ...@@ -864,7 +866,6 @@ tvp514x_s_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *a)
static int tvp514x_s_stream(struct v4l2_subdev *sd, int enable) static int tvp514x_s_stream(struct v4l2_subdev *sd, int enable)
{ {
int err = 0; int err = 0;
struct i2c_client *client = v4l2_get_subdevdata(sd);
struct tvp514x_decoder *decoder = to_decoder(sd); struct tvp514x_decoder *decoder = to_decoder(sd);
if (decoder->streaming == enable) if (decoder->streaming == enable)
...@@ -884,11 +885,8 @@ static int tvp514x_s_stream(struct v4l2_subdev *sd, int enable) ...@@ -884,11 +885,8 @@ static int tvp514x_s_stream(struct v4l2_subdev *sd, int enable)
} }
case 1: case 1:
{ {
struct tvp514x_reg *int_seq = (struct tvp514x_reg *)
client->driver->id_table->driver_data;
/* Power Up Sequence */ /* Power Up Sequence */
err = tvp514x_write_regs(sd, int_seq); err = tvp514x_write_regs(sd, decoder->int_seq);
if (err) { if (err) {
v4l2_err(sd, "Unable to turn on decoder\n"); v4l2_err(sd, "Unable to turn on decoder\n");
return err; return err;
...@@ -1128,6 +1126,8 @@ tvp514x_probe(struct i2c_client *client, const struct i2c_device_id *id) ...@@ -1128,6 +1126,8 @@ tvp514x_probe(struct i2c_client *client, const struct i2c_device_id *id)
memcpy(decoder->tvp514x_regs, tvp514x_reg_list_default, memcpy(decoder->tvp514x_regs, tvp514x_reg_list_default,
sizeof(tvp514x_reg_list_default)); sizeof(tvp514x_reg_list_default));
decoder->int_seq = (struct tvp514x_reg *)id->driver_data;
/* Copy board specific information here */ /* Copy board specific information here */
decoder->pdata = pdata; decoder->pdata = pdata;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册