31 #include <linux/module.h>
32 #include <linux/types.h>
33 #include <linux/slab.h>
35 #include <asm/uaccess.h>
36 #include <linux/i2c.h>
37 #include <linux/videodev2.h>
52 #define BT856_REG_OFFSET 0xDA
53 #define BT856_NR_REG 6
79 return bt856_write(encoder, reg,
81 (value ? (1 << bit) : 0));
84 static void bt856_dump(
struct bt856 *encoder)
98 struct bt856 *encoder = to_bt856(sd);
102 bt856_write(encoder, 0xdc, 0x18);
103 bt856_write(encoder, 0xda, 0);
104 bt856_write(encoder, 0xde, 0);
106 bt856_setbit(encoder, 0xdc, 3, 1);
108 bt856_setbit(encoder, 0xdc, 4, 1);
111 bt856_setbit(encoder, 0xdc, 2, 0);
113 bt856_setbit(encoder, 0xdc, 2, 1);
115 bt856_setbit(encoder, 0xdc, 1, 1);
116 bt856_setbit(encoder, 0xde, 4, 0);
117 bt856_setbit(encoder, 0xde, 3, 1);
125 struct bt856 *encoder = to_bt856(sd);
127 v4l2_dbg(1,
debug, sd,
"set norm %llx\n", (
unsigned long long)std);
130 bt856_setbit(encoder, 0xdc, 2, 0);
132 bt856_setbit(encoder, 0xdc, 2, 1);
133 bt856_setbit(encoder, 0xda, 0, 0);
147 struct bt856 *encoder = to_bt856(sd);
156 bt856_setbit(encoder, 0xde, 4, 0);
157 bt856_setbit(encoder, 0xde, 3, 1);
158 bt856_setbit(encoder, 0xdc, 3, 1);
159 bt856_setbit(encoder, 0xdc, 6, 0);
162 bt856_setbit(encoder, 0xde, 4, 0);
163 bt856_setbit(encoder, 0xde, 3, 1);
164 bt856_setbit(encoder, 0xdc, 3, 1);
165 bt856_setbit(encoder, 0xdc, 6, 1);
168 bt856_setbit(encoder, 0xdc, 3, 0);
169 bt856_setbit(encoder, 0xde, 4, 1);
190 .g_chip_ident = bt856_g_chip_ident,
195 .s_std_output = bt856_s_std_output,
196 .s_routing = bt856_s_routing,
200 .core = &bt856_core_ops,
201 .video = &bt856_video_ops,
209 struct bt856 *encoder;
216 v4l_info(client,
"chip found @ 0x%x (%s)\n",
226 bt856_write(encoder, 0xdc, 0x18);
227 bt856_write(encoder, 0xda, 0);
228 bt856_write(encoder, 0xde, 0);
230 bt856_setbit(encoder, 0xdc, 3, 1);
232 bt856_setbit(encoder, 0xdc, 4, 1);
234 if (encoder->
norm & V4L2_STD_NTSC)
235 bt856_setbit(encoder, 0xdc, 2, 0);
237 bt856_setbit(encoder, 0xdc, 2, 1);
239 bt856_setbit(encoder, 0xdc, 1, 1);
240 bt856_setbit(encoder, 0xde, 4, 0);
241 bt856_setbit(encoder, 0xde, 3, 1);
248 static int bt856_remove(
struct i2c_client *client)
250 struct v4l2_subdev *sd = i2c_get_clientdata(client);
268 .probe = bt856_probe,
269 .remove = bt856_remove,
270 .id_table = bt856_id,