Loading drivers/iio/dac/Kconfig +8 −3 Original line number Diff line number Diff line Loading @@ -143,11 +143,16 @@ config AD7303 ad7303. config MAX517 tristate "Maxim MAX517/518/519 DAC driver" tristate "Maxim MAX517/518/519/520/521 DAC driver" depends on I2C help If you say yes here you get support for the Maxim chips MAX517, MAX518 and MAX519 (I2C 8-Bit DACs with rail-to-rail outputs). If you say yes here you get support for the following Maxim chips (I2C 8-Bit DACs with rail-to-rail outputs): MAX517 - Single channel, single reference MAX518 - Dual channel, ref=Vdd MAX519 - Dual channel, dual reference MAX520 - Quad channel, quad reference MAX521 - Octal channel, independent ref for ch0-3, shared ref for ch4-7 This driver can also be built as a module. If so, the module will be called max517. Loading drivers/iio/dac/max517.c +33 −12 Original line number Diff line number Diff line Loading @@ -39,11 +39,13 @@ enum max517_device_ids { ID_MAX517, ID_MAX518, ID_MAX519, ID_MAX520, ID_MAX521, }; struct max517_data { struct i2c_client *client; unsigned short vref_mv[2]; unsigned short vref_mv[8]; }; /* Loading Loading @@ -149,7 +151,13 @@ static const struct iio_info max517_info = { static const struct iio_chan_spec max517_channels[] = { MAX517_CHANNEL(0), MAX517_CHANNEL(1) MAX517_CHANNEL(1), MAX517_CHANNEL(2), MAX517_CHANNEL(3), MAX517_CHANNEL(4), MAX517_CHANNEL(5), MAX517_CHANNEL(6), MAX517_CHANNEL(7), }; static int max517_probe(struct i2c_client *client, Loading @@ -158,6 +166,7 @@ static int max517_probe(struct i2c_client *client, struct max517_data *data; struct iio_dev *indio_dev; struct max517_platform_data *platform_data = client->dev.platform_data; int chan; indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data)); if (!indio_dev) Loading @@ -169,11 +178,21 @@ static int max517_probe(struct i2c_client *client, /* establish that the iio_dev is a child of the i2c device */ indio_dev->dev.parent = &client->dev; /* reduced channel set for MAX517 */ if (id->driver_data == ID_MAX517) indio_dev->num_channels = 1; else switch (id->driver_data) { case ID_MAX521: indio_dev->num_channels = 8; break; case ID_MAX520: indio_dev->num_channels = 4; break; case ID_MAX519: case ID_MAX518: indio_dev->num_channels = 2; break; default: /* single channel for MAX517 */ indio_dev->num_channels = 1; break; } indio_dev->channels = max517_channels; indio_dev->modes = INDIO_DIRECT_MODE; indio_dev->info = &max517_info; Loading @@ -182,11 +201,11 @@ static int max517_probe(struct i2c_client *client, * Reference voltage on MAX518 and default is 5V, else take vref_mv * from platform_data */ if (id->driver_data == ID_MAX518 || !platform_data) { data->vref_mv[0] = data->vref_mv[1] = 5000; /* mV */ } else { data->vref_mv[0] = platform_data->vref_mv[0]; data->vref_mv[1] = platform_data->vref_mv[1]; for (chan = 0; chan < indio_dev->num_channels; chan++) { if (id->driver_data == ID_MAX518 || !platform_data) data->vref_mv[chan] = 5000; /* mV */ else data->vref_mv[chan] = platform_data->vref_mv[chan]; } return iio_device_register(indio_dev); Loading @@ -202,6 +221,8 @@ static const struct i2c_device_id max517_id[] = { { "max517", ID_MAX517 }, { "max518", ID_MAX518 }, { "max519", ID_MAX519 }, { "max520", ID_MAX520 }, { "max521", ID_MAX521 }, { } }; MODULE_DEVICE_TABLE(i2c, max517_id); Loading @@ -218,5 +239,5 @@ static struct i2c_driver max517_driver = { module_i2c_driver(max517_driver); MODULE_AUTHOR("Roland Stigge <stigge@antcom.de>"); MODULE_DESCRIPTION("MAX517/MAX518/MAX519 8-bit DAC"); MODULE_DESCRIPTION("MAX517/518/519/520/521 8-bit DAC"); MODULE_LICENSE("GPL"); include/linux/iio/dac/max517.h +1 −1 Original line number Diff line number Diff line Loading @@ -9,7 +9,7 @@ #define IIO_DAC_MAX517_H_ struct max517_platform_data { u16 vref_mv[2]; u16 vref_mv[8]; }; #endif /* IIO_DAC_MAX517_H_ */ Loading
drivers/iio/dac/Kconfig +8 −3 Original line number Diff line number Diff line Loading @@ -143,11 +143,16 @@ config AD7303 ad7303. config MAX517 tristate "Maxim MAX517/518/519 DAC driver" tristate "Maxim MAX517/518/519/520/521 DAC driver" depends on I2C help If you say yes here you get support for the Maxim chips MAX517, MAX518 and MAX519 (I2C 8-Bit DACs with rail-to-rail outputs). If you say yes here you get support for the following Maxim chips (I2C 8-Bit DACs with rail-to-rail outputs): MAX517 - Single channel, single reference MAX518 - Dual channel, ref=Vdd MAX519 - Dual channel, dual reference MAX520 - Quad channel, quad reference MAX521 - Octal channel, independent ref for ch0-3, shared ref for ch4-7 This driver can also be built as a module. If so, the module will be called max517. Loading
drivers/iio/dac/max517.c +33 −12 Original line number Diff line number Diff line Loading @@ -39,11 +39,13 @@ enum max517_device_ids { ID_MAX517, ID_MAX518, ID_MAX519, ID_MAX520, ID_MAX521, }; struct max517_data { struct i2c_client *client; unsigned short vref_mv[2]; unsigned short vref_mv[8]; }; /* Loading Loading @@ -149,7 +151,13 @@ static const struct iio_info max517_info = { static const struct iio_chan_spec max517_channels[] = { MAX517_CHANNEL(0), MAX517_CHANNEL(1) MAX517_CHANNEL(1), MAX517_CHANNEL(2), MAX517_CHANNEL(3), MAX517_CHANNEL(4), MAX517_CHANNEL(5), MAX517_CHANNEL(6), MAX517_CHANNEL(7), }; static int max517_probe(struct i2c_client *client, Loading @@ -158,6 +166,7 @@ static int max517_probe(struct i2c_client *client, struct max517_data *data; struct iio_dev *indio_dev; struct max517_platform_data *platform_data = client->dev.platform_data; int chan; indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data)); if (!indio_dev) Loading @@ -169,11 +178,21 @@ static int max517_probe(struct i2c_client *client, /* establish that the iio_dev is a child of the i2c device */ indio_dev->dev.parent = &client->dev; /* reduced channel set for MAX517 */ if (id->driver_data == ID_MAX517) indio_dev->num_channels = 1; else switch (id->driver_data) { case ID_MAX521: indio_dev->num_channels = 8; break; case ID_MAX520: indio_dev->num_channels = 4; break; case ID_MAX519: case ID_MAX518: indio_dev->num_channels = 2; break; default: /* single channel for MAX517 */ indio_dev->num_channels = 1; break; } indio_dev->channels = max517_channels; indio_dev->modes = INDIO_DIRECT_MODE; indio_dev->info = &max517_info; Loading @@ -182,11 +201,11 @@ static int max517_probe(struct i2c_client *client, * Reference voltage on MAX518 and default is 5V, else take vref_mv * from platform_data */ if (id->driver_data == ID_MAX518 || !platform_data) { data->vref_mv[0] = data->vref_mv[1] = 5000; /* mV */ } else { data->vref_mv[0] = platform_data->vref_mv[0]; data->vref_mv[1] = platform_data->vref_mv[1]; for (chan = 0; chan < indio_dev->num_channels; chan++) { if (id->driver_data == ID_MAX518 || !platform_data) data->vref_mv[chan] = 5000; /* mV */ else data->vref_mv[chan] = platform_data->vref_mv[chan]; } return iio_device_register(indio_dev); Loading @@ -202,6 +221,8 @@ static const struct i2c_device_id max517_id[] = { { "max517", ID_MAX517 }, { "max518", ID_MAX518 }, { "max519", ID_MAX519 }, { "max520", ID_MAX520 }, { "max521", ID_MAX521 }, { } }; MODULE_DEVICE_TABLE(i2c, max517_id); Loading @@ -218,5 +239,5 @@ static struct i2c_driver max517_driver = { module_i2c_driver(max517_driver); MODULE_AUTHOR("Roland Stigge <stigge@antcom.de>"); MODULE_DESCRIPTION("MAX517/MAX518/MAX519 8-bit DAC"); MODULE_DESCRIPTION("MAX517/518/519/520/521 8-bit DAC"); MODULE_LICENSE("GPL");
include/linux/iio/dac/max517.h +1 −1 Original line number Diff line number Diff line Loading @@ -9,7 +9,7 @@ #define IIO_DAC_MAX517_H_ struct max517_platform_data { u16 vref_mv[2]; u16 vref_mv[8]; }; #endif /* IIO_DAC_MAX517_H_ */