19 #include <linux/module.h>
21 #include <linux/errno.h>
22 #include <linux/kernel.h>
24 #include <linux/i2c.h>
25 #include <linux/slab.h>
30 #define DRIVER_NAME "tef6862"
32 #define FREQ_MUL 16000
34 #define TEF6862_LO_FREQ (875 * FREQ_MUL / 10)
35 #define TEF6862_HI_FREQ (108 * FREQ_MUL)
38 #define WM_SUB_BANDWIDTH 0x0
39 #define WM_SUB_PLLM 0x1
40 #define WM_SUB_PLLL 0x2
41 #define WM_SUB_DAA 0x3
42 #define WM_SUB_AGC 0x4
43 #define WM_SUB_BAND 0x5
44 #define WM_SUB_CONTROL 0x6
45 #define WM_SUB_LEVEL 0x7
46 #define WM_SUB_IFCF 0x8
47 #define WM_SUB_IFCAP 0x9
48 #define WM_SUB_ACD 0xA
49 #define WM_SUB_TEST 0xF
52 #define MODE_BUFFER 0x0
53 #define MODE_PRESET 0x1
54 #define MODE_SEARCH 0x2
55 #define MODE_AF_UPDATE 0x3
57 #define MODE_CHECK 0x5
76 if (err ==
sizeof(buf))
94 v->
signal = tef6862_sigstr(v4l2_get_subdevdata(sd));
107 struct i2c_client *client = v4l2_get_subdevdata(sd);
117 i2cmsg[1] = (pll >> 8) & 0xff;
118 i2cmsg[2] = pll & 0xff;
121 if (err !=
sizeof(i2cmsg))
122 return err < 0 ? err : -
EIO;
139 static int tef6862_g_chip_ident(
struct v4l2_subdev *sd,
142 struct i2c_client *client = v4l2_get_subdevdata(sd);
148 .g_tuner = tef6862_g_tuner,
149 .s_tuner = tef6862_s_tuner,
150 .s_frequency = tef6862_s_frequency,
151 .g_frequency = tef6862_g_frequency,
155 .g_chip_ident = tef6862_g_chip_ident,
159 .core = &tef6862_core_ops,
160 .tuner = &tef6862_tuner_ops,
178 v4l_info(client,
"chip found @ 0x%02x (%s)\n",
194 struct v4l2_subdev *sd = i2c_get_clientdata(client);
213 .probe = tef6862_probe,
215 .id_table = tef6862_id,