Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[media] it913x: add chip device ids for binding

Driver supports 2 different device versions, AX and BX. Use device
IDs to pass chip version information to driver.

Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>

authored by

Antti Palosaari and committed by
Mauro Carvalho Chehab
8efb34b2 35ef193b

+14 -10
+10 -1
drivers/media/tuners/it913x.c
··· 390 390 struct it913x_platform_data *pdata = pdev->dev.platform_data; 391 391 struct dvb_frontend *fe = pdata->fe; 392 392 struct it913x_dev *dev; 393 + const struct platform_device_id *id = platform_get_device_id(pdev); 393 394 int ret; 394 395 char *chip_ver_str; 395 396 ··· 404 403 dev->pdev = pdev; 405 404 dev->regmap = pdata->regmap; 406 405 dev->fe = pdata->fe; 407 - dev->chip_ver = pdata->chip_ver; 406 + dev->chip_ver = id->driver_data; 408 407 dev->role = pdata->role; 409 408 410 409 fe->tuner_priv = dev; ··· 442 441 return 0; 443 442 } 444 443 444 + static const struct platform_device_id it913x_id_table[] = { 445 + {"it9133ax-tuner", 1}, 446 + {"it9133bx-tuner", 2}, 447 + {}, 448 + }; 449 + MODULE_DEVICE_TABLE(platform, it913x_id_table); 450 + 445 451 static struct platform_driver it913x_driver = { 446 452 .driver = { 447 453 .name = "it913x", ··· 456 448 }, 457 449 .probe = it913x_probe, 458 450 .remove = it913x_remove, 451 + .id_table = it913x_id_table, 459 452 }; 460 453 461 454 module_platform_driver(it913x_driver);
-5
drivers/media/tuners/it913x.h
··· 25 25 * struct it913x_platform_data - Platform data for the it913x driver 26 26 * @regmap: af9033 demod driver regmap. 27 27 * @dvb_frontend: af9033 demod driver DVB frontend. 28 - * @chip_ver: Used chip version. 1=IT9133 AX, 2=IT9133 BX. 29 28 * @role: Chip role, single or dual configuration. 30 29 */ 31 30 32 31 struct it913x_platform_data { 33 32 struct regmap *regmap; 34 33 struct dvb_frontend *fe; 35 - unsigned int chip_ver:2; 36 34 #define IT913X_ROLE_SINGLE 0 37 35 #define IT913X_ROLE_DUAL_MASTER 1 38 36 #define IT913X_ROLE_DUAL_SLAVE 2 39 37 unsigned int role:2; 40 38 }; 41 - 42 - /* Backwards compatibility */ 43 - #define it913x_config it913x_platform_data 44 39 45 40 #endif
+4 -4
drivers/media/usb/dvb-usb-v2/af9035.c
··· 1495 1495 case AF9033_TUNER_IT9135_62: 1496 1496 { 1497 1497 struct platform_device *pdev; 1498 + const char *name; 1498 1499 struct it913x_platform_data it913x_pdata = { 1499 1500 .regmap = state->af9033_config[adap->id].regmap, 1500 1501 .fe = adap->fe[0], ··· 1505 1504 case AF9033_TUNER_IT9135_38: 1506 1505 case AF9033_TUNER_IT9135_51: 1507 1506 case AF9033_TUNER_IT9135_52: 1508 - it913x_pdata.chip_ver = 1; 1507 + name = "it9133ax-tuner"; 1509 1508 break; 1510 1509 case AF9033_TUNER_IT9135_60: 1511 1510 case AF9033_TUNER_IT9135_61: 1512 1511 case AF9033_TUNER_IT9135_62: 1513 - it913x_pdata.chip_ver = 2; 1512 + name = "it9133bx-tuner"; 1514 1513 break; 1515 1514 default: 1516 1515 ret = -ENODEV; ··· 1527 1526 } 1528 1527 1529 1528 request_module("%s", "it913x"); 1530 - pdev = platform_device_register_data(&d->intf->dev, 1531 - "it913x", 1529 + pdev = platform_device_register_data(&d->intf->dev, name, 1532 1530 PLATFORM_DEVID_AUTO, 1533 1531 &it913x_pdata, 1534 1532 sizeof(it913x_pdata));