@@ -1365,7 +1365,7 @@ static const struct iio_buffer_setup_ops mxs_lradc_buffer_ops = {
1365
1365
* Driver initialization
1366
1366
*/
1367
1367
1368
- #define MXS_ADC_CHAN (idx , chan_type ) { \
1368
+ #define MXS_ADC_CHAN (idx , chan_type , name ) { \
1369
1369
.type = (chan_type), \
1370
1370
.indexed = 1, \
1371
1371
.scan_index = (idx), \
@@ -1378,17 +1378,18 @@ static const struct iio_buffer_setup_ops mxs_lradc_buffer_ops = {
1378
1378
.realbits = LRADC_RESOLUTION, \
1379
1379
.storagebits = 32, \
1380
1380
}, \
1381
+ .datasheet_name = (name), \
1381
1382
}
1382
1383
1383
- static const struct iio_chan_spec mxs_lradc_chan_spec [] = {
1384
- MXS_ADC_CHAN (0 , IIO_VOLTAGE ),
1385
- MXS_ADC_CHAN (1 , IIO_VOLTAGE ),
1386
- MXS_ADC_CHAN (2 , IIO_VOLTAGE ),
1387
- MXS_ADC_CHAN (3 , IIO_VOLTAGE ),
1388
- MXS_ADC_CHAN (4 , IIO_VOLTAGE ),
1389
- MXS_ADC_CHAN (5 , IIO_VOLTAGE ),
1390
- MXS_ADC_CHAN (6 , IIO_VOLTAGE ),
1391
- MXS_ADC_CHAN (7 , IIO_VOLTAGE ),
1384
+ static const struct iio_chan_spec mx23_lradc_chan_spec [] = {
1385
+ MXS_ADC_CHAN (0 , IIO_VOLTAGE , "LRADC0" ),
1386
+ MXS_ADC_CHAN (1 , IIO_VOLTAGE , "LRADC1" ),
1387
+ MXS_ADC_CHAN (2 , IIO_VOLTAGE , "LRADC2" ),
1388
+ MXS_ADC_CHAN (3 , IIO_VOLTAGE , "LRADC3" ),
1389
+ MXS_ADC_CHAN (4 , IIO_VOLTAGE , "LRADC4" ),
1390
+ MXS_ADC_CHAN (5 , IIO_VOLTAGE , "LRADC5" ),
1391
+ MXS_ADC_CHAN (6 , IIO_VOLTAGE , "VDDIO" ),
1392
+ MXS_ADC_CHAN (7 , IIO_VOLTAGE , "VBATT" ),
1392
1393
/* Combined Temperature sensors */
1393
1394
{
1394
1395
.type = IIO_TEMP ,
@@ -1399,6 +1400,7 @@ static const struct iio_chan_spec mxs_lradc_chan_spec[] = {
1399
1400
BIT (IIO_CHAN_INFO_SCALE ),
1400
1401
.channel = 8 ,
1401
1402
.scan_type = {.sign = 'u' , .realbits = 18 , .storagebits = 32 ,},
1403
+ .datasheet_name = "TEMP_DIE" ,
1402
1404
},
1403
1405
/* Hidden channel to keep indexes */
1404
1406
{
@@ -1407,12 +1409,48 @@ static const struct iio_chan_spec mxs_lradc_chan_spec[] = {
1407
1409
.scan_index = -1 ,
1408
1410
.channel = 9 ,
1409
1411
},
1410
- MXS_ADC_CHAN (10 , IIO_VOLTAGE ),
1411
- MXS_ADC_CHAN (11 , IIO_VOLTAGE ),
1412
- MXS_ADC_CHAN (12 , IIO_VOLTAGE ),
1413
- MXS_ADC_CHAN (13 , IIO_VOLTAGE ),
1414
- MXS_ADC_CHAN (14 , IIO_VOLTAGE ),
1415
- MXS_ADC_CHAN (15 , IIO_VOLTAGE ),
1412
+ MXS_ADC_CHAN (10 , IIO_VOLTAGE , NULL ),
1413
+ MXS_ADC_CHAN (11 , IIO_VOLTAGE , NULL ),
1414
+ MXS_ADC_CHAN (12 , IIO_VOLTAGE , "USB_DP" ),
1415
+ MXS_ADC_CHAN (13 , IIO_VOLTAGE , "USB_DN" ),
1416
+ MXS_ADC_CHAN (14 , IIO_VOLTAGE , "VBG" ),
1417
+ MXS_ADC_CHAN (15 , IIO_VOLTAGE , "VDD5V" ),
1418
+ };
1419
+
1420
+ static const struct iio_chan_spec mx28_lradc_chan_spec [] = {
1421
+ MXS_ADC_CHAN (0 , IIO_VOLTAGE , "LRADC0" ),
1422
+ MXS_ADC_CHAN (1 , IIO_VOLTAGE , "LRADC1" ),
1423
+ MXS_ADC_CHAN (2 , IIO_VOLTAGE , "LRADC2" ),
1424
+ MXS_ADC_CHAN (3 , IIO_VOLTAGE , "LRADC3" ),
1425
+ MXS_ADC_CHAN (4 , IIO_VOLTAGE , "LRADC4" ),
1426
+ MXS_ADC_CHAN (5 , IIO_VOLTAGE , "LRADC5" ),
1427
+ MXS_ADC_CHAN (6 , IIO_VOLTAGE , "LRADC6" ),
1428
+ MXS_ADC_CHAN (7 , IIO_VOLTAGE , "VBATT" ),
1429
+ /* Combined Temperature sensors */
1430
+ {
1431
+ .type = IIO_TEMP ,
1432
+ .indexed = 1 ,
1433
+ .scan_index = 8 ,
1434
+ .info_mask_separate = BIT (IIO_CHAN_INFO_RAW ) |
1435
+ BIT (IIO_CHAN_INFO_OFFSET ) |
1436
+ BIT (IIO_CHAN_INFO_SCALE ),
1437
+ .channel = 8 ,
1438
+ .scan_type = {.sign = 'u' , .realbits = 18 , .storagebits = 32 ,},
1439
+ .datasheet_name = "TEMP_DIE" ,
1440
+ },
1441
+ /* Hidden channel to keep indexes */
1442
+ {
1443
+ .type = IIO_TEMP ,
1444
+ .indexed = 1 ,
1445
+ .scan_index = -1 ,
1446
+ .channel = 9 ,
1447
+ },
1448
+ MXS_ADC_CHAN (10 , IIO_VOLTAGE , "VDDIO" ),
1449
+ MXS_ADC_CHAN (11 , IIO_VOLTAGE , "VTH" ),
1450
+ MXS_ADC_CHAN (12 , IIO_VOLTAGE , "VDDA" ),
1451
+ MXS_ADC_CHAN (13 , IIO_VOLTAGE , "VDDD" ),
1452
+ MXS_ADC_CHAN (14 , IIO_VOLTAGE , "VBG" ),
1453
+ MXS_ADC_CHAN (15 , IIO_VOLTAGE , "VDD5V" ),
1416
1454
};
1417
1455
1418
1456
static int mxs_lradc_hw_init (struct mxs_lradc * lradc )
@@ -1608,10 +1646,16 @@ static int mxs_lradc_probe(struct platform_device *pdev)
1608
1646
iio -> dev .parent = & pdev -> dev ;
1609
1647
iio -> info = & mxs_lradc_iio_info ;
1610
1648
iio -> modes = INDIO_DIRECT_MODE ;
1611
- iio -> channels = mxs_lradc_chan_spec ;
1612
- iio -> num_channels = ARRAY_SIZE (mxs_lradc_chan_spec );
1613
1649
iio -> masklength = LRADC_MAX_TOTAL_CHANS ;
1614
1650
1651
+ if (lradc -> soc == IMX23_LRADC ) {
1652
+ iio -> channels = mx23_lradc_chan_spec ;
1653
+ iio -> num_channels = ARRAY_SIZE (mx23_lradc_chan_spec );
1654
+ } else {
1655
+ iio -> channels = mx28_lradc_chan_spec ;
1656
+ iio -> num_channels = ARRAY_SIZE (mx28_lradc_chan_spec );
1657
+ }
1658
+
1615
1659
ret = iio_triggered_buffer_setup (iio , & iio_pollfunc_store_time ,
1616
1660
& mxs_lradc_trigger_handler ,
1617
1661
& mxs_lradc_buffer_ops );
0 commit comments