* [PATCH v3 1/2] dt-bindings: iio: frequency: add admfm2000
@ 2023-11-22 10:58 Kim Seer Paller
2023-11-22 10:58 ` [PATCH v3 2/2] iio: frequency: admfm2000: New driver Kim Seer Paller
2023-11-22 18:21 ` [PATCH v3 1/2] dt-bindings: iio: frequency: add admfm2000 Krzysztof Kozlowski
0 siblings, 2 replies; 7+ messages in thread
From: Kim Seer Paller @ 2023-11-22 10:58 UTC (permalink / raw)
Cc: Jonathan Cameron, Lars-Peter Clausen, Michael Hennerich,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Kim Seer Paller,
linux-iio, devicetree, linux-kernel, kernel test robot
Dual microwave down converter module with input RF and LO frequency
ranges from 0.5 to 32 GHz and an output IF frequency range from 0.1 to
8 GHz. It consists of a LNA, mixer, IF filter, DSA, and IF amplifier
for each down conversion path.
Signed-off-by: Kim Seer Paller <kimseer.paller@analog.com>
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202311220624.J7Nqg5h1-lkp@intel.com/
---
V2 -> V3: Adjusted indentation to resolve wrong indentation warning.
Changed node name to converter. Updated the descriptions to clarify
the properties.
V1 -> V2: Removed '|' after description. Specified the pins connected to
the GPIOs. Added additionalProperties: false. Changed node name to gpio.
Aligned < syntax with the previous syntax in the examples.
.../bindings/iio/frequency/adi,admfm2000.yaml | 140 ++++++++++++++++++
MAINTAINERS | 7 +
2 files changed, 147 insertions(+)
create mode 100644 Documentation/devicetree/bindings/iio/frequency/adi,admfm2000.yaml
diff --git a/Documentation/devicetree/bindings/iio/frequency/adi,admfm2000.yaml b/Documentation/devicetree/bindings/iio/frequency/adi,admfm2000.yaml
new file mode 100644
index 000000000..57844c8b7
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/frequency/adi,admfm2000.yaml
@@ -0,0 +1,140 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright 2023 Analog Devices Inc.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/frequency/adi,admfm2000.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ADMFM2000 Dual Microwave Down Converter
+
+maintainers:
+ - Kim Seer Paller <kimseer.paller@analog.com>
+
+description:
+ Dual microwave down converter module with input RF and LO frequency ranges
+ from 0.5 to 32 GHz and an output IF frequency range from 0.1 to 8 GHz.
+ It consists of a LNA, mixer, IF filter, DSA, and IF amplifier for each down
+ conversion path.
+
+properties:
+ compatible:
+ enum:
+ - adi,admfm2000
+
+ switch1-gpios:
+ items:
+ - description:
+ Setting B15 GPIO to high and B16 GPIO to low will result in channel 1
+ being in Direct IF mode.
+ - description:
+ Setting B15 GPIO to low and B16 GPIO to high will result in channel 1
+ being in Mixer mode.
+
+ switch2-gpios:
+ items:
+ - description:
+ Setting K14 GPIO to high and L14 GPIO to low will result in channel 2
+ being in Mixer mode.
+ - description:
+ Setting K14 GPIO to low and L14 GPIO to high will result in channel 2
+ being in Direct IF mode.
+
+ attenuation1-gpios:
+ description:
+ Must contain an array of 5 GPIO specifiers, referring to the GPIO pins
+ connected to the C14, C15, C16, D14, and D15. The DSA attenuation control
+ is by the logic level of the GPIO pins. All high at the logic level on
+ the GPIO pins give the minimum attenuation, 0 dB and all low for the
+ maximum attenuation, at 31 dB.
+ minItems: 5
+ maxItems: 5
+
+ attenuation2-gpios:
+ description:
+ Must contain an array of 5 GPIO specifiers, referring to the GPIO pins
+ connected to the L15, L16, M14, M15, and M16. The DSA attenuation control
+ is by the logic level of the GPIO pins. All high at the logic level on
+ the GPIO pins give the minimum attenuation, 0 dB and all low for the
+ maximum attenuation, at 31 dB.
+ minItems: 5
+ maxItems: 5
+
+ '#address-cells':
+ const: 1
+
+ '#size-cells':
+ const: 0
+
+patternProperties:
+ "^channel@[0-1]$":
+ type: object
+ description: Represents a channel of the device.
+
+ additionalProperties: false
+
+ properties:
+ reg:
+ description:
+ The channel number.
+ minimum: 0
+ maximum: 1
+
+ adi,mode:
+ description:
+ RF path selected for the channel.
+ 0 - Direct IF mode
+ 1 - Mixer mode
+ $ref: /schemas/types.yaml#/definitions/uint32
+ enum: [0, 1]
+
+ required:
+ - reg
+ - adi,mode
+
+required:
+ - compatible
+ - switch1-gpios
+ - switch2-gpios
+ - attenuation1-gpios
+ - attenuation2-gpios
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+ converter {
+ compatible = "adi,admfm2000";
+
+ switch1-gpios = <&gpio 1 GPIO_ACTIVE_LOW>,
+ <&gpio 2 GPIO_ACTIVE_HIGH>;
+
+ switch2-gpios = <&gpio 3 GPIO_ACTIVE_LOW>,
+ <&gpio 4 GPIO_ACTIVE_HIGH>;
+
+ attenuation1-gpios = <&gpio 17 GPIO_ACTIVE_LOW>,
+ <&gpio 22 GPIO_ACTIVE_LOW>,
+ <&gpio 23 GPIO_ACTIVE_LOW>,
+ <&gpio 24 GPIO_ACTIVE_LOW>,
+ <&gpio 25 GPIO_ACTIVE_LOW>;
+
+ attenuation2-gpios = <&gpio 0 GPIO_ACTIVE_LOW>,
+ <&gpio 5 GPIO_ACTIVE_LOW>,
+ <&gpio 6 GPIO_ACTIVE_LOW>,
+ <&gpio 16 GPIO_ACTIVE_LOW>,
+ <&gpio 26 GPIO_ACTIVE_LOW>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ channel@0 {
+ reg = <0>;
+ adi,mode = <1>;
+ };
+
+ channel@1 {
+ reg = <1>;
+ adi,mode = <1>;
+ };
+ };
+...
diff --git a/MAINTAINERS b/MAINTAINERS
index 0e79e24b6..f1692ec68 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1247,6 +1247,13 @@ W: https://ez.analog.com/linux-software-drivers
F: Documentation/devicetree/bindings/hwmon/adi,adm1177.yaml
F: drivers/hwmon/adm1177.c
+ANALOG DEVICES INC ADMFM2000 DRIVER
+M: Kim Seer Paller <kimseer.paller@analog.com>
+L: linux-iio@vger.kernel.org
+S: Supported
+W: https://ez.analog.com/linux-software-drivers
+F: Documentation/devicetree/bindings/iio/frequency/adi,admfm2000.yaml
+
ANALOG DEVICES INC ADMV1013 DRIVER
M: Antoniu Miclaus <antoniu.miclaus@analog.com>
L: linux-iio@vger.kernel.org
base-commit: c2d5304e6c648ebcf653bace7e51e0e6742e46c8
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH v3 2/2] iio: frequency: admfm2000: New driver 2023-11-22 10:58 [PATCH v3 1/2] dt-bindings: iio: frequency: add admfm2000 Kim Seer Paller @ 2023-11-22 10:58 ` Kim Seer Paller 2023-11-22 18:21 ` [PATCH v3 1/2] dt-bindings: iio: frequency: add admfm2000 Krzysztof Kozlowski 1 sibling, 0 replies; 7+ messages in thread From: Kim Seer Paller @ 2023-11-22 10:58 UTC (permalink / raw) Cc: Jonathan Cameron, Lars-Peter Clausen, Michael Hennerich, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Kim Seer Paller, linux-iio, devicetree, linux-kernel Dual microwave down converter module with input RF and LO frequency ranges from 0.5 to 32 GHz and an output IF frequency range from 0.1 to 8 GHz. It consists of a LNA, mixer, IF filter, DSA, and IF amplifier for each down conversion path. Signed-off-by: Kim Seer Paller <kimseer.paller@analog.com> --- V1 -> V3: No changes. MAINTAINERS | 1 + drivers/iio/frequency/Kconfig | 10 + drivers/iio/frequency/Makefile | 1 + drivers/iio/frequency/admfm2000.c | 309 ++++++++++++++++++++++++++++++ 4 files changed, 321 insertions(+) create mode 100644 drivers/iio/frequency/admfm2000.c diff --git a/MAINTAINERS b/MAINTAINERS index f1692ec68..d8630e490 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1253,6 +1253,7 @@ L: linux-iio@vger.kernel.org S: Supported W: https://ez.analog.com/linux-software-drivers F: Documentation/devicetree/bindings/iio/frequency/adi,admfm2000.yaml +F: drivers/iio/frequency/admfm2000.c ANALOG DEVICES INC ADMV1013 DRIVER M: Antoniu Miclaus <antoniu.miclaus@analog.com> diff --git a/drivers/iio/frequency/Kconfig b/drivers/iio/frequency/Kconfig index 9e85dfa58..c455be7d4 100644 --- a/drivers/iio/frequency/Kconfig +++ b/drivers/iio/frequency/Kconfig @@ -60,6 +60,16 @@ config ADF4377 To compile this driver as a module, choose M here: the module will be called adf4377. +config ADMFM2000 + tristate "Analog Devices ADMFM2000 Dual Microwave Down Converter" + depends on GPIOLIB + help + Say yes here to build support for Analog Devices ADMFM2000 Dual + Microwave Down Converter. + + To compile this driver as a module, choose M here: the + module will be called admfm2000. + config ADMV1013 tristate "Analog Devices ADMV1013 Microwave Upconverter" depends on SPI && COMMON_CLK diff --git a/drivers/iio/frequency/Makefile b/drivers/iio/frequency/Makefile index b616c29b4..70d0e0b70 100644 --- a/drivers/iio/frequency/Makefile +++ b/drivers/iio/frequency/Makefile @@ -8,6 +8,7 @@ obj-$(CONFIG_AD9523) += ad9523.o obj-$(CONFIG_ADF4350) += adf4350.o obj-$(CONFIG_ADF4371) += adf4371.o obj-$(CONFIG_ADF4377) += adf4377.o +obj-$(CONFIG_ADMFM2000) += admfm2000.o obj-$(CONFIG_ADMV1013) += admv1013.o obj-$(CONFIG_ADMV1014) += admv1014.o obj-$(CONFIG_ADMV4420) += admv4420.o diff --git a/drivers/iio/frequency/admfm2000.c b/drivers/iio/frequency/admfm2000.c new file mode 100644 index 000000000..e0b5edce7 --- /dev/null +++ b/drivers/iio/frequency/admfm2000.c @@ -0,0 +1,309 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * ADMFM2000 Dual Microwave Down Converter + * + * Copyright 2023 Analog Devices Inc. + */ + +#include <linux/device.h> +#include <linux/err.h> +#include <linux/gpio/consumer.h> +#include <linux/iio/iio.h> +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/of_device.h> +#include <linux/platform_device.h> +#include <linux/regulator/consumer.h> + +#define ADMFM2000_MIXER_MODE 0 +#define ADMFM2000_DIRECT_IF_MODE 1 +#define ADMF20000_DSA_GPIOS 5 +#define ADMF20000_MODE_GPIOS 2 +#define ADMF20000_MAX_GAIN 0 +#define ADMF20000_MIN_GAIN -31000 +#define ADMF20000_DEFAULT_GAIN -0x20 + +struct admfm2000_state { + struct mutex lock; /* protect sensor state */ + struct gpio_descs *sw_ch[2]; + struct gpio_descs *dsa_gpios[2]; + u32 gain[2]; +}; + +static int admfm2000_mode(struct iio_dev *indio_dev, u32 reg, u32 mode) +{ + struct admfm2000_state *st = iio_priv(indio_dev); + DECLARE_BITMAP(values, 2); + + switch (mode) { + case ADMFM2000_MIXER_MODE: + values[0] = (reg == 0) ? 1 : 2; + gpiod_set_array_value_cansleep(st->sw_ch[reg]->ndescs, + st->sw_ch[reg]->desc, + NULL, values); + break; + case ADMFM2000_DIRECT_IF_MODE: + values[0] = (reg == 0) ? 2 : 1; + gpiod_set_array_value_cansleep(st->sw_ch[reg]->ndescs, + st->sw_ch[reg]->desc, + NULL, values); + break; + default: + return -EINVAL; + } + + return 0; +} + +static int admfm2000_attenuation(struct iio_dev *indio_dev, u32 chan, + u32 value) +{ + struct admfm2000_state *st = iio_priv(indio_dev); + DECLARE_BITMAP(values, BITS_PER_TYPE(value)); + + values[0] = value; + + gpiod_set_array_value_cansleep(st->dsa_gpios[chan]->ndescs, + st->dsa_gpios[chan]->desc, + NULL, values); + return 0; +} + +static int admfm2000_read_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, int *val, + int *val2, long mask) +{ + struct admfm2000_state *st = iio_priv(indio_dev); + int gain; + + switch (mask) { + case IIO_CHAN_INFO_HARDWAREGAIN: + mutex_lock(&st->lock); + gain = ~(st->gain[chan->channel]) * -1000; + *val = gain / 1000; + *val2 = (gain % 1000) * 1000; + mutex_unlock(&st->lock); + + return IIO_VAL_INT_PLUS_MICRO_DB; + default: + return -EINVAL; + } +} + +static int admfm2000_write_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, int val, + int val2, long mask) +{ + struct admfm2000_state *st = iio_priv(indio_dev); + int gain, ret; + + if (val < 0) + gain = (val * 1000) - (val2 / 1000); + else + gain = (val * 1000) + (val2 / 1000); + + if (gain > ADMF20000_MAX_GAIN || gain < ADMF20000_MIN_GAIN) + return -EINVAL; + + switch (mask) { + case IIO_CHAN_INFO_HARDWAREGAIN: + mutex_lock(&st->lock); + st->gain[chan->channel] = ~((abs(gain) / 1000) & 0x1F); + + ret = admfm2000_attenuation(indio_dev, chan->channel, + st->gain[chan->channel]); + + mutex_unlock(&st->lock); + if (ret) + return ret; + break; + default: + return -EINVAL; + } + + return 0; +} + +static int admfm2000_write_raw_get_fmt(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + long mask) +{ + switch (mask) { + case IIO_CHAN_INFO_HARDWAREGAIN: + return IIO_VAL_INT_PLUS_MICRO_DB; + default: + return -EINVAL; + } +} + +static const struct iio_info admfm2000_info = { + .read_raw = &admfm2000_read_raw, + .write_raw = &admfm2000_write_raw, + .write_raw_get_fmt = &admfm2000_write_raw_get_fmt, +}; + +#define ADMFM2000_CHAN(_channel) { \ + .type = IIO_VOLTAGE, \ + .output = 1, \ + .indexed = 1, \ + .channel = _channel, \ + .info_mask_separate = BIT(IIO_CHAN_INFO_HARDWAREGAIN), \ +} + +static const struct iio_chan_spec admfm2000_channels[] = { + ADMFM2000_CHAN(0), + ADMFM2000_CHAN(1), +}; + +static int admfm2000_channel_config(struct admfm2000_state *st, + struct iio_dev *indio_dev) +{ + struct platform_device *pdev = to_platform_device(indio_dev->dev.parent); + struct device *dev = &pdev->dev; + struct fwnode_handle *child; + u32 reg, mode; + int ret; + + device_for_each_child_node(dev, child) { + ret = fwnode_property_read_u32(child, "reg", ®); + if (ret) { + fwnode_handle_put(child); + return dev_err_probe(dev, ret, + "Failed to get reg property\n"); + } + + if (reg >= indio_dev->num_channels) { + fwnode_handle_put(child); + return dev_err_probe(dev, -EINVAL, "reg bigger than: %d\n", + indio_dev->num_channels); + } + + ret = fwnode_property_read_u32(child, "adi,mode", &mode); + if (ret) { + fwnode_handle_put(child); + return dev_err_probe(dev, ret, + "Failed to get mode property\n"); + } + + if (mode >= 2) { + fwnode_handle_put(child); + return dev_err_probe(dev, -EINVAL, "mode bigger than: 1\n"); + } + + ret = admfm2000_mode(indio_dev, reg, mode); + if (ret) { + fwnode_handle_put(child); + return ret; + } + } + + return 0; +} + +static int admfm2000_setup(struct admfm2000_state *st, + struct iio_dev *indio_dev) +{ + struct platform_device *pdev = to_platform_device(indio_dev->dev.parent); + struct device *dev = &pdev->dev; + + st->sw_ch[0] = devm_gpiod_get_array(dev, "switch1", GPIOD_OUT_LOW); + if (IS_ERR(st->sw_ch[0])) + return dev_err_probe(dev, PTR_ERR(st->sw_ch[0]), + "Failed to get gpios\n"); + + if (st->sw_ch[0]->ndescs != ADMF20000_MODE_GPIOS) { + dev_err_probe(dev, -ENODEV, "%d GPIOs needed to operate\n", + ADMF20000_MODE_GPIOS); + return -ENODEV; + } + + st->sw_ch[1] = devm_gpiod_get_array(dev, "switch2", GPIOD_OUT_LOW); + if (IS_ERR(st->sw_ch[1])) + return dev_err_probe(dev, PTR_ERR(st->sw_ch[1]), + "Failed to get gpios\n"); + + if (st->sw_ch[1]->ndescs != ADMF20000_MODE_GPIOS) { + dev_err_probe(dev, -ENODEV, "%d GPIOs needed to operate\n", + ADMF20000_MODE_GPIOS); + return -ENODEV; + } + + st->dsa_gpios[0] = devm_gpiod_get_array(dev, "attenuation1", + GPIOD_OUT_LOW); + if (IS_ERR(st->dsa_gpios[0])) + return dev_err_probe(dev, PTR_ERR(st->dsa_gpios[0]), + "Failed to get gpios\n"); + + if (st->dsa_gpios[0]->ndescs != ADMF20000_DSA_GPIOS) { + dev_err_probe(dev, -ENODEV, "%d GPIOs needed to operate\n", + ADMF20000_DSA_GPIOS); + return -ENODEV; + } + + st->dsa_gpios[1] = devm_gpiod_get_array(dev, "attenuation2", + GPIOD_OUT_LOW); + if (IS_ERR(st->dsa_gpios[1])) + return dev_err_probe(dev, PTR_ERR(st->dsa_gpios[1]), + "Failed to get gpios\n"); + + if (st->dsa_gpios[1]->ndescs != ADMF20000_DSA_GPIOS) { + dev_err_probe(dev, -ENODEV, "%d GPIOs needed to operate\n", + ADMF20000_DSA_GPIOS); + } + + return 0; +} + +static int admfm2000_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct iio_dev *indio_dev; + struct admfm2000_state *st; + int ret; + + indio_dev = devm_iio_device_alloc(dev, sizeof(*st)); + if (!indio_dev) + return -ENOMEM; + + st = iio_priv(indio_dev); + + indio_dev->name = "admfm2000"; + indio_dev->num_channels = ARRAY_SIZE(admfm2000_channels); + indio_dev->channels = admfm2000_channels; + indio_dev->info = &admfm2000_info; + indio_dev->modes = INDIO_DIRECT_MODE; + + st->gain[0] = ADMF20000_DEFAULT_GAIN; + st->gain[1] = ADMF20000_DEFAULT_GAIN; + + mutex_init(&st->lock); + + ret = admfm2000_setup(st, indio_dev); + if (ret) + return ret; + + ret = admfm2000_channel_config(st, indio_dev); + if (ret) + return ret; + + return devm_iio_device_register(dev, indio_dev); +} + +static const struct of_device_id admfm2000_of_match[] = { + { .compatible = "adi,admfm2000" }, + { } +}; +MODULE_DEVICE_TABLE(of, admfm2000_of_match); + +static struct platform_driver admfm2000_driver = { + .driver = { + .name = "admfm2000", + .of_match_table = admfm2000_of_match, + }, + .probe = admfm2000_probe, +}; +module_platform_driver(admfm2000_driver); + +MODULE_AUTHOR("Kim Seer Paller <kimseer.paller@analog.com>"); +MODULE_DESCRIPTION("ADMFM2000 Dual Microwave Down Converter"); +MODULE_LICENSE("GPL"); -- 2.34.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v3 1/2] dt-bindings: iio: frequency: add admfm2000 2023-11-22 10:58 [PATCH v3 1/2] dt-bindings: iio: frequency: add admfm2000 Kim Seer Paller 2023-11-22 10:58 ` [PATCH v3 2/2] iio: frequency: admfm2000: New driver Kim Seer Paller @ 2023-11-22 18:21 ` Krzysztof Kozlowski 2023-11-23 6:13 ` Paller, Kim Seer 1 sibling, 1 reply; 7+ messages in thread From: Krzysztof Kozlowski @ 2023-11-22 18:21 UTC (permalink / raw) To: Kim Seer Paller Cc: Jonathan Cameron, Lars-Peter Clausen, Michael Hennerich, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-iio, devicetree, linux-kernel, kernel test robot On 22/11/2023 11:58, Kim Seer Paller wrote: > Dual microwave down converter module with input RF and LO frequency > ranges from 0.5 to 32 GHz and an output IF frequency range from 0.1 to > 8 GHz. It consists of a LNA, mixer, IF filter, DSA, and IF amplifier > for each down conversion path. > > Signed-off-by: Kim Seer Paller <kimseer.paller@analog.com> > Reported-by: kernel test robot <lkp@intel.com> > Closes: https://lore.kernel.org/oe-kbuild-all/202311220624.J7Nqg5h1-lkp@intel.com/ Drop these two tags. They are not valid. > --- > V2 -> V3: Adjusted indentation to resolve wrong indentation warning. > Changed node name to converter. Updated the descriptions to clarify > the properties. > +title: ADMFM2000 Dual Microwave Down Converter > + > +maintainers: > + - Kim Seer Paller <kimseer.paller@analog.com> > + > +description: > + Dual microwave down converter module with input RF and LO frequency ranges > + from 0.5 to 32 GHz and an output IF frequency range from 0.1 to 8 GHz. > + It consists of a LNA, mixer, IF filter, DSA, and IF amplifier for each down > + conversion path. > + > +properties: > + compatible: > + enum: > + - adi,admfm2000 > + > + switch1-gpios: > + items: > + - description: > + Setting B15 GPIO to high and B16 GPIO to low will result in channel 1 > + being in Direct IF mode. > + - description: > + Setting B15 GPIO to low and B16 GPIO to high will result in channel 1 > + being in Mixer mode. This still does not tell which one is B15 and which is B16. I am asking this for third time. items: - description: B15 GPIO, when high (and B16 low) channel 1 is in Direct IF mode Best regards, Krzysztof ^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [PATCH v3 1/2] dt-bindings: iio: frequency: add admfm2000 2023-11-22 18:21 ` [PATCH v3 1/2] dt-bindings: iio: frequency: add admfm2000 Krzysztof Kozlowski @ 2023-11-23 6:13 ` Paller, Kim Seer 2023-11-23 7:20 ` Krzysztof Kozlowski 0 siblings, 1 reply; 7+ messages in thread From: Paller, Kim Seer @ 2023-11-23 6:13 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: Jonathan Cameron, Lars-Peter Clausen, Hennerich, Michael, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, kernel test robot > > --- > > V2 -> V3: Adjusted indentation to resolve wrong indentation warning. > > Changed node name to converter. Updated the descriptions to clarify > > the properties. > > > > +title: ADMFM2000 Dual Microwave Down Converter > > + > > +maintainers: > > + - Kim Seer Paller <kimseer.paller@analog.com> > > + > > +description: > > + Dual microwave down converter module with input RF and LO frequency > ranges > > + from 0.5 to 32 GHz and an output IF frequency range from 0.1 to 8 GHz. > > + It consists of a LNA, mixer, IF filter, DSA, and IF amplifier for each down > > + conversion path. > > + > > +properties: > > + compatible: > > + enum: > > + - adi,admfm2000 > > + > > + switch1-gpios: > > + items: > > + - description: > > + Setting B15 GPIO to high and B16 GPIO to low will result in channel 1 > > + being in Direct IF mode. > > + - description: > > + Setting B15 GPIO to low and B16 GPIO to high will result in channel 1 > > + being in Mixer mode. > > This still does not tell which one is B15 and which is B16. I am asking > this for third time. > > items: > - description: B15 GPIO, when high (and B16 low) channel 1 is in > Direct IF mode I understand now, thank you. I was also wondering if this applies to the attenuation-gpios, or if I should keep it as is? Best regards, Kim ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v3 1/2] dt-bindings: iio: frequency: add admfm2000 2023-11-23 6:13 ` Paller, Kim Seer @ 2023-11-23 7:20 ` Krzysztof Kozlowski 2023-11-23 8:24 ` Paller, Kim Seer 0 siblings, 1 reply; 7+ messages in thread From: Krzysztof Kozlowski @ 2023-11-23 7:20 UTC (permalink / raw) To: Paller, Kim Seer Cc: Jonathan Cameron, Lars-Peter Clausen, Hennerich, Michael, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, kernel test robot On 23/11/2023 07:13, Paller, Kim Seer wrote: >>> --- >>> V2 -> V3: Adjusted indentation to resolve wrong indentation warning. >>> Changed node name to converter. Updated the descriptions to clarify >>> the properties. >> >> >>> +title: ADMFM2000 Dual Microwave Down Converter >>> + >>> +maintainers: >>> + - Kim Seer Paller <kimseer.paller@analog.com> >>> + >>> +description: >>> + Dual microwave down converter module with input RF and LO frequency >> ranges >>> + from 0.5 to 32 GHz and an output IF frequency range from 0.1 to 8 GHz. >>> + It consists of a LNA, mixer, IF filter, DSA, and IF amplifier for each down >>> + conversion path. >>> + >>> +properties: >>> + compatible: >>> + enum: >>> + - adi,admfm2000 >>> + >>> + switch1-gpios: >>> + items: >>> + - description: >>> + Setting B15 GPIO to high and B16 GPIO to low will result in channel 1 >>> + being in Direct IF mode. >>> + - description: >>> + Setting B15 GPIO to low and B16 GPIO to high will result in channel 1 >>> + being in Mixer mode. >> >> This still does not tell which one is B15 and which is B16. I am asking >> this for third time. >> >> items: >> - description: B15 GPIO, when high (and B16 low) channel 1 is in >> Direct IF mode > > I understand now, thank you. I was also wondering if this applies to the > attenuation-gpios, or if I should keep it as is? Yes, something like this applies to all your properties with multiple entries. You need to define the order. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [PATCH v3 1/2] dt-bindings: iio: frequency: add admfm2000 2023-11-23 7:20 ` Krzysztof Kozlowski @ 2023-11-23 8:24 ` Paller, Kim Seer 2023-11-23 8:32 ` Krzysztof Kozlowski 0 siblings, 1 reply; 7+ messages in thread From: Paller, Kim Seer @ 2023-11-23 8:24 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: Jonathan Cameron, Lars-Peter Clausen, Hennerich, Michael, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, kernel test robot > >>> --- > >>> V2 -> V3: Adjusted indentation to resolve wrong indentation warning. > >>> Changed node name to converter. Updated the descriptions to clarify > >>> the properties. > >> > >> > >>> +title: ADMFM2000 Dual Microwave Down Converter > >>> + > >>> +maintainers: > >>> + - Kim Seer Paller <kimseer.paller@analog.com> > >>> + > >>> +description: > >>> + Dual microwave down converter module with input RF and LO frequency > >> ranges > >>> + from 0.5 to 32 GHz and an output IF frequency range from 0.1 to 8 GHz. > >>> + It consists of a LNA, mixer, IF filter, DSA, and IF amplifier for each down > >>> + conversion path. > >>> + > >>> +properties: > >>> + compatible: > >>> + enum: > >>> + - adi,admfm2000 > >>> + > >>> + switch1-gpios: > >>> + items: > >>> + - description: > >>> + Setting B15 GPIO to high and B16 GPIO to low will result in channel > 1 > >>> + being in Direct IF mode. > >>> + - description: > >>> + Setting B15 GPIO to low and B16 GPIO to high will result in channel > 1 > >>> + being in Mixer mode. > >> > >> This still does not tell which one is B15 and which is B16. I am asking > >> this for third time. > >> > >> items: > >> - description: B15 GPIO, when high (and B16 low) channel 1 is in > >> Direct IF mode > > > > I understand now, thank you. I was also wondering if this applies to the > > attenuation-gpios, or if I should keep it as is? > > Yes, something like this applies to all your properties with multiple > entries. You need to define the order. Before I send a new patch/commit, could you please check this one if it is properly defined? attenuation1-gpios: items: - description: C14 GPIO, when low (and C15, C16, D14, D15 high) channel 1 attenuation is 1 dB. - description: C15 GPIO, when low (and C14, C16, D14, D15 high) channel 1 attenuation is 2 dB. - description: C16 GPIO, when low (and C14, C15, D14, D15 high) channel 1 attenuation is 4 dB. - description: D14 GPIO, when low (and C14, C15, C16, D15 high) channel 1 attenuation is 8 dB. - description: D15 GPIO, when low (and C14, C15, C16, D14 high) channel 1 attenuation is 16 dB. Thanks, Kim ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v3 1/2] dt-bindings: iio: frequency: add admfm2000 2023-11-23 8:24 ` Paller, Kim Seer @ 2023-11-23 8:32 ` Krzysztof Kozlowski 0 siblings, 0 replies; 7+ messages in thread From: Krzysztof Kozlowski @ 2023-11-23 8:32 UTC (permalink / raw) To: Paller, Kim Seer Cc: Jonathan Cameron, Lars-Peter Clausen, Hennerich, Michael, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, kernel test robot On 23/11/2023 09:24, Paller, Kim Seer wrote: >>>>> --- >>>>> V2 -> V3: Adjusted indentation to resolve wrong indentation warning. >>>>> Changed node name to converter. Updated the descriptions to clarify >>>>> the properties. >>>> >>>> >>>>> +title: ADMFM2000 Dual Microwave Down Converter >>>>> + >>>>> +maintainers: >>>>> + - Kim Seer Paller <kimseer.paller@analog.com> >>>>> + >>>>> +description: >>>>> + Dual microwave down converter module with input RF and LO frequency >>>> ranges >>>>> + from 0.5 to 32 GHz and an output IF frequency range from 0.1 to 8 GHz. >>>>> + It consists of a LNA, mixer, IF filter, DSA, and IF amplifier for each down >>>>> + conversion path. >>>>> + >>>>> +properties: >>>>> + compatible: >>>>> + enum: >>>>> + - adi,admfm2000 >>>>> + >>>>> + switch1-gpios: >>>>> + items: >>>>> + - description: >>>>> + Setting B15 GPIO to high and B16 GPIO to low will result in channel >> 1 >>>>> + being in Direct IF mode. >>>>> + - description: >>>>> + Setting B15 GPIO to low and B16 GPIO to high will result in channel >> 1 >>>>> + being in Mixer mode. >>>> >>>> This still does not tell which one is B15 and which is B16. I am asking >>>> this for third time. >>>> >>>> items: >>>> - description: B15 GPIO, when high (and B16 low) channel 1 is in >>>> Direct IF mode >>> >>> I understand now, thank you. I was also wondering if this applies to the >>> attenuation-gpios, or if I should keep it as is? >> >> Yes, something like this applies to all your properties with multiple >> entries. You need to define the order. > > Before I send a new patch/commit, could you please check this one if it is > properly defined? > > attenuation1-gpios: > items: > - description: C14 GPIO, when low (and C15, C16, D14, D15 high) > channel 1 attenuation is 1 dB. > - description: C15 GPIO, when low (and C14, C16, D14, D15 high) > channel 1 attenuation is 2 dB. > - description: C16 GPIO, when low (and C14, C15, D14, D15 high) > channel 1 attenuation is 4 dB. > - description: D14 GPIO, when low (and C14, C15, C16, D15 high) > channel 1 attenuation is 8 dB. > - description: D15 GPIO, when low (and C14, C15, C16, D14 high) > channel 1 attenuation is 16 dB. This actually could be written in easier way like: attenuation1-gpios: description: | Choice of attenuation: C14 C15 ...... 1 0 0 0 - 1 dB 0 1 0 0 - 2 dB ... items: - description: C14 GPIO - description: C15 GPIO - description: C16 GPIO - description: D14 GPIO - description: D15 GPIO or whatever is easy to understand. The point is that you must define the order of GPIOs and explain their meaning. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-11-23 8:32 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-11-22 10:58 [PATCH v3 1/2] dt-bindings: iio: frequency: add admfm2000 Kim Seer Paller 2023-11-22 10:58 ` [PATCH v3 2/2] iio: frequency: admfm2000: New driver Kim Seer Paller 2023-11-22 18:21 ` [PATCH v3 1/2] dt-bindings: iio: frequency: add admfm2000 Krzysztof Kozlowski 2023-11-23 6:13 ` Paller, Kim Seer 2023-11-23 7:20 ` Krzysztof Kozlowski 2023-11-23 8:24 ` Paller, Kim Seer 2023-11-23 8:32 ` Krzysztof Kozlowski
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).