Add support to mcp4921 which has only one output channel.
Signed-off-by: Kory Maincent <[email protected]>
---
drivers/iio/dac/mcp4922.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/dac/mcp4922.c b/drivers/iio/dac/mcp4922.c
index cb9e60e71b91..0d41c0f25515 100644
--- a/drivers/iio/dac/mcp4922.c
+++ b/drivers/iio/dac/mcp4922.c
@@ -17,10 +17,12 @@
#include <linux/bitops.h>
#define MCP4922_NUM_CHANNELS 2
+#define MCP4921_NUM_CHANNELS 1
enum mcp4922_supported_device_ids {
ID_MCP4902,
ID_MCP4912,
+ ID_MCP4921,
ID_MCP4922,
};
@@ -105,9 +107,10 @@ static int mcp4922_write_raw(struct iio_dev *indio_dev,
}
}
-static const struct iio_chan_spec mcp4922_channels[3][MCP4922_NUM_CHANNELS] = {
+static const struct iio_chan_spec mcp4922_channels[4][MCP4922_NUM_CHANNELS] = {
[ID_MCP4902] = { MCP4922_CHAN(0, 8), MCP4922_CHAN(1, 8) },
[ID_MCP4912] = { MCP4922_CHAN(0, 10), MCP4922_CHAN(1, 10) },
+ [ID_MCP4921] = { MCP4922_CHAN(0, 12), {} },
[ID_MCP4922] = { MCP4922_CHAN(0, 12), MCP4922_CHAN(1, 12) },
};
@@ -154,7 +157,10 @@ static int mcp4922_probe(struct spi_device *spi)
indio_dev->info = &mcp4922_info;
indio_dev->modes = INDIO_DIRECT_MODE;
indio_dev->channels = mcp4922_channels[id->driver_data];
- indio_dev->num_channels = MCP4922_NUM_CHANNELS;
+ if (id->driver_data == ID_MCP4921)
+ indio_dev->num_channels = MCP4921_NUM_CHANNELS;
+ else
+ indio_dev->num_channels = MCP4922_NUM_CHANNELS;
indio_dev->name = id->name;
ret = iio_device_register(indio_dev);
@@ -185,6 +191,7 @@ static void mcp4922_remove(struct spi_device *spi)
static const struct spi_device_id mcp4922_id[] = {
{"mcp4902", ID_MCP4902},
{"mcp4912", ID_MCP4912},
+ {"mcp4921", ID_MCP4921},
{"mcp4922", ID_MCP4922},
{}
};
--
2.25.1
Add device tree bindings for the MCP4921 DAC.
Signed-off-by: Kory Maincent <[email protected]>
---
Documentation/devicetree/bindings/iio/dac/microchip,mcp4922.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/iio/dac/microchip,mcp4922.yaml b/Documentation/devicetree/bindings/iio/dac/microchip,mcp4922.yaml
index 12a14b3f36cb..4c430abcdbf9 100644
--- a/Documentation/devicetree/bindings/iio/dac/microchip,mcp4922.yaml
+++ b/Documentation/devicetree/bindings/iio/dac/microchip,mcp4922.yaml
@@ -15,6 +15,7 @@ properties:
enum:
- microchip,mcp4902
- microchip,mcp4912
+ - microchip,mcp4921
- microchip,mcp4922
reg:
--
2.25.1
On 24/06/2022 11:56, Kory Maincent wrote:
> Add device tree bindings for the MCP4921 DAC.
>
> Signed-off-by: Kory Maincent <[email protected]>
> ---
> Documentation/devicetree/bindings/iio/dac/microchip,mcp4922.yaml | 1 +
> 1 file changed, 1 insertion(+)
>
Reviewed-by: Krzysztof Kozlowski <[email protected]>
Best regards,
Krzysztof
Hi Kory,
[email protected] wrote on Fri, 24 Jun 2022 11:56:17 +0200:
> Add support to mcp4921 which has only one output channel.
>
> Signed-off-by: Kory Maincent <[email protected]>
Reviewed-by: Miquel Raynal <[email protected]>
> ---
> drivers/iio/dac/mcp4922.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iio/dac/mcp4922.c b/drivers/iio/dac/mcp4922.c
> index cb9e60e71b91..0d41c0f25515 100644
> --- a/drivers/iio/dac/mcp4922.c
> +++ b/drivers/iio/dac/mcp4922.c
> @@ -17,10 +17,12 @@
> #include <linux/bitops.h>
>
> #define MCP4922_NUM_CHANNELS 2
> +#define MCP4921_NUM_CHANNELS 1
>
> enum mcp4922_supported_device_ids {
> ID_MCP4902,
> ID_MCP4912,
> + ID_MCP4921,
> ID_MCP4922,
> };
>
> @@ -105,9 +107,10 @@ static int mcp4922_write_raw(struct iio_dev *indio_dev,
> }
> }
>
> -static const struct iio_chan_spec mcp4922_channels[3][MCP4922_NUM_CHANNELS] = {
> +static const struct iio_chan_spec mcp4922_channels[4][MCP4922_NUM_CHANNELS] = {
> [ID_MCP4902] = { MCP4922_CHAN(0, 8), MCP4922_CHAN(1, 8) },
> [ID_MCP4912] = { MCP4922_CHAN(0, 10), MCP4922_CHAN(1, 10) },
> + [ID_MCP4921] = { MCP4922_CHAN(0, 12), {} },
> [ID_MCP4922] = { MCP4922_CHAN(0, 12), MCP4922_CHAN(1, 12) },
> };
>
> @@ -154,7 +157,10 @@ static int mcp4922_probe(struct spi_device *spi)
> indio_dev->info = &mcp4922_info;
> indio_dev->modes = INDIO_DIRECT_MODE;
> indio_dev->channels = mcp4922_channels[id->driver_data];
> - indio_dev->num_channels = MCP4922_NUM_CHANNELS;
> + if (id->driver_data == ID_MCP4921)
> + indio_dev->num_channels = MCP4921_NUM_CHANNELS;
> + else
> + indio_dev->num_channels = MCP4922_NUM_CHANNELS;
> indio_dev->name = id->name;
>
> ret = iio_device_register(indio_dev);
> @@ -185,6 +191,7 @@ static void mcp4922_remove(struct spi_device *spi)
> static const struct spi_device_id mcp4922_id[] = {
> {"mcp4902", ID_MCP4902},
> {"mcp4912", ID_MCP4912},
> + {"mcp4921", ID_MCP4921},
> {"mcp4922", ID_MCP4922},
> {}
> };
Thanks,
Miquèl
On Fri, 24 Jun 2022 11:56:17 +0200
Kory Maincent <[email protected]> wrote:
> Add support to mcp4921 which has only one output channel.
>
> Signed-off-by: Kory Maincent <[email protected]>
Obviously not been on the list long, but as it 'seems' totally trivial
and has already gottten some review I'll queue it up now anyway.
Series applied to the togreg branch of iio.git.
Thanks,
Jonathan
> ---
> drivers/iio/dac/mcp4922.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iio/dac/mcp4922.c b/drivers/iio/dac/mcp4922.c
> index cb9e60e71b91..0d41c0f25515 100644
> --- a/drivers/iio/dac/mcp4922.c
> +++ b/drivers/iio/dac/mcp4922.c
> @@ -17,10 +17,12 @@
> #include <linux/bitops.h>
>
> #define MCP4922_NUM_CHANNELS 2
> +#define MCP4921_NUM_CHANNELS 1
>
> enum mcp4922_supported_device_ids {
> ID_MCP4902,
> ID_MCP4912,
> + ID_MCP4921,
> ID_MCP4922,
> };
>
> @@ -105,9 +107,10 @@ static int mcp4922_write_raw(struct iio_dev *indio_dev,
> }
> }
>
> -static const struct iio_chan_spec mcp4922_channels[3][MCP4922_NUM_CHANNELS] = {
> +static const struct iio_chan_spec mcp4922_channels[4][MCP4922_NUM_CHANNELS] = {
> [ID_MCP4902] = { MCP4922_CHAN(0, 8), MCP4922_CHAN(1, 8) },
> [ID_MCP4912] = { MCP4922_CHAN(0, 10), MCP4922_CHAN(1, 10) },
> + [ID_MCP4921] = { MCP4922_CHAN(0, 12), {} },
> [ID_MCP4922] = { MCP4922_CHAN(0, 12), MCP4922_CHAN(1, 12) },
> };
>
> @@ -154,7 +157,10 @@ static int mcp4922_probe(struct spi_device *spi)
> indio_dev->info = &mcp4922_info;
> indio_dev->modes = INDIO_DIRECT_MODE;
> indio_dev->channels = mcp4922_channels[id->driver_data];
> - indio_dev->num_channels = MCP4922_NUM_CHANNELS;
> + if (id->driver_data == ID_MCP4921)
> + indio_dev->num_channels = MCP4921_NUM_CHANNELS;
> + else
> + indio_dev->num_channels = MCP4922_NUM_CHANNELS;
> indio_dev->name = id->name;
>
> ret = iio_device_register(indio_dev);
> @@ -185,6 +191,7 @@ static void mcp4922_remove(struct spi_device *spi)
> static const struct spi_device_id mcp4922_id[] = {
> {"mcp4902", ID_MCP4902},
> {"mcp4912", ID_MCP4912},
> + {"mcp4921", ID_MCP4921},
> {"mcp4922", ID_MCP4922},
> {}
> };