Skip to content

Commit 829aed1

Browse files
lategoodbyejic23
authored andcommitted
iio: mxs-lradc: add datasheet name for every usable channel
In order to provide a channel name to in kernel consumers add the datasheet names for every usable AD channel. Since the channel names differ between i.MX23 and i.MX28, we need to separate the channel specs. Signed-off-by: Stefan Wahren <[email protected]> Reviewed-by: Marek Vasut <[email protected]> Signed-off-by: Jonathan Cameron <[email protected]>
1 parent ae5896d commit 829aed1

File tree

1 file changed

+62
-18
lines changed

1 file changed

+62
-18
lines changed

drivers/staging/iio/adc/mxs-lradc.c

Lines changed: 62 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1365,7 +1365,7 @@ static const struct iio_buffer_setup_ops mxs_lradc_buffer_ops = {
13651365
* Driver initialization
13661366
*/
13671367

1368-
#define MXS_ADC_CHAN(idx, chan_type) { \
1368+
#define MXS_ADC_CHAN(idx, chan_type, name) { \
13691369
.type = (chan_type), \
13701370
.indexed = 1, \
13711371
.scan_index = (idx), \
@@ -1378,17 +1378,18 @@ static const struct iio_buffer_setup_ops mxs_lradc_buffer_ops = {
13781378
.realbits = LRADC_RESOLUTION, \
13791379
.storagebits = 32, \
13801380
}, \
1381+
.datasheet_name = (name), \
13811382
}
13821383

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"),
13921393
/* Combined Temperature sensors */
13931394
{
13941395
.type = IIO_TEMP,
@@ -1399,6 +1400,7 @@ static const struct iio_chan_spec mxs_lradc_chan_spec[] = {
13991400
BIT(IIO_CHAN_INFO_SCALE),
14001401
.channel = 8,
14011402
.scan_type = {.sign = 'u', .realbits = 18, .storagebits = 32,},
1403+
.datasheet_name = "TEMP_DIE",
14021404
},
14031405
/* Hidden channel to keep indexes */
14041406
{
@@ -1407,12 +1409,48 @@ static const struct iio_chan_spec mxs_lradc_chan_spec[] = {
14071409
.scan_index = -1,
14081410
.channel = 9,
14091411
},
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"),
14161454
};
14171455

14181456
static int mxs_lradc_hw_init(struct mxs_lradc *lradc)
@@ -1608,10 +1646,16 @@ static int mxs_lradc_probe(struct platform_device *pdev)
16081646
iio->dev.parent = &pdev->dev;
16091647
iio->info = &mxs_lradc_iio_info;
16101648
iio->modes = INDIO_DIRECT_MODE;
1611-
iio->channels = mxs_lradc_chan_spec;
1612-
iio->num_channels = ARRAY_SIZE(mxs_lradc_chan_spec);
16131649
iio->masklength = LRADC_MAX_TOTAL_CHANS;
16141650

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+
16151659
ret = iio_triggered_buffer_setup(iio, &iio_pollfunc_store_time,
16161660
&mxs_lradc_trigger_handler,
16171661
&mxs_lradc_buffer_ops);

0 commit comments

Comments
 (0)