This series adds support for general purpose ADC (GPADC) on new
Allwinner's SoCs, such as D1, T113s, T507 and R329. The implemented driver
provides basic functionality for getting ADC channels data.
Change History:
v8:
- Added patch that changes Kconfig description for previous Allwinner GPADC
- Changed Kconfig description for this GPADC driver
- Fixed 'reg' range for gpadc node in 'sunxi-d1s-t113.dtsi'
v7:
- Fixed typo in DT bindings property
v6:
- Fixed DT bindings regexp for channel properties
- Dropped checking the max number of channels from the drivers code
(This is redundant as we raly on DT bindings check)
v5:
- Fixed DT bindings properties for child nodes
v4:
- Fixed DT bindings warnings
- Used GENMASK to clear the irq register
- Minor formatting fixes
v3:
- Added DT bindings dual license, fixed property order and example formatting
- Added explanations comments for timeout and mutex
- Dropped unnecessary regmap and used readl/writel instead
- Added error message about getting channel number
- Renamed labels and variables to make them self-explanatory
v2:
- Added lastch flag to avoid addition work for already selected channel
- Added reset assertion on module remove
- Added dynamic channel allocation and dropped iio_chan_spec arrays
- Changed IIO_CHAN_INFO_SCALE type to FRACTIONAL_LOG2
- Dropped separate compatible strings and configs for T113s and R329
- Fixed includes
- Fixed Kconfig description
- Removed duplicate probe error messages
- Used FIELD_PREP for bit setup
v1:
- Initial version
Maksim Kiselev (4):
iio: adc: Kconfig change description for Allwinner GPADC
iio: adc: Add Allwinner D1/T113s/R329/T507 SoCs GPADC
dt-bindings: iio: adc: Add Allwinner D1/T113s/R329/T507 SoCs GPADC
riscv: dts: allwinner: d1: Add GPADC node
.../iio/adc/allwinner,sun20i-d1-gpadc.yaml | 91 ++++++
.../boot/dts/allwinner/sunxi-d1s-t113.dtsi | 10 +
drivers/iio/adc/Kconfig | 12 +-
drivers/iio/adc/Makefile | 1 +
drivers/iio/adc/sun20i-gpadc-iio.c | 276 ++++++++++++++++++
5 files changed, 389 insertions(+), 1 deletion(-)
create mode 100644 Documentation/devicetree/bindings/iio/adc/allwinner,sun20i-d1-gpadc.yaml
create mode 100644 drivers/iio/adc/sun20i-gpadc-iio.c
--
2.39.2
This patch adds declaration of the general purpose ADC for D1
and T113s SoCs.
Signed-off-by: Maksim Kiselev <[email protected]>
---
arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi b/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi
index 922e8e0e2c09..cb353d5805cb 100644
--- a/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi
+++ b/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi
@@ -138,6 +138,16 @@ ccu: clock-controller@2001000 {
#reset-cells = <1>;
};
+ gpadc: adc@2009000 {
+ compatible = "allwinner,sun20i-d1-gpadc";
+ reg = <0x2009000 0x400>;
+ clocks = <&ccu CLK_BUS_GPADC>;
+ resets = <&ccu RST_BUS_GPADC>;
+ interrupts = <SOC_PERIPHERAL_IRQ(57) IRQ_TYPE_LEVEL_HIGH>;
+ status = "disabled";
+ #io-channel-cells = <1>;
+ };
+
dmic: dmic@2031000 {
compatible = "allwinner,sun20i-d1-dmic",
"allwinner,sun50i-h6-dmic";
--
2.39.2
Allwinner's D1/T113s/R329/T507 SoCs have a new general purpose ADC.
This ADC is the same for all of this SoCs. The only difference is
the number of available channels.
Reviewed-by: Conor Dooley <[email protected]>
Signed-off-by: Maksim Kiselev <[email protected]>
---
.../iio/adc/allwinner,sun20i-d1-gpadc.yaml | 91 +++++++++++++++++++
1 file changed, 91 insertions(+)
create mode 100644 Documentation/devicetree/bindings/iio/adc/allwinner,sun20i-d1-gpadc.yaml
diff --git a/Documentation/devicetree/bindings/iio/adc/allwinner,sun20i-d1-gpadc.yaml b/Documentation/devicetree/bindings/iio/adc/allwinner,sun20i-d1-gpadc.yaml
new file mode 100644
index 000000000000..7ef46c90ebc8
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/adc/allwinner,sun20i-d1-gpadc.yaml
@@ -0,0 +1,91 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/adc/allwinner,sun20i-d1-gpadc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Allwinner D1 General Purpose ADC
+
+maintainers:
+ - Maksim Kiselev <[email protected]>
+
+properties:
+ compatible:
+ enum:
+ - allwinner,sun20i-d1-gpadc
+
+ "#io-channel-cells":
+ const: 1
+
+ "#address-cells":
+ const: 1
+
+ "#size-cells":
+ const: 0
+
+ clocks:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ reg:
+ maxItems: 1
+
+ resets:
+ maxItems: 1
+
+patternProperties:
+ "^channel@[0-9a-f]+$":
+ $ref: adc.yaml
+ type: object
+ description:
+ Represents the internal channels of the ADC.
+
+ properties:
+ reg:
+ items:
+ minimum: 0
+ maximum: 15
+
+ required:
+ - reg
+
+ unevaluatedProperties: false
+
+required:
+ - "#io-channel-cells"
+ - clocks
+ - compatible
+ - interrupts
+ - reg
+ - resets
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/sun20i-d1-ccu.h>
+ #include <dt-bindings/reset/sun20i-d1-ccu.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
+
+ gpadc: adc@2009000 {
+ compatible = "allwinner,sun20i-d1-gpadc";
+ reg = <0x2009000 0x400>;
+ clocks = <&ccu CLK_BUS_GPADC>;
+ resets = <&ccu RST_BUS_GPADC>;
+ interrupts = <73 IRQ_TYPE_LEVEL_HIGH>;
+ #io-channel-cells = <1>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ channel@0 {
+ reg = <0>;
+ };
+
+ channel@1 {
+ reg = <1>;
+ };
+ };
+...
--
2.39.2
On Mon, 19 Jun 2023 18:42:23 +0300
Maksim Kiselev <[email protected]> wrote:
> This series adds support for general purpose ADC (GPADC) on new
> Allwinner's SoCs, such as D1, T113s, T507 and R329. The implemented driver
> provides basic functionality for getting ADC channels data.
Applied 1-3 to the togreg branch of iio.git which will initially be pushed out as
testing so that 0-day can see if we missed anything. I'll also be rebasing it
on rc1 once available before pushing out as togreg.
Thanks,
Jonathan
>
> Change History:
> v8:
> - Added patch that changes Kconfig description for previous Allwinner GPADC
> - Changed Kconfig description for this GPADC driver
> - Fixed 'reg' range for gpadc node in 'sunxi-d1s-t113.dtsi'
>
> v7:
> - Fixed typo in DT bindings property
>
> v6:
> - Fixed DT bindings regexp for channel properties
> - Dropped checking the max number of channels from the drivers code
> (This is redundant as we raly on DT bindings check)
>
> v5:
> - Fixed DT bindings properties for child nodes
>
> v4:
> - Fixed DT bindings warnings
> - Used GENMASK to clear the irq register
> - Minor formatting fixes
>
> v3:
> - Added DT bindings dual license, fixed property order and example formatting
> - Added explanations comments for timeout and mutex
> - Dropped unnecessary regmap and used readl/writel instead
> - Added error message about getting channel number
> - Renamed labels and variables to make them self-explanatory
>
> v2:
> - Added lastch flag to avoid addition work for already selected channel
> - Added reset assertion on module remove
> - Added dynamic channel allocation and dropped iio_chan_spec arrays
> - Changed IIO_CHAN_INFO_SCALE type to FRACTIONAL_LOG2
> - Dropped separate compatible strings and configs for T113s and R329
> - Fixed includes
> - Fixed Kconfig description
> - Removed duplicate probe error messages
> - Used FIELD_PREP for bit setup
>
> v1:
> - Initial version
>
> Maksim Kiselev (4):
> iio: adc: Kconfig change description for Allwinner GPADC
> iio: adc: Add Allwinner D1/T113s/R329/T507 SoCs GPADC
> dt-bindings: iio: adc: Add Allwinner D1/T113s/R329/T507 SoCs GPADC
> riscv: dts: allwinner: d1: Add GPADC node
>
> .../iio/adc/allwinner,sun20i-d1-gpadc.yaml | 91 ++++++
> .../boot/dts/allwinner/sunxi-d1s-t113.dtsi | 10 +
> drivers/iio/adc/Kconfig | 12 +-
> drivers/iio/adc/Makefile | 1 +
> drivers/iio/adc/sun20i-gpadc-iio.c | 276 ++++++++++++++++++
> 5 files changed, 389 insertions(+), 1 deletion(-)
> create mode 100644 Documentation/devicetree/bindings/iio/adc/allwinner,sun20i-d1-gpadc.yaml
> create mode 100644 drivers/iio/adc/sun20i-gpadc-iio.c
>
Dne ponedeljek, 19. junij 2023 ob 17:42:27 CEST je Maksim Kiselev napisal(a):
> This patch adds declaration of the general purpose ADC for D1
> and T113s SoCs.
>
> Signed-off-by: Maksim Kiselev <[email protected]>
Acked-by: Jernej Skrabec <[email protected]>
Best regards,
Jernej
> ---
> arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi
> b/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi index
> 922e8e0e2c09..cb353d5805cb 100644
> --- a/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi
> +++ b/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi
> @@ -138,6 +138,16 @@ ccu: clock-controller@2001000 {
> #reset-cells = <1>;
> };
>
> + gpadc: adc@2009000 {
> + compatible = "allwinner,sun20i-d1-gpadc";
> + reg = <0x2009000 0x400>;
> + clocks = <&ccu CLK_BUS_GPADC>;
> + resets = <&ccu RST_BUS_GPADC>;
> + interrupts = <SOC_PERIPHERAL_IRQ(57)
IRQ_TYPE_LEVEL_HIGH>;
> + status = "disabled";
> + #io-channel-cells = <1>;
> + };
> +
> dmic: dmic@2031000 {
> compatible = "allwinner,sun20i-d1-dmic",
> "allwinner,sun50i-h6-dmic";
Dne ponedeljek, 19. junij 2023 ob 17:42:27 CEST je Maksim Kiselev napisal(a):
> This patch adds declaration of the general purpose ADC for D1
> and T113s SoCs.
>
> Signed-off-by: Maksim Kiselev <[email protected]>
Applied, thanks!
Best regards,
Jernej