diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2010-09-24 08:58:51 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-10-22 19:55:21 -0400 |
commit | 84d0d4f0674c55d0625bd1b6eb91dba4ef3948f9 (patch) | |
tree | e5c3356158bf30269ecd7b60e837789a3b461f30 /drivers/media | |
parent | dfffec67951494a02244b43b0b2cdc9cded841b2 (diff) |
[media] ivtv: Don't use module names to load I2C modules
With the v4l2_i2c_new_subdev* functions now supporting loading modules
based on modaliases, replace the hardcoded module name passed to those
functions by NULL.
The sub-devices without a listed module name don't result in and I2C
sub-device being created, as they either are IR devices or don't have an
I2C address listed. It's thus safe to rely on modaliases only.
All corresponding I2C modules have been checked, and all of them include
a module aliases table with names corresponding to what the ivtv driver
uses.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/video/ivtv/ivtv-i2c.c | 42 |
1 files changed, 8 insertions, 34 deletions
diff --git a/drivers/media/video/ivtv/ivtv-i2c.c b/drivers/media/video/ivtv/ivtv-i2c.c index a74fa099c565..9e8039ac909e 100644 --- a/drivers/media/video/ivtv/ivtv-i2c.c +++ b/drivers/media/video/ivtv/ivtv-i2c.c | |||
@@ -121,31 +121,6 @@ static const u8 hw_addrs[] = { | |||
121 | }; | 121 | }; |
122 | 122 | ||
123 | /* This array should match the IVTV_HW_ defines */ | 123 | /* This array should match the IVTV_HW_ defines */ |
124 | static const char *hw_modules[] = { | ||
125 | "cx25840", | ||
126 | "saa7115", | ||
127 | "saa7127", | ||
128 | "msp3400", | ||
129 | "tuner", | ||
130 | "wm8775", | ||
131 | "cs53l32a", | ||
132 | NULL, | ||
133 | "saa7115", | ||
134 | "upd64031a", | ||
135 | "upd64083", | ||
136 | "saa717x", | ||
137 | "wm8739", | ||
138 | "vp27smpx", | ||
139 | "m52790", | ||
140 | NULL, | ||
141 | NULL, /* IVTV_HW_I2C_IR_RX_AVER */ | ||
142 | NULL, /* IVTV_HW_I2C_IR_RX_HAUP_EXT */ | ||
143 | NULL, /* IVTV_HW_I2C_IR_RX_HAUP_INT */ | ||
144 | NULL, /* IVTV_HW_Z8F0811_IR_TX_HAUP */ | ||
145 | NULL, /* IVTV_HW_Z8F0811_IR_RX_HAUP */ | ||
146 | }; | ||
147 | |||
148 | /* This array should match the IVTV_HW_ defines */ | ||
149 | static const char * const hw_devicenames[] = { | 124 | static const char * const hw_devicenames[] = { |
150 | "cx25840", | 125 | "cx25840", |
151 | "saa7115", | 126 | "saa7115", |
@@ -257,7 +232,6 @@ int ivtv_i2c_register(struct ivtv *itv, unsigned idx) | |||
257 | { | 232 | { |
258 | struct v4l2_subdev *sd; | 233 | struct v4l2_subdev *sd; |
259 | struct i2c_adapter *adap = &itv->i2c_adap; | 234 | struct i2c_adapter *adap = &itv->i2c_adap; |
260 | const char *mod = hw_modules[idx]; | ||
261 | const char *type = hw_devicenames[idx]; | 235 | const char *type = hw_devicenames[idx]; |
262 | u32 hw = 1 << idx; | 236 | u32 hw = 1 << idx; |
263 | 237 | ||
@@ -266,17 +240,17 @@ int ivtv_i2c_register(struct ivtv *itv, unsigned idx) | |||
266 | if (hw == IVTV_HW_TUNER) { | 240 | if (hw == IVTV_HW_TUNER) { |
267 | /* special tuner handling */ | 241 | /* special tuner handling */ |
268 | sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, | 242 | sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, |
269 | adap, mod, type, | 243 | adap, NULL, type, |
270 | 0, itv->card_i2c->radio); | 244 | 0, itv->card_i2c->radio); |
271 | if (sd) | 245 | if (sd) |
272 | sd->grp_id = 1 << idx; | 246 | sd->grp_id = 1 << idx; |
273 | sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, | 247 | sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, |
274 | adap, mod, type, | 248 | adap, NULL, type, |
275 | 0, itv->card_i2c->demod); | 249 | 0, itv->card_i2c->demod); |
276 | if (sd) | 250 | if (sd) |
277 | sd->grp_id = 1 << idx; | 251 | sd->grp_id = 1 << idx; |
278 | sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, | 252 | sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, |
279 | adap, mod, type, | 253 | adap, NULL, type, |
280 | 0, itv->card_i2c->tv); | 254 | 0, itv->card_i2c->tv); |
281 | if (sd) | 255 | if (sd) |
282 | sd->grp_id = 1 << idx; | 256 | sd->grp_id = 1 << idx; |
@@ -293,16 +267,17 @@ int ivtv_i2c_register(struct ivtv *itv, unsigned idx) | |||
293 | /* It's an I2C device other than an analog tuner or IR chip */ | 267 | /* It's an I2C device other than an analog tuner or IR chip */ |
294 | if (hw == IVTV_HW_UPD64031A || hw == IVTV_HW_UPD6408X) { | 268 | if (hw == IVTV_HW_UPD64031A || hw == IVTV_HW_UPD6408X) { |
295 | sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, | 269 | sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, |
296 | adap, mod, type, 0, I2C_ADDRS(hw_addrs[idx])); | 270 | adap, NULL, type, 0, I2C_ADDRS(hw_addrs[idx])); |
297 | } else if (hw == IVTV_HW_CX25840) { | 271 | } else if (hw == IVTV_HW_CX25840) { |
298 | struct cx25840_platform_data pdata; | 272 | struct cx25840_platform_data pdata; |
299 | 273 | ||
300 | pdata.pvr150_workaround = itv->pvr150_workaround; | 274 | pdata.pvr150_workaround = itv->pvr150_workaround; |
301 | sd = v4l2_i2c_new_subdev_cfg(&itv->v4l2_dev, | 275 | sd = v4l2_i2c_new_subdev_cfg(&itv->v4l2_dev, |
302 | adap, mod, type, 0, &pdata, hw_addrs[idx], NULL); | 276 | adap, NULL, type, 0, &pdata, hw_addrs[idx], |
277 | NULL); | ||
303 | } else { | 278 | } else { |
304 | sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, | 279 | sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, |
305 | adap, mod, type, hw_addrs[idx], NULL); | 280 | adap, NULL, type, hw_addrs[idx], NULL); |
306 | } | 281 | } |
307 | if (sd) | 282 | if (sd) |
308 | sd->grp_id = 1 << idx; | 283 | sd->grp_id = 1 << idx; |
@@ -706,8 +681,7 @@ int init_ivtv_i2c(struct ivtv *itv) | |||
706 | /* Sanity checks for the I2C hardware arrays. They must be the | 681 | /* Sanity checks for the I2C hardware arrays. They must be the |
707 | * same size. | 682 | * same size. |
708 | */ | 683 | */ |
709 | if (ARRAY_SIZE(hw_devicenames) != ARRAY_SIZE(hw_addrs) || | 684 | if (ARRAY_SIZE(hw_devicenames) != ARRAY_SIZE(hw_addrs)) { |
710 | ARRAY_SIZE(hw_devicenames) != ARRAY_SIZE(hw_modules)) { | ||
711 | IVTV_ERR("Mismatched I2C hardware arrays\n"); | 685 | IVTV_ERR("Mismatched I2C hardware arrays\n"); |
712 | return -ENODEV; | 686 | return -ENODEV; |
713 | } | 687 | } |