diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2013-05-29 05:59:43 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2013-06-17 07:45:43 -0400 |
commit | 08fe9f7ddf31b8c42dd1a689b0a2c1501f10b58c (patch) | |
tree | 7b27e4a16ebded1eea91102eed66a3b67d145ce1 | |
parent | b1c85cc049a681aee805311faa56fd21b44fb904 (diff) |
[media] cx231xx: remove g_chip_ident
Remove g_chip_ident and replace it with g_chip_info.
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/media/usb/cx231xx/cx231xx-417.c | 1 | ||||
-rw-r--r-- | drivers/media/usb/cx231xx/cx231xx-avcore.c | 1 | ||||
-rw-r--r-- | drivers/media/usb/cx231xx/cx231xx-cards.c | 1 | ||||
-rw-r--r-- | drivers/media/usb/cx231xx/cx231xx-vbi.c | 1 | ||||
-rw-r--r-- | drivers/media/usb/cx231xx/cx231xx-video.c | 417 | ||||
-rw-r--r-- | drivers/media/usb/cx231xx/cx231xx.h | 2 |
6 files changed, 103 insertions, 320 deletions
diff --git a/drivers/media/usb/cx231xx/cx231xx-417.c b/drivers/media/usb/cx231xx/cx231xx-417.c index f548db8043d4..2f63029e7a36 100644 --- a/drivers/media/usb/cx231xx/cx231xx-417.c +++ b/drivers/media/usb/cx231xx/cx231xx-417.c | |||
@@ -1840,7 +1840,6 @@ static const struct v4l2_ioctl_ops mpeg_ioctl_ops = { | |||
1840 | .vidioc_streamon = vidioc_streamon, | 1840 | .vidioc_streamon = vidioc_streamon, |
1841 | .vidioc_streamoff = vidioc_streamoff, | 1841 | .vidioc_streamoff = vidioc_streamoff, |
1842 | .vidioc_log_status = vidioc_log_status, | 1842 | .vidioc_log_status = vidioc_log_status, |
1843 | .vidioc_g_chip_ident = cx231xx_g_chip_ident, | ||
1844 | #ifdef CONFIG_VIDEO_ADV_DEBUG | 1843 | #ifdef CONFIG_VIDEO_ADV_DEBUG |
1845 | .vidioc_g_register = cx231xx_g_register, | 1844 | .vidioc_g_register = cx231xx_g_register, |
1846 | .vidioc_s_register = cx231xx_s_register, | 1845 | .vidioc_s_register = cx231xx_s_register, |
diff --git a/drivers/media/usb/cx231xx/cx231xx-avcore.c b/drivers/media/usb/cx231xx/cx231xx-avcore.c index 235ba657d52e..89de00bf4f82 100644 --- a/drivers/media/usb/cx231xx/cx231xx-avcore.c +++ b/drivers/media/usb/cx231xx/cx231xx-avcore.c | |||
@@ -35,7 +35,6 @@ | |||
35 | 35 | ||
36 | #include <media/v4l2-common.h> | 36 | #include <media/v4l2-common.h> |
37 | #include <media/v4l2-ioctl.h> | 37 | #include <media/v4l2-ioctl.h> |
38 | #include <media/v4l2-chip-ident.h> | ||
39 | 38 | ||
40 | #include "cx231xx.h" | 39 | #include "cx231xx.h" |
41 | #include "cx231xx-dif.h" | 40 | #include "cx231xx-dif.h" |
diff --git a/drivers/media/usb/cx231xx/cx231xx-cards.c b/drivers/media/usb/cx231xx/cx231xx-cards.c index 13249e5a7891..27948e1798eb 100644 --- a/drivers/media/usb/cx231xx/cx231xx-cards.c +++ b/drivers/media/usb/cx231xx/cx231xx-cards.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <media/tuner.h> | 29 | #include <media/tuner.h> |
30 | #include <media/tveeprom.h> | 30 | #include <media/tveeprom.h> |
31 | #include <media/v4l2-common.h> | 31 | #include <media/v4l2-common.h> |
32 | #include <media/v4l2-chip-ident.h> | ||
33 | 32 | ||
34 | #include <media/cx25840.h> | 33 | #include <media/cx25840.h> |
35 | #include "dvb-usb-ids.h" | 34 | #include "dvb-usb-ids.h" |
diff --git a/drivers/media/usb/cx231xx/cx231xx-vbi.c b/drivers/media/usb/cx231xx/cx231xx-vbi.c index 1340ff268817..c02794274f51 100644 --- a/drivers/media/usb/cx231xx/cx231xx-vbi.c +++ b/drivers/media/usb/cx231xx/cx231xx-vbi.c | |||
@@ -32,7 +32,6 @@ | |||
32 | 32 | ||
33 | #include <media/v4l2-common.h> | 33 | #include <media/v4l2-common.h> |
34 | #include <media/v4l2-ioctl.h> | 34 | #include <media/v4l2-ioctl.h> |
35 | #include <media/v4l2-chip-ident.h> | ||
36 | #include <media/msp3400.h> | 35 | #include <media/msp3400.h> |
37 | #include <media/tuner.h> | 36 | #include <media/tuner.h> |
38 | 37 | ||
diff --git a/drivers/media/usb/cx231xx/cx231xx-video.c b/drivers/media/usb/cx231xx/cx231xx-video.c index cd221474e1b9..54cdd4dc455e 100644 --- a/drivers/media/usb/cx231xx/cx231xx-video.c +++ b/drivers/media/usb/cx231xx/cx231xx-video.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <media/v4l2-common.h> | 36 | #include <media/v4l2-common.h> |
37 | #include <media/v4l2-ioctl.h> | 37 | #include <media/v4l2-ioctl.h> |
38 | #include <media/v4l2-event.h> | 38 | #include <media/v4l2-event.h> |
39 | #include <media/v4l2-chip-ident.h> | ||
40 | #include <media/msp3400.h> | 39 | #include <media/msp3400.h> |
41 | #include <media/tuner.h> | 40 | #include <media/tuner.h> |
42 | 41 | ||
@@ -1228,179 +1227,86 @@ int cx231xx_s_frequency(struct file *file, void *priv, | |||
1228 | return rc; | 1227 | return rc; |
1229 | } | 1228 | } |
1230 | 1229 | ||
1231 | int cx231xx_g_chip_ident(struct file *file, void *fh, | 1230 | #ifdef CONFIG_VIDEO_ADV_DEBUG |
1232 | struct v4l2_dbg_chip_ident *chip) | 1231 | |
1232 | int cx231xx_g_chip_info(struct file *file, void *fh, | ||
1233 | struct v4l2_dbg_chip_info *chip) | ||
1233 | { | 1234 | { |
1234 | chip->ident = V4L2_IDENT_NONE; | 1235 | switch (chip->match.addr) { |
1235 | chip->revision = 0; | 1236 | case 0: /* Cx231xx - internal registers */ |
1236 | if (chip->match.type == V4L2_CHIP_MATCH_HOST) { | 1237 | return 0; |
1237 | if (v4l2_chip_match_host(&chip->match)) | 1238 | case 1: /* AFE - read byte */ |
1238 | chip->ident = V4L2_IDENT_CX23100; | 1239 | strlcpy(chip->name, "AFE (byte)", sizeof(chip->name)); |
1240 | return 0; | ||
1241 | case 2: /* Video Block - read byte */ | ||
1242 | strlcpy(chip->name, "Video (byte)", sizeof(chip->name)); | ||
1243 | return 0; | ||
1244 | case 3: /* I2S block - read byte */ | ||
1245 | strlcpy(chip->name, "I2S (byte)", sizeof(chip->name)); | ||
1246 | return 0; | ||
1247 | case 4: /* AFE - read dword */ | ||
1248 | strlcpy(chip->name, "AFE (dword)", sizeof(chip->name)); | ||
1249 | return 0; | ||
1250 | case 5: /* Video Block - read dword */ | ||
1251 | strlcpy(chip->name, "Video (dword)", sizeof(chip->name)); | ||
1252 | return 0; | ||
1253 | case 6: /* I2S Block - read dword */ | ||
1254 | strlcpy(chip->name, "I2S (dword)", sizeof(chip->name)); | ||
1239 | return 0; | 1255 | return 0; |
1240 | } | 1256 | } |
1241 | return -EINVAL; | 1257 | return -EINVAL; |
1242 | } | 1258 | } |
1243 | 1259 | ||
1244 | #ifdef CONFIG_VIDEO_ADV_DEBUG | ||
1245 | |||
1246 | /* | ||
1247 | -R, --list-registers=type=<host/i2cdrv/i2caddr>, | ||
1248 | chip=<chip>[,min=<addr>,max=<addr>] | ||
1249 | dump registers from <min> to <max> [VIDIOC_DBG_G_REGISTER] | ||
1250 | -r, --set-register=type=<host/i2cdrv/i2caddr>, | ||
1251 | chip=<chip>,reg=<addr>,val=<val> | ||
1252 | set the register [VIDIOC_DBG_S_REGISTER] | ||
1253 | |||
1254 | if type == host, then <chip> is the hosts chip ID (default 0) | ||
1255 | if type == i2cdrv (default), then <chip> is the I2C driver name or ID | ||
1256 | if type == i2caddr, then <chip> is the 7-bit I2C address | ||
1257 | */ | ||
1258 | |||
1259 | int cx231xx_g_register(struct file *file, void *priv, | 1260 | int cx231xx_g_register(struct file *file, void *priv, |
1260 | struct v4l2_dbg_register *reg) | 1261 | struct v4l2_dbg_register *reg) |
1261 | { | 1262 | { |
1262 | struct cx231xx_fh *fh = priv; | 1263 | struct cx231xx_fh *fh = priv; |
1263 | struct cx231xx *dev = fh->dev; | 1264 | struct cx231xx *dev = fh->dev; |
1264 | int ret = 0; | 1265 | int ret; |
1265 | u8 value[4] = { 0, 0, 0, 0 }; | 1266 | u8 value[4] = { 0, 0, 0, 0 }; |
1266 | u32 data = 0; | 1267 | u32 data = 0; |
1267 | 1268 | ||
1268 | switch (reg->match.type) { | 1269 | switch (reg->match.addr) { |
1269 | case V4L2_CHIP_MATCH_HOST: | 1270 | case 0: /* Cx231xx - internal registers */ |
1270 | switch (reg->match.addr) { | 1271 | ret = cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, |
1271 | case 0: /* Cx231xx - internal registers */ | 1272 | (u16)reg->reg, value, 4); |
1272 | ret = cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, | 1273 | reg->val = value[0] | value[1] << 8 | |
1273 | (u16)reg->reg, value, 4); | 1274 | value[2] << 16 | value[3] << 24; |
1274 | reg->val = value[0] | value[1] << 8 | | 1275 | break; |
1275 | value[2] << 16 | value[3] << 24; | 1276 | case 1: /* AFE - read byte */ |
1276 | break; | 1277 | ret = cx231xx_read_i2c_data(dev, AFE_DEVICE_ADDRESS, |
1277 | case 1: /* AFE - read byte */ | 1278 | (u16)reg->reg, 2, &data, 1); |
1278 | ret = cx231xx_read_i2c_data(dev, AFE_DEVICE_ADDRESS, | 1279 | reg->val = data; |
1279 | (u16)reg->reg, 2, &data, 1); | 1280 | break; |
1280 | reg->val = le32_to_cpu(data & 0xff); | 1281 | case 2: /* Video Block - read byte */ |
1281 | break; | 1282 | ret = cx231xx_read_i2c_data(dev, VID_BLK_I2C_ADDRESS, |
1282 | case 14: /* AFE - read dword */ | 1283 | (u16)reg->reg, 2, &data, 1); |
1283 | ret = cx231xx_read_i2c_data(dev, AFE_DEVICE_ADDRESS, | 1284 | reg->val = data; |
1284 | (u16)reg->reg, 2, &data, 4); | 1285 | break; |
1285 | reg->val = le32_to_cpu(data); | 1286 | case 3: /* I2S block - read byte */ |
1286 | break; | 1287 | ret = cx231xx_read_i2c_data(dev, I2S_BLK_DEVICE_ADDRESS, |
1287 | case 2: /* Video Block - read byte */ | 1288 | (u16)reg->reg, 1, &data, 1); |
1288 | ret = cx231xx_read_i2c_data(dev, VID_BLK_I2C_ADDRESS, | 1289 | reg->val = data; |
1289 | (u16)reg->reg, 2, &data, 1); | 1290 | break; |
1290 | reg->val = le32_to_cpu(data & 0xff); | 1291 | case 4: /* AFE - read dword */ |
1291 | break; | 1292 | ret = cx231xx_read_i2c_data(dev, AFE_DEVICE_ADDRESS, |
1292 | case 24: /* Video Block - read dword */ | 1293 | (u16)reg->reg, 2, &data, 4); |
1293 | ret = cx231xx_read_i2c_data(dev, VID_BLK_I2C_ADDRESS, | 1294 | reg->val = data; |
1294 | (u16)reg->reg, 2, &data, 4); | 1295 | break; |
1295 | reg->val = le32_to_cpu(data); | 1296 | case 5: /* Video Block - read dword */ |
1296 | break; | 1297 | ret = cx231xx_read_i2c_data(dev, VID_BLK_I2C_ADDRESS, |
1297 | case 3: /* I2S block - read byte */ | 1298 | (u16)reg->reg, 2, &data, 4); |
1298 | ret = cx231xx_read_i2c_data(dev, | 1299 | reg->val = data; |
1299 | I2S_BLK_DEVICE_ADDRESS, | 1300 | break; |
1300 | (u16)reg->reg, 1, | 1301 | case 6: /* I2S Block - read dword */ |
1301 | &data, 1); | 1302 | ret = cx231xx_read_i2c_data(dev, I2S_BLK_DEVICE_ADDRESS, |
1302 | reg->val = le32_to_cpu(data & 0xff); | 1303 | (u16)reg->reg, 1, &data, 4); |
1303 | break; | 1304 | reg->val = data; |
1304 | case 34: /* I2S Block - read dword */ | 1305 | break; |
1305 | ret = | ||
1306 | cx231xx_read_i2c_data(dev, I2S_BLK_DEVICE_ADDRESS, | ||
1307 | (u16)reg->reg, 1, &data, 4); | ||
1308 | reg->val = le32_to_cpu(data); | ||
1309 | break; | ||
1310 | } | ||
1311 | return ret < 0 ? ret : 0; | ||
1312 | |||
1313 | case V4L2_CHIP_MATCH_I2C_DRIVER: | ||
1314 | call_all(dev, core, g_register, reg); | ||
1315 | return 0; | ||
1316 | case V4L2_CHIP_MATCH_I2C_ADDR:/*for register debug*/ | ||
1317 | switch (reg->match.addr) { | ||
1318 | case 0: /* Cx231xx - internal registers */ | ||
1319 | ret = cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, | ||
1320 | (u16)reg->reg, value, 4); | ||
1321 | reg->val = value[0] | value[1] << 8 | | ||
1322 | value[2] << 16 | value[3] << 24; | ||
1323 | |||
1324 | break; | ||
1325 | case 0x600:/* AFE - read byte */ | ||
1326 | ret = cx231xx_read_i2c_master(dev, AFE_DEVICE_ADDRESS, | ||
1327 | (u16)reg->reg, 2, | ||
1328 | &data, 1 , 0); | ||
1329 | reg->val = le32_to_cpu(data & 0xff); | ||
1330 | break; | ||
1331 | |||
1332 | case 0x880:/* Video Block - read byte */ | ||
1333 | if (reg->reg < 0x0b) { | ||
1334 | ret = cx231xx_read_i2c_master(dev, | ||
1335 | VID_BLK_I2C_ADDRESS, | ||
1336 | (u16)reg->reg, 2, | ||
1337 | &data, 1 , 0); | ||
1338 | reg->val = le32_to_cpu(data & 0xff); | ||
1339 | } else { | ||
1340 | ret = cx231xx_read_i2c_master(dev, | ||
1341 | VID_BLK_I2C_ADDRESS, | ||
1342 | (u16)reg->reg, 2, | ||
1343 | &data, 4 , 0); | ||
1344 | reg->val = le32_to_cpu(data); | ||
1345 | } | ||
1346 | break; | ||
1347 | case 0x980: | ||
1348 | ret = cx231xx_read_i2c_master(dev, | ||
1349 | I2S_BLK_DEVICE_ADDRESS, | ||
1350 | (u16)reg->reg, 1, | ||
1351 | &data, 1 , 0); | ||
1352 | reg->val = le32_to_cpu(data & 0xff); | ||
1353 | break; | ||
1354 | case 0x400: | ||
1355 | ret = | ||
1356 | cx231xx_read_i2c_master(dev, 0x40, | ||
1357 | (u16)reg->reg, 1, | ||
1358 | &data, 1 , 0); | ||
1359 | reg->val = le32_to_cpu(data & 0xff); | ||
1360 | break; | ||
1361 | case 0xc01: | ||
1362 | ret = | ||
1363 | cx231xx_read_i2c_master(dev, 0xc0, | ||
1364 | (u16)reg->reg, 2, | ||
1365 | &data, 38, 1); | ||
1366 | reg->val = le32_to_cpu(data); | ||
1367 | break; | ||
1368 | case 0x022: | ||
1369 | ret = | ||
1370 | cx231xx_read_i2c_master(dev, 0x02, | ||
1371 | (u16)reg->reg, 1, | ||
1372 | &data, 1, 2); | ||
1373 | reg->val = le32_to_cpu(data & 0xff); | ||
1374 | break; | ||
1375 | case 0x322: | ||
1376 | ret = cx231xx_read_i2c_master(dev, | ||
1377 | 0x32, | ||
1378 | (u16)reg->reg, 1, | ||
1379 | &data, 4 , 2); | ||
1380 | reg->val = le32_to_cpu(data); | ||
1381 | break; | ||
1382 | case 0x342: | ||
1383 | ret = cx231xx_read_i2c_master(dev, | ||
1384 | 0x34, | ||
1385 | (u16)reg->reg, 1, | ||
1386 | &data, 4 , 2); | ||
1387 | reg->val = le32_to_cpu(data); | ||
1388 | break; | ||
1389 | |||
1390 | default: | ||
1391 | cx231xx_info("no match device address!!\n"); | ||
1392 | break; | ||
1393 | } | ||
1394 | return ret < 0 ? ret : 0; | ||
1395 | /*return -EINVAL;*/ | ||
1396 | default: | 1306 | default: |
1397 | if (!v4l2_chip_match_host(®->match)) | 1307 | return -EINVAL; |
1398 | return -EINVAL; | ||
1399 | } | 1308 | } |
1400 | 1309 | return ret < 0 ? ret : 0; | |
1401 | call_all(dev, core, g_register, reg); | ||
1402 | |||
1403 | return ret; | ||
1404 | } | 1310 | } |
1405 | 1311 | ||
1406 | int cx231xx_s_register(struct file *file, void *priv, | 1312 | int cx231xx_s_register(struct file *file, void *priv, |
@@ -1408,165 +1314,46 @@ int cx231xx_s_register(struct file *file, void *priv, | |||
1408 | { | 1314 | { |
1409 | struct cx231xx_fh *fh = priv; | 1315 | struct cx231xx_fh *fh = priv; |
1410 | struct cx231xx *dev = fh->dev; | 1316 | struct cx231xx *dev = fh->dev; |
1411 | int ret = 0; | 1317 | int ret; |
1412 | __le64 buf; | ||
1413 | u32 value; | ||
1414 | u8 data[4] = { 0, 0, 0, 0 }; | 1318 | u8 data[4] = { 0, 0, 0, 0 }; |
1415 | 1319 | ||
1416 | buf = cpu_to_le64(reg->val); | 1320 | switch (reg->match.addr) { |
1417 | 1321 | case 0: /* cx231xx internal registers */ | |
1418 | switch (reg->match.type) { | 1322 | data[0] = (u8) reg->val; |
1419 | case V4L2_CHIP_MATCH_HOST: | 1323 | data[1] = (u8) (reg->val >> 8); |
1420 | { | 1324 | data[2] = (u8) (reg->val >> 16); |
1421 | value = (u32) buf & 0xffffffff; | 1325 | data[3] = (u8) (reg->val >> 24); |
1422 | 1326 | ret = cx231xx_write_ctrl_reg(dev, VRT_SET_REGISTER, | |
1423 | switch (reg->match.addr) { | 1327 | (u16)reg->reg, data, 4); |
1424 | case 0: /* cx231xx internal registers */ | 1328 | break; |
1425 | data[0] = (u8) value; | 1329 | case 1: /* AFE - write byte */ |
1426 | data[1] = (u8) (value >> 8); | 1330 | ret = cx231xx_write_i2c_data(dev, AFE_DEVICE_ADDRESS, |
1427 | data[2] = (u8) (value >> 16); | 1331 | (u16)reg->reg, 2, reg->val, 1); |
1428 | data[3] = (u8) (value >> 24); | 1332 | break; |
1429 | ret = cx231xx_write_ctrl_reg(dev, | 1333 | case 2: /* Video Block - write byte */ |
1430 | VRT_SET_REGISTER, | 1334 | ret = cx231xx_write_i2c_data(dev, VID_BLK_I2C_ADDRESS, |
1431 | (u16)reg->reg, data, | 1335 | (u16)reg->reg, 2, reg->val, 1); |
1432 | 4); | 1336 | break; |
1433 | break; | 1337 | case 3: /* I2S block - write byte */ |
1434 | case 1: /* AFE - read byte */ | 1338 | ret = cx231xx_write_i2c_data(dev, I2S_BLK_DEVICE_ADDRESS, |
1435 | ret = cx231xx_write_i2c_data(dev, | 1339 | (u16)reg->reg, 1, reg->val, 1); |
1436 | AFE_DEVICE_ADDRESS, | 1340 | break; |
1437 | (u16)reg->reg, 2, | 1341 | case 4: /* AFE - write dword */ |
1438 | value, 1); | 1342 | ret = cx231xx_write_i2c_data(dev, AFE_DEVICE_ADDRESS, |
1439 | break; | 1343 | (u16)reg->reg, 2, reg->val, 4); |
1440 | case 14: /* AFE - read dword */ | 1344 | break; |
1441 | ret = cx231xx_write_i2c_data(dev, | 1345 | case 5: /* Video Block - write dword */ |
1442 | AFE_DEVICE_ADDRESS, | 1346 | ret = cx231xx_write_i2c_data(dev, VID_BLK_I2C_ADDRESS, |
1443 | (u16)reg->reg, 2, | 1347 | (u16)reg->reg, 2, reg->val, 4); |
1444 | value, 4); | ||
1445 | break; | ||
1446 | case 2: /* Video Block - read byte */ | ||
1447 | ret = | ||
1448 | cx231xx_write_i2c_data(dev, | ||
1449 | VID_BLK_I2C_ADDRESS, | ||
1450 | (u16)reg->reg, 2, | ||
1451 | value, 1); | ||
1452 | break; | ||
1453 | case 24: /* Video Block - read dword */ | ||
1454 | ret = | ||
1455 | cx231xx_write_i2c_data(dev, | ||
1456 | VID_BLK_I2C_ADDRESS, | ||
1457 | (u16)reg->reg, 2, | ||
1458 | value, 4); | ||
1459 | break; | ||
1460 | case 3: /* I2S block - read byte */ | ||
1461 | ret = | ||
1462 | cx231xx_write_i2c_data(dev, | ||
1463 | I2S_BLK_DEVICE_ADDRESS, | ||
1464 | (u16)reg->reg, 1, | ||
1465 | value, 1); | ||
1466 | break; | ||
1467 | case 34: /* I2S block - read dword */ | ||
1468 | ret = | ||
1469 | cx231xx_write_i2c_data(dev, | ||
1470 | I2S_BLK_DEVICE_ADDRESS, | ||
1471 | (u16)reg->reg, 1, | ||
1472 | value, 4); | ||
1473 | break; | ||
1474 | } | ||
1475 | } | ||
1476 | return ret < 0 ? ret : 0; | ||
1477 | case V4L2_CHIP_MATCH_I2C_ADDR: | ||
1478 | { | ||
1479 | value = (u32) buf & 0xffffffff; | ||
1480 | |||
1481 | switch (reg->match.addr) { | ||
1482 | case 0:/*cx231xx internal registers*/ | ||
1483 | data[0] = (u8) value; | ||
1484 | data[1] = (u8) (value >> 8); | ||
1485 | data[2] = (u8) (value >> 16); | ||
1486 | data[3] = (u8) (value >> 24); | ||
1487 | ret = cx231xx_write_ctrl_reg(dev, | ||
1488 | VRT_SET_REGISTER, | ||
1489 | (u16)reg->reg, data, | ||
1490 | 4); | ||
1491 | break; | ||
1492 | case 0x600:/* AFE - read byte */ | ||
1493 | ret = cx231xx_write_i2c_master(dev, | ||
1494 | AFE_DEVICE_ADDRESS, | ||
1495 | (u16)reg->reg, 2, | ||
1496 | value, 1 , 0); | ||
1497 | break; | ||
1498 | |||
1499 | case 0x880:/* Video Block - read byte */ | ||
1500 | if (reg->reg < 0x0b) | ||
1501 | cx231xx_write_i2c_master(dev, | ||
1502 | VID_BLK_I2C_ADDRESS, | ||
1503 | (u16)reg->reg, 2, | ||
1504 | value, 1, 0); | ||
1505 | else | ||
1506 | cx231xx_write_i2c_master(dev, | ||
1507 | VID_BLK_I2C_ADDRESS, | ||
1508 | (u16)reg->reg, 2, | ||
1509 | value, 4, 0); | ||
1510 | break; | ||
1511 | case 0x980: | ||
1512 | ret = | ||
1513 | cx231xx_write_i2c_master(dev, | ||
1514 | I2S_BLK_DEVICE_ADDRESS, | ||
1515 | (u16)reg->reg, 1, | ||
1516 | value, 1, 0); | ||
1517 | break; | ||
1518 | case 0x400: | ||
1519 | ret = | ||
1520 | cx231xx_write_i2c_master(dev, | ||
1521 | 0x40, | ||
1522 | (u16)reg->reg, 1, | ||
1523 | value, 1, 0); | ||
1524 | break; | ||
1525 | case 0xc01: | ||
1526 | ret = | ||
1527 | cx231xx_write_i2c_master(dev, | ||
1528 | 0xc0, | ||
1529 | (u16)reg->reg, 1, | ||
1530 | value, 1, 1); | ||
1531 | break; | ||
1532 | |||
1533 | case 0x022: | ||
1534 | ret = | ||
1535 | cx231xx_write_i2c_master(dev, | ||
1536 | 0x02, | ||
1537 | (u16)reg->reg, 1, | ||
1538 | value, 1, 2); | ||
1539 | break; | ||
1540 | case 0x322: | ||
1541 | ret = | ||
1542 | cx231xx_write_i2c_master(dev, | ||
1543 | 0x32, | ||
1544 | (u16)reg->reg, 1, | ||
1545 | value, 4, 2); | ||
1546 | break; | ||
1547 | |||
1548 | case 0x342: | ||
1549 | ret = | ||
1550 | cx231xx_write_i2c_master(dev, | ||
1551 | 0x34, | ||
1552 | (u16)reg->reg, 1, | ||
1553 | value, 4, 2); | ||
1554 | break; | ||
1555 | default: | ||
1556 | cx231xx_info("no match device address, " | ||
1557 | "the value is %x\n", reg->match.addr); | ||
1558 | break; | ||
1559 | |||
1560 | } | ||
1561 | |||
1562 | } | ||
1563 | default: | ||
1564 | break; | 1348 | break; |
1349 | case 6: /* I2S block - write dword */ | ||
1350 | ret = cx231xx_write_i2c_data(dev, I2S_BLK_DEVICE_ADDRESS, | ||
1351 | (u16)reg->reg, 1, reg->val, 4); | ||
1352 | break; | ||
1353 | default: | ||
1354 | return -EINVAL; | ||
1565 | } | 1355 | } |
1566 | 1356 | return ret < 0 ? ret : 0; | |
1567 | call_all(dev, core, s_register, reg); | ||
1568 | |||
1569 | return ret; | ||
1570 | } | 1357 | } |
1571 | #endif | 1358 | #endif |
1572 | 1359 | ||
@@ -2208,8 +1995,8 @@ static const struct v4l2_ioctl_ops video_ioctl_ops = { | |||
2208 | .vidioc_s_tuner = cx231xx_s_tuner, | 1995 | .vidioc_s_tuner = cx231xx_s_tuner, |
2209 | .vidioc_g_frequency = cx231xx_g_frequency, | 1996 | .vidioc_g_frequency = cx231xx_g_frequency, |
2210 | .vidioc_s_frequency = cx231xx_s_frequency, | 1997 | .vidioc_s_frequency = cx231xx_s_frequency, |
2211 | .vidioc_g_chip_ident = cx231xx_g_chip_ident, | ||
2212 | #ifdef CONFIG_VIDEO_ADV_DEBUG | 1998 | #ifdef CONFIG_VIDEO_ADV_DEBUG |
1999 | .vidioc_g_chip_info = cx231xx_g_chip_info, | ||
2213 | .vidioc_g_register = cx231xx_g_register, | 2000 | .vidioc_g_register = cx231xx_g_register, |
2214 | .vidioc_s_register = cx231xx_s_register, | 2001 | .vidioc_s_register = cx231xx_s_register, |
2215 | #endif | 2002 | #endif |
@@ -2240,8 +2027,8 @@ static const struct v4l2_ioctl_ops radio_ioctl_ops = { | |||
2240 | .vidioc_s_tuner = radio_s_tuner, | 2027 | .vidioc_s_tuner = radio_s_tuner, |
2241 | .vidioc_g_frequency = cx231xx_g_frequency, | 2028 | .vidioc_g_frequency = cx231xx_g_frequency, |
2242 | .vidioc_s_frequency = cx231xx_s_frequency, | 2029 | .vidioc_s_frequency = cx231xx_s_frequency, |
2243 | .vidioc_g_chip_ident = cx231xx_g_chip_ident, | ||
2244 | #ifdef CONFIG_VIDEO_ADV_DEBUG | 2030 | #ifdef CONFIG_VIDEO_ADV_DEBUG |
2031 | .vidioc_g_chip_info = cx231xx_g_chip_info, | ||
2245 | .vidioc_g_register = cx231xx_g_register, | 2032 | .vidioc_g_register = cx231xx_g_register, |
2246 | .vidioc_s_register = cx231xx_s_register, | 2033 | .vidioc_s_register = cx231xx_s_register, |
2247 | #endif | 2034 | #endif |
diff --git a/drivers/media/usb/cx231xx/cx231xx.h b/drivers/media/usb/cx231xx/cx231xx.h index 5ad9fd61d3c8..e812119ea7a8 100644 --- a/drivers/media/usb/cx231xx/cx231xx.h +++ b/drivers/media/usb/cx231xx/cx231xx.h | |||
@@ -945,7 +945,7 @@ int cx231xx_enum_input(struct file *file, void *priv, | |||
945 | struct v4l2_input *i); | 945 | struct v4l2_input *i); |
946 | int cx231xx_g_input(struct file *file, void *priv, unsigned int *i); | 946 | int cx231xx_g_input(struct file *file, void *priv, unsigned int *i); |
947 | int cx231xx_s_input(struct file *file, void *priv, unsigned int i); | 947 | int cx231xx_s_input(struct file *file, void *priv, unsigned int i); |
948 | int cx231xx_g_chip_ident(struct file *file, void *fh, struct v4l2_dbg_chip_ident *chip); | 948 | int cx231xx_g_chip_info(struct file *file, void *fh, struct v4l2_dbg_chip_info *chip); |
949 | int cx231xx_g_register(struct file *file, void *priv, | 949 | int cx231xx_g_register(struct file *file, void *priv, |
950 | struct v4l2_dbg_register *reg); | 950 | struct v4l2_dbg_register *reg); |
951 | int cx231xx_s_register(struct file *file, void *priv, | 951 | int cx231xx_s_register(struct file *file, void *priv, |