.../bindings/iio/adc/renesas,rzn1-adc.yaml | 111 ++++ MAINTAINERS | 7 + arch/arm/boot/dts/renesas/r9a06g032.dtsi | 10 + drivers/iio/adc/Kconfig | 10 + drivers/iio/adc/Makefile | 1 + drivers/iio/adc/rzn1-adc.c | 490 ++++++++++++++++++ 6 files changed, 629 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/adc/renesas,rzn1-adc.yaml create mode 100644 drivers/iio/adc/rzn1-adc.c
Hi,
The Renesas RZ/N1 ADC controller is the ADC controller available in the
Renesas RZ/N1 SoCs family.
It can use up to two internal ADC cores (ADC1 and ADC2) those internal
cores are handled through ADC controller virtual channels.
Best regards,
Herve Codina
Changes v2 -> v3:
v2: https://lore.kernel.org/lkml/20251029144644.667561-1-herve.codina@bootlin.com/
Patch 1:
- Add 'Reviewed-by: Rob Herring'.
Patch 2:
- Add missing header files.
- Use fixed-width values for register definitions.
- Split comments and remove a redundant 'else'.
- Return the error in the 'switch case' default statement.
- Leave a trailing comma in struct iio_info.
- Move *_vref_mv to *_vref_mV.
- Split the DEFINE_RUNTIME_DEV_PM_OPS().
- Update error code handling in rzn1_adc_core_get_regulators().
- Pass rzn1_adc in platform_set_drvdata(), update suspend/resume
function accordingly.
- Add 'Reviewed-by: Nuno Sá'
Patches 3 and 4:
No change.
Changes v1 -> v2:
v1: https://lore.kernel.org/lkml/20251015142816.1274605-1-herve.codina@bootlin.com/
Rebase on top of v6.18-rc3 to have commit db82b8dbf5f0 ("PM: runtime:
Fix conditional guard definitions")
Patch 1:
- Remove unneeded 'dependencies' part.
- Rename "adc-clk" clock to "adc".
- Move 'additionalProperties: false' just before the example.
- Use const instead of enum for the "renesas,r9a06g032-adc"
compatible string.
- Fix the ACD typo.
Patch 2:
- Fix the ACD typo.
- Rename "adc-clk" clock to "adc".
- Update included headers and sort them.
- Align register definitions at the same column.
- Inline the FIELD_GET() instead of having macros.
- Introduce RZN1_ADC_NO_CHANNEL
- Get Vref voltage value at probe().
- Remove the bitmap in rzn1_adc_set_iio_dev_channels().
- Use dev_err_probe() in rzn1_adc_set_iio_dev_channels().
- Use auto-cleanup variant for PM runtime "resume and get".
- Use scoped_guard() for mutex.
- Use devm_mutex_init().
- Use the fixed "rzn1-adc" string for indio_dev->name.
- Use DEFINE_RUNTIME_DEV_PM_OPS().
- Fix rzn1_adc_of_match table and remove of_match_ptr().
- Add a comment related to decoupling between IIO chans and ADC1 or
ADC2 core chans
- Update and add several comments related to ADC core usage and the
relationship with ADC core regulator presence.
- Remove clocks and regulators handling from PM runtime
suspend()/remove().
- Simplify the driver removing the no more relevant struct
rzn1_adc_core.
Patch 3:
- Rename "adc-clk" clock to "adc".
- Add 'Reviewed-by: Wolfram Sang'
Patch 4
- Removed the linux-iio list
Herve Codina (Schneider Electric) (4):
dt-bindings: iio: adc: Add the Renesas RZ/N1 ADC
iio: adc: Add support for the Renesas RZ/N1 ADC
ARM: dts: renesas: r9a06g032: Add the ADC device
MAINTAINERS: Add the Renesas RZ/N1 ADC driver entry
.../bindings/iio/adc/renesas,rzn1-adc.yaml | 111 ++++
MAINTAINERS | 7 +
arch/arm/boot/dts/renesas/r9a06g032.dtsi | 10 +
drivers/iio/adc/Kconfig | 10 +
drivers/iio/adc/Makefile | 1 +
drivers/iio/adc/rzn1-adc.c | 490 ++++++++++++++++++
6 files changed, 629 insertions(+)
create mode 100644 Documentation/devicetree/bindings/iio/adc/renesas,rzn1-adc.yaml
create mode 100644 drivers/iio/adc/rzn1-adc.c
--
2.51.0
On Mon, 3 Nov 2025 15:18:30 +0100
"Herve Codina (Schneider Electric)" <herve.codina@bootlin.com> wrote:
> Hi,
>
> The Renesas RZ/N1 ADC controller is the ADC controller available in the
> Renesas RZ/N1 SoCs family.
>
> It can use up to two internal ADC cores (ADC1 and ADC2) those internal
> cores are handled through ADC controller virtual channels.
>
> Best regards,
> Herve Codina
>
> Changes v2 -> v3:
>
Applied 1-2,4 to the togreg branch of iio.git.
A little bit of merge noise due to another Renesas ADC driver being
added recently, but only in Makefile / Kconfig so hopefully I didn't mess
up merging them.
> v2: https://lore.kernel.org/lkml/20251029144644.667561-1-herve.codina@bootlin.com/
>
> Patch 1:
> - Add 'Reviewed-by: Rob Herring'.
>
> Patch 2:
> - Add missing header files.
> - Use fixed-width values for register definitions.
> - Split comments and remove a redundant 'else'.
> - Return the error in the 'switch case' default statement.
> - Leave a trailing comma in struct iio_info.
> - Move *_vref_mv to *_vref_mV.
> - Split the DEFINE_RUNTIME_DEV_PM_OPS().
> - Update error code handling in rzn1_adc_core_get_regulators().
> - Pass rzn1_adc in platform_set_drvdata(), update suspend/resume
> function accordingly.
> - Add 'Reviewed-by: Nuno Sá'
>
> Patches 3 and 4:
> No change.
>
> Changes v1 -> v2:
>
> v1: https://lore.kernel.org/lkml/20251015142816.1274605-1-herve.codina@bootlin.com/
>
> Rebase on top of v6.18-rc3 to have commit db82b8dbf5f0 ("PM: runtime:
> Fix conditional guard definitions")
>
> Patch 1:
> - Remove unneeded 'dependencies' part.
> - Rename "adc-clk" clock to "adc".
> - Move 'additionalProperties: false' just before the example.
> - Use const instead of enum for the "renesas,r9a06g032-adc"
> compatible string.
> - Fix the ACD typo.
>
> Patch 2:
> - Fix the ACD typo.
> - Rename "adc-clk" clock to "adc".
> - Update included headers and sort them.
> - Align register definitions at the same column.
> - Inline the FIELD_GET() instead of having macros.
> - Introduce RZN1_ADC_NO_CHANNEL
> - Get Vref voltage value at probe().
> - Remove the bitmap in rzn1_adc_set_iio_dev_channels().
> - Use dev_err_probe() in rzn1_adc_set_iio_dev_channels().
> - Use auto-cleanup variant for PM runtime "resume and get".
> - Use scoped_guard() for mutex.
> - Use devm_mutex_init().
> - Use the fixed "rzn1-adc" string for indio_dev->name.
> - Use DEFINE_RUNTIME_DEV_PM_OPS().
> - Fix rzn1_adc_of_match table and remove of_match_ptr().
> - Add a comment related to decoupling between IIO chans and ADC1 or
> ADC2 core chans
> - Update and add several comments related to ADC core usage and the
> relationship with ADC core regulator presence.
> - Remove clocks and regulators handling from PM runtime
> suspend()/remove().
> - Simplify the driver removing the no more relevant struct
> rzn1_adc_core.
>
> Patch 3:
> - Rename "adc-clk" clock to "adc".
> - Add 'Reviewed-by: Wolfram Sang'
>
> Patch 4
> - Removed the linux-iio list
>
> Herve Codina (Schneider Electric) (4):
> dt-bindings: iio: adc: Add the Renesas RZ/N1 ADC
> iio: adc: Add support for the Renesas RZ/N1 ADC
> ARM: dts: renesas: r9a06g032: Add the ADC device
> MAINTAINERS: Add the Renesas RZ/N1 ADC driver entry
>
> .../bindings/iio/adc/renesas,rzn1-adc.yaml | 111 ++++
> MAINTAINERS | 7 +
> arch/arm/boot/dts/renesas/r9a06g032.dtsi | 10 +
> drivers/iio/adc/Kconfig | 10 +
> drivers/iio/adc/Makefile | 1 +
> drivers/iio/adc/rzn1-adc.c | 490 ++++++++++++++++++
> 6 files changed, 629 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/iio/adc/renesas,rzn1-adc.yaml
> create mode 100644 drivers/iio/adc/rzn1-adc.c
>
© 2016 - 2025 Red Hat, Inc.