From nobody Wed Oct 1 20:33:18 2025 Received: from relmlie5.idc.renesas.com (relmlor1.renesas.com [210.160.252.171]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1CB082EA15E; Wed, 1 Oct 2025 12:24:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759321456; cv=none; b=QVkM2hEVy16OIqR1OSUZJeD0XGOz9nIEAWJpUuZbXwhjKn+sgBC4GaiKVemd0ZPCdXEmsM0PypOwEA6lxiVAqsTN8xGbY4H35J8O7q4vcq+PMyMa+fGt3hYuIbzn4FZIy9F9IE9CqDwR2Wa7p+AojBPBDHFi97KRT5xKHglj3aY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759321456; c=relaxed/simple; bh=k34C/W2IXwDBHyNllf0jyBB4tq4BgdGxE9GvTphqkJk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oUNV5oU+JeKYHPoX7D6QByINb87ji6eiSrbx0Dbq3d0fNA0uq1vw+4lYf8yB0huvvGrHF1hNA8TeKfBwDuHkGPS5na+q64pxrzZhmCuqwxI+OQNDji6LgR54P/nKfWKKdrm6Aiqqx+FzW/Gxd77EeemLEDePXT9mtu7Msczr1ZA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; arc=none smtp.client-ip=210.160.252.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com X-CSE-ConnectionGUID: n8t/+BFNT26ZpKj+0sgN3w== X-CSE-MsgGUID: +hhme2h2TyitBhKLeExAyw== Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie5.idc.renesas.com with ESMTP; 01 Oct 2025 21:24:07 +0900 Received: from demon-pc.localdomain (unknown [10.226.93.1]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id DB0014196E7E; Wed, 1 Oct 2025 21:24:02 +0900 (JST) From: Cosmin Tanislav To: Cc: Cosmin Tanislav , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Geert Uytterhoeven , Magnus Damm , linux-iio@vger.kernel.org, linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 1/7] clk: renesas: r9a09g077: Add ADC modules clock Date: Wed, 1 Oct 2025 15:23:08 +0300 Message-ID: <20251001122326.4024391-2-cosmin-gabriel.tanislav.xa@renesas.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251001122326.4024391-1-cosmin-gabriel.tanislav.xa@renesas.com> References: <20251001122326.4024391-1-cosmin-gabriel.tanislav.xa@renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Renesas RZ/T2H (R9A09G077) and RZ/N2H (R9A09G087) SoCs have three 12bit ADC peripherals, each with its own peripheral clock. For conversion, they use the PCLKL clock. Add their clocks to the list of module clocks. Signed-off-by: Cosmin Tanislav Reviewed-by: Geert Uytterhoeven --- drivers/clk/renesas/r9a09g077-cpg.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/clk/renesas/r9a09g077-cpg.c b/drivers/clk/renesas/r9a0= 9g077-cpg.c index 3aaa154102d5..5dca5c44043e 100644 --- a/drivers/clk/renesas/r9a09g077-cpg.c +++ b/drivers/clk/renesas/r9a09g077-cpg.c @@ -192,6 +192,9 @@ static const struct mssr_mod_clk r9a09g077_mod_clks[] _= _initconst =3D { DEF_MOD("sci4fck", 12, CLK_SCI4ASYNC), DEF_MOD("iic0", 100, R9A09G077_CLK_PCLKL), DEF_MOD("iic1", 101, R9A09G077_CLK_PCLKL), + DEF_MOD("adc0", 206, R9A09G077_CLK_PCLKH), + DEF_MOD("adc1", 207, R9A09G077_CLK_PCLKH), + DEF_MOD("adc2", 225, R9A09G077_CLK_PCLKM), DEF_MOD("gmac0", 400, R9A09G077_CLK_PCLKM), DEF_MOD("ethsw", 401, R9A09G077_CLK_PCLKM), DEF_MOD("ethss", 403, R9A09G077_CLK_PCLKM), --=20 2.51.0 From nobody Wed Oct 1 20:33:18 2025 Received: from relmlie5.idc.renesas.com (relmlor1.renesas.com [210.160.252.171]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 072752EA16A; Wed, 1 Oct 2025 12:24:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759321459; cv=none; b=bub/vObVQ+SmN0/MKO6WTvDo3BsrnrZLp63+FKYwVjmjnHstOcfH2YkuYfyCexiuUZquPa72aJdRxkgfIz4Z5+JHFReaUnv+SWZRDzn52SzXem7zgipts3BDI/Oc87v4Qf6SPFEJqTHIGgFID0A6IiOowpC0uXH4pSvAIK0NEJY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759321459; c=relaxed/simple; bh=uJgvU4M32gu8HTJPQRYeJpT5qzsGv/dfYPLvoEdTnZM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qCQtR88s4UVxbvi+Ew1NP58kSQngmE61VVXY1KNS9pXCWRxUOEvbkUau65Fn4DQw2hSwWmWxBpEHV0WTLJTps5E0SAh4FHIJnaTGDSv7YKjk+48cJId032n6fIee1ycH4Wd3BcQFI9KYJedC/5WgXqoXXCoT8T4jcXEUDDc6AR8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; arc=none smtp.client-ip=210.160.252.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com X-CSE-ConnectionGUID: atKszf3LQsmsPcow+4fOXA== X-CSE-MsgGUID: FIGF2nBORkiiuan7IA0JsQ== Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie5.idc.renesas.com with ESMTP; 01 Oct 2025 21:24:13 +0900 Received: from demon-pc.localdomain (unknown [10.226.93.1]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id 926C94196E62; Wed, 1 Oct 2025 21:24:08 +0900 (JST) From: Cosmin Tanislav To: Cc: Cosmin Tanislav , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Geert Uytterhoeven , Magnus Damm , linux-iio@vger.kernel.org, linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Conor Dooley Subject: [PATCH v3 2/7] dt-bindings: iio: adc: document RZ/T2H and RZ/N2H ADC Date: Wed, 1 Oct 2025 15:23:09 +0300 Message-ID: <20251001122326.4024391-3-cosmin-gabriel.tanislav.xa@renesas.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251001122326.4024391-1-cosmin-gabriel.tanislav.xa@renesas.com> References: <20251001122326.4024391-1-cosmin-gabriel.tanislav.xa@renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Document the A/D 12-Bit successive approximation converters found in the Renesas RZ/T2H (R9A09G077) and RZ/N2H (R9A09G087) SoCs. RZ/T2H has two ADCs with 4 channels and one with 6. RZ/N2H has two ADCs with 4 channels and one with 15. Signed-off-by: Cosmin Tanislav Acked-by: Conor Dooley Reviewed-by: Geert Uytterhoeven --- .../iio/adc/renesas,r9a09g077-adc.yaml | 160 ++++++++++++++++++ MAINTAINERS | 7 + 2 files changed, 167 insertions(+) create mode 100644 Documentation/devicetree/bindings/iio/adc/renesas,r9a09= g077-adc.yaml diff --git a/Documentation/devicetree/bindings/iio/adc/renesas,r9a09g077-ad= c.yaml b/Documentation/devicetree/bindings/iio/adc/renesas,r9a09g077-adc.ya= ml new file mode 100644 index 000000000000..04397ff494c3 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/adc/renesas,r9a09g077-adc.yaml @@ -0,0 +1,160 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/iio/adc/renesas,r9a09g077-adc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Renesas RZ/T2H / RZ/N2H ADC12 + +maintainers: + - Cosmin Tanislav + +description: | + A/D Converter block is a successive approximation analog-to-digital conv= erter + with a 12-bit accuracy. Up to 16 analog input channels can be selected. + Conversions can be performed in single or continuous mode. Result of the= ADC + is stored in a 16-bit data register corresponding to each channel. + +properties: + compatible: + enum: + - renesas,r9a09g077-adc # RZ/T2H + - renesas,r9a09g087-adc # RZ/N2H + + reg: + maxItems: 1 + + interrupts: + items: + - description: A/D scan end interrupt + - description: A/D scan end interrupt for Group B + - description: A/D scan end interrupt for Group C + - description: Window A compare match + - description: Window B compare match + - description: Compare match + - description: Compare mismatch + + interrupt-names: + items: + - const: adi + - const: gbadi + - const: gcadi + - const: cmpai + - const: cmpbi + - const: wcmpm + - const: wcmpum + + clocks: + items: + - description: Converter clock + - description: Peripheral clock + + clock-names: + items: + - const: adclk + - const: pclk + + power-domains: + maxItems: 1 + + '#address-cells': + const: 1 + + '#size-cells': + const: 0 + + "#io-channel-cells": + const: 1 + +patternProperties: + "^channel@[0-9a-f]$": + $ref: adc.yaml + type: object + description: The external channels which are connected to the ADC. + + properties: + reg: + description: The channel number. + maximum: 15 + + required: + - reg + + additionalProperties: false + +required: + - compatible + - reg + - interrupts + - clocks + - clock-names + - power-domains + +allOf: + - if: + properties: + compatible: + contains: + const: renesas,r9a09g077-adc + then: + patternProperties: + "^channel@[6-9a-f]$": false + "^channel@[0-5]$": + properties: + reg: + maximum: 5 + + - if: + properties: + compatible: + contains: + enum: + - renesas,r9a09g087-adc + then: + patternProperties: + "^channel@[f]$": false + "^channel@[0-9a-e]$": + properties: + reg: + maximum: 14 + +additionalProperties: false + +examples: + - | + #include + #include + + adc@80008000 { + compatible =3D "renesas,r9a09g077-adc"; + reg =3D <0x80008000 0x400>; + interrupts =3D , + , + , + , + , + , + ; + interrupt-names =3D "adi", "gbadi", "gcadi", + "cmpai", "cmpbi", "wcmpm", "wcmpum"; + clocks =3D <&cpg CPG_CORE R9A09G077_CLK_PCLKL>, + <&cpg CPG_MOD 225>; + clock-names =3D "adclk", "pclk"; + power-domains =3D <&cpg>; + #address-cells =3D <1>; + #size-cells =3D <0>; + #io-channel-cells =3D <1>; + + channel@0 { + reg =3D <0x0>; + }; + channel@1 { + reg =3D <0x1>; + }; + channel@2 { + reg =3D <0x2>; + }; + channel@3 { + reg =3D <0x3>; + }; + }; diff --git a/MAINTAINERS b/MAINTAINERS index 343948543711..069c8030fd84 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -21832,6 +21832,13 @@ S: Supported F: Documentation/devicetree/bindings/timer/renesas,rz-mtu3.yaml F: drivers/counter/rz-mtu3-cnt.c =20 +RENESAS RZ/T2H / RZ/N2H A/D DRIVER +M: Cosmin Tanislav +L: linux-iio@vger.kernel.org +L: linux-renesas-soc@vger.kernel.org +S: Supported +F: Documentation/devicetree/bindings/iio/adc/renesas,r9a09g077-adc.yaml + RENESAS RTCA-3 RTC DRIVER M: Claudiu Beznea L: linux-rtc@vger.kernel.org --=20 2.51.0 From nobody Wed Oct 1 20:33:18 2025 Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6DAE12E972A; Wed, 1 Oct 2025 12:24:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759321464; cv=none; b=WzKiexrlz5Po5aNzCSmFvY02gr/qhryr2OhlHQf+5erFc2z+oubT4rISkraR2+l0g0NR/2tWt1STRUVPt72wrDmdrKdcfVO9OoIgASBw8x2J+lpm5RgQqRNtT/ro9c4PZu2QFMNsbcBMcQUo74bDGBszxEJsa94RXBB50xT9eDc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759321464; c=relaxed/simple; bh=ku74DRQ2So9UvEZbVBSMEgJfC8IVF7mG30/ps6F3RA8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Gaw5SVwaGO+fawiMKQhUHHMrBgW+Uq42ltYvhBLAo2/9TYF3HJ/HhqQojgOueps5d9zOqEBGaev5c5A54sQnJ4duNkvduFVrdoXzx0XozRGMyqOtjtxge+YfmQefU5khOFxW3g5qWiNH/kqCTz/zV5wrMcYRdPoeFkIO5rvSzbI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; arc=none smtp.client-ip=210.160.252.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com X-CSE-ConnectionGUID: ibLXakYwSFC9EfU5qP/6LQ== X-CSE-MsgGUID: DI3RAIZNQ/qbwdOlaWRtHw== Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie6.idc.renesas.com with ESMTP; 01 Oct 2025 21:24:18 +0900 Received: from demon-pc.localdomain (unknown [10.226.93.1]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id 2ED284196E62; Wed, 1 Oct 2025 21:24:13 +0900 (JST) From: Cosmin Tanislav To: Cc: Cosmin Tanislav , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Geert Uytterhoeven , Magnus Damm , linux-iio@vger.kernel.org, linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 3/7] iio: adc: add RZ/T2H / RZ/N2H ADC driver Date: Wed, 1 Oct 2025 15:23:10 +0300 Message-ID: <20251001122326.4024391-4-cosmin-gabriel.tanislav.xa@renesas.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251001122326.4024391-1-cosmin-gabriel.tanislav.xa@renesas.com> References: <20251001122326.4024391-1-cosmin-gabriel.tanislav.xa@renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Add support for the A/D 12-Bit successive approximation converters found in the Renesas RZ/T2H (R9A09G077) and RZ/N2H (R9A09G087) SoCs. RZ/T2H has two ADCs with 4 channels and one with 6. RZ/N2H has two ADCs with 4 channels and one with 15. Conversions can be performed in single or continuous mode. Result of the conversion is stored in a 16-bit data register corresponding to each channel. The conversions can be started by a software trigger, a synchronous trigger (from MTU or from ELC) or an asynchronous external trigger (from ADTRGn# pin). Only single mode with software trigger is supported for now. Signed-off-by: Cosmin Tanislav Reviewed-by: Nuno S=C3=A1 --- MAINTAINERS | 1 + drivers/iio/adc/Kconfig | 10 ++ drivers/iio/adc/Makefile | 1 + drivers/iio/adc/rzt2h_adc.c | 309 ++++++++++++++++++++++++++++++++++++ 4 files changed, 321 insertions(+) create mode 100644 drivers/iio/adc/rzt2h_adc.c diff --git a/MAINTAINERS b/MAINTAINERS index 069c8030fd84..95d85d3f2803 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -21838,6 +21838,7 @@ L: linux-iio@vger.kernel.org L: linux-renesas-soc@vger.kernel.org S: Supported F: Documentation/devicetree/bindings/iio/adc/renesas,r9a09g077-adc.yaml +F: drivers/iio/adc/rzt2h_adc.c =20 RENESAS RTCA-3 RTC DRIVER M: Claudiu Beznea diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig index 58a14e6833f6..cab5eeba48fe 100644 --- a/drivers/iio/adc/Kconfig +++ b/drivers/iio/adc/Kconfig @@ -1403,6 +1403,16 @@ config RZG2L_ADC To compile this driver as a module, choose M here: the module will be called rzg2l_adc. =20 +config RZT2H_ADC + tristate "Renesas RZ/T2H / RZ/N2H ADC driver" + select IIO_ADC_HELPER + help + Say yes here to build support for the ADC found in Renesas + RZ/T2H / RZ/N2H SoCs. + + To compile this driver as a module, choose M here: the + module will be called rzt2h_adc. + config SC27XX_ADC tristate "Spreadtrum SC27xx series PMICs ADC" depends on MFD_SC27XX_PMIC || COMPILE_TEST diff --git a/drivers/iio/adc/Makefile b/drivers/iio/adc/Makefile index d008f78dc010..ed647a734c51 100644 --- a/drivers/iio/adc/Makefile +++ b/drivers/iio/adc/Makefile @@ -123,6 +123,7 @@ obj-$(CONFIG_ROHM_BD79112) +=3D rohm-bd79112.o obj-$(CONFIG_ROHM_BD79124) +=3D rohm-bd79124.o obj-$(CONFIG_ROCKCHIP_SARADC) +=3D rockchip_saradc.o obj-$(CONFIG_RZG2L_ADC) +=3D rzg2l_adc.o +obj-$(CONFIG_RZT2H_ADC) +=3D rzt2h_adc.o obj-$(CONFIG_SC27XX_ADC) +=3D sc27xx_adc.o obj-$(CONFIG_SD_ADC_MODULATOR) +=3D sd_adc_modulator.o obj-$(CONFIG_SOPHGO_CV1800B_ADC) +=3D sophgo-cv1800b-adc.o diff --git a/drivers/iio/adc/rzt2h_adc.c b/drivers/iio/adc/rzt2h_adc.c new file mode 100644 index 000000000000..51d1852d814d --- /dev/null +++ b/drivers/iio/adc/rzt2h_adc.c @@ -0,0 +1,309 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define RZT2H_NAME "rzt2h-adc" + +#define RZT2H_ADCSR_REG 0x00 +#define RZT2H_ADCSR_ADIE_MASK BIT(12) +#define RZT2H_ADCSR_ADCS_MASK GENMASK(14, 13) +#define RZT2H_ADCSR_ADCS_SINGLE 0b00 +#define RZT2H_ADCSR_ADST_MASK BIT(15) + +#define RZT2H_ADANSA0_REG 0x04 +#define RZT2H_ADANSA0_CH_MASK(x) BIT(x) + +#define RZT2H_ADDR_REG(x) (0x20 + 0x2 * (x)) + +#define RZT2H_ADCALCTL_REG 0x1f0 +#define RZT2H_ADCALCTL_CAL_MASK BIT(0) +#define RZT2H_ADCALCTL_CAL_RDY_MASK BIT(1) +#define RZT2H_ADCALCTL_CAL_ERR_MASK BIT(2) + +#define RZT2H_ADC_MAX_CHANNELS 16 +#define RZT2H_ADC_VREF_MV 1800 +#define RZT2H_ADC_RESOLUTION 12 + +struct rzt2h_adc { + void __iomem *base; + struct device *dev; + + struct completion completion; + /* lock to protect against multiple access to the device */ + struct mutex lock; + + const struct iio_chan_spec *channels; + unsigned int num_channels; + unsigned int max_channels; +}; + +static void rzt2h_adc_start(struct rzt2h_adc *adc, unsigned int conversion= _type) +{ + u16 reg; + + reg =3D readw(adc->base + RZT2H_ADCSR_REG); + + /* Set conversion type */ + FIELD_MODIFY(RZT2H_ADCSR_ADCS_MASK, ®, conversion_type); + + /* Set end of conversion interrupt and start bit. */ + reg |=3D RZT2H_ADCSR_ADIE_MASK | RZT2H_ADCSR_ADST_MASK; + + writew(reg, adc->base + RZT2H_ADCSR_REG); +} + +static void rzt2h_adc_stop(struct rzt2h_adc *adc) +{ + u16 reg; + + reg =3D readw(adc->base + RZT2H_ADCSR_REG); + + /* Clear end of conversion interrupt and start bit. */ + reg &=3D ~(RZT2H_ADCSR_ADIE_MASK | RZT2H_ADCSR_ADST_MASK); + + writew(reg, adc->base + RZT2H_ADCSR_REG); +} + +static int rzt2h_adc_read_single(struct rzt2h_adc *adc, unsigned int ch, i= nt *val) +{ + int ret; + + ret =3D pm_runtime_resume_and_get(adc->dev); + if (ret) + return ret; + + mutex_lock(&adc->lock); + + reinit_completion(&adc->completion); + + /* Enable a single channel */ + writew(RZT2H_ADANSA0_CH_MASK(ch), adc->base + RZT2H_ADANSA0_REG); + + rzt2h_adc_start(adc, RZT2H_ADCSR_ADCS_SINGLE); + + /* + * Datasheet Page 2770, Table 41.1: + * 0.32us per channel when sample-and-hold circuits are not in use. + */ + ret =3D wait_for_completion_timeout(&adc->completion, usecs_to_jiffies(1)= ); + if (!ret) { + ret =3D -ETIMEDOUT; + goto disable; + } + + *val =3D readw(adc->base + RZT2H_ADDR_REG(ch)); + ret =3D IIO_VAL_INT; + +disable: + rzt2h_adc_stop(adc); + + mutex_unlock(&adc->lock); + + pm_runtime_put_autosuspend(adc->dev); + + return ret; +} + +static void rzt2h_adc_set_cal(struct rzt2h_adc *adc, bool cal) +{ + u16 val; + + val =3D readw(adc->base + RZT2H_ADCALCTL_REG); + if (cal) + val |=3D RZT2H_ADCALCTL_CAL_MASK; + else + val &=3D ~RZT2H_ADCALCTL_CAL_MASK; + + writew(val, adc->base + RZT2H_ADCALCTL_REG); +} + +static int rzt2h_adc_calibrate(struct rzt2h_adc *adc) +{ + u16 val; + int ret; + + rzt2h_adc_set_cal(adc, true); + + ret =3D read_poll_timeout(readw, val, val & RZT2H_ADCALCTL_CAL_RDY_MASK, + 200, 1000, true, adc->base + RZT2H_ADCALCTL_REG); + if (ret) { + dev_err(adc->dev, "Calibration timed out: %d\n", ret); + return ret; + } + + rzt2h_adc_set_cal(adc, false); + + if (val & RZT2H_ADCALCTL_CAL_ERR_MASK) { + dev_err(adc->dev, "Calibration failed\n"); + return -EINVAL; + } + + return 0; +} + +static int rzt2h_adc_read_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int *val, int *val2, long mask) +{ + struct rzt2h_adc *adc =3D iio_priv(indio_dev); + + switch (mask) { + case IIO_CHAN_INFO_RAW: + return rzt2h_adc_read_single(adc, chan->channel, val); + case IIO_CHAN_INFO_SCALE: + *val =3D RZT2H_ADC_VREF_MV; + *val2 =3D RZT2H_ADC_RESOLUTION; + return IIO_VAL_FRACTIONAL_LOG2; + default: + return -EINVAL; + } +} + +static const struct iio_info rzt2h_adc_iio_info =3D { + .read_raw =3D rzt2h_adc_read_raw, +}; + +static irqreturn_t rzt2h_adc_isr(int irq, void *private) +{ + struct rzt2h_adc *adc =3D private; + + complete(&adc->completion); + + return IRQ_HANDLED; +} + +static const struct iio_chan_spec rzt2h_adc_chan_template =3D { + .indexed =3D 1, + .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW) | + BIT(IIO_CHAN_INFO_SCALE), + .type =3D IIO_VOLTAGE, +}; + +static int rzt2h_adc_parse_properties(struct rzt2h_adc *adc) +{ + struct iio_chan_spec *chan_array; + unsigned int i; + int ret; + + ret =3D devm_iio_adc_device_alloc_chaninfo_se(adc->dev, + &rzt2h_adc_chan_template, + RZT2H_ADC_MAX_CHANNELS - 1, + &chan_array); + if (ret < 0) + return dev_err_probe(adc->dev, ret, "Failed to read channel info"); + + adc->num_channels =3D ret; + adc->channels =3D chan_array; + + for (i =3D 0; i < adc->num_channels; i++) + if (chan_array[i].channel + 1 > adc->max_channels) + adc->max_channels =3D chan_array[i].channel + 1; + + return 0; +} + +static int rzt2h_adc_probe(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + struct iio_dev *indio_dev; + struct rzt2h_adc *adc; + int ret, irq; + + indio_dev =3D devm_iio_device_alloc(dev, sizeof(*adc)); + if (!indio_dev) + return -ENOMEM; + + adc =3D iio_priv(indio_dev); + adc->dev =3D dev; + init_completion(&adc->completion); + + ret =3D devm_mutex_init(dev, &adc->lock); + if (ret) + return ret; + + platform_set_drvdata(pdev, adc); + + ret =3D rzt2h_adc_parse_properties(adc); + if (ret) + return ret; + + adc->base =3D devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(adc->base)) + return PTR_ERR(adc->base); + + pm_runtime_set_autosuspend_delay(dev, 300); + pm_runtime_use_autosuspend(dev); + ret =3D devm_pm_runtime_enable(dev); + if (ret) + return ret; + + irq =3D platform_get_irq_byname(pdev, "adi"); + if (irq < 0) + return irq; + + ret =3D devm_request_irq(dev, irq, rzt2h_adc_isr, 0, dev_name(dev), adc); + if (ret) + return ret; + + indio_dev->name =3D RZT2H_NAME; + indio_dev->info =3D &rzt2h_adc_iio_info; + indio_dev->modes =3D INDIO_DIRECT_MODE; + indio_dev->channels =3D adc->channels; + indio_dev->num_channels =3D adc->num_channels; + + return devm_iio_device_register(dev, indio_dev); +} + +static const struct of_device_id rzt2h_adc_match[] =3D { + { .compatible =3D "renesas,r9a09g077-adc" }, + { .compatible =3D "renesas,r9a09g087-adc" }, + { } +}; +MODULE_DEVICE_TABLE(of, rzt2h_adc_match); + +static int rzt2h_adc_pm_runtime_resume(struct device *dev) +{ + struct rzt2h_adc *adc =3D dev_get_drvdata(dev); + + /* + * Datasheet Page 2810, Section 41.5.6: + * After release from the module-stop state, wait for at least + * 0.5 =C2=B5s before starting A/D conversion. + */ + fsleep(1); + + return rzt2h_adc_calibrate(adc); +} + +static const struct dev_pm_ops rzt2h_adc_pm_ops =3D { + RUNTIME_PM_OPS(NULL, rzt2h_adc_pm_runtime_resume, NULL) +}; + +static struct platform_driver rzt2h_adc_driver =3D { + .probe =3D rzt2h_adc_probe, + .driver =3D { + .name =3D RZT2H_NAME, + .of_match_table =3D rzt2h_adc_match, + .pm =3D pm_ptr(&rzt2h_adc_pm_ops), + }, +}; + +module_platform_driver(rzt2h_adc_driver); + +MODULE_AUTHOR("Cosmin Tanislav "); +MODULE_DESCRIPTION("Renesas RZ/T2H / RZ/N2H ADC driver"); +MODULE_LICENSE("GPL"); +MODULE_IMPORT_NS("IIO_DRIVER"); --=20 2.51.0 From nobody Wed Oct 1 20:33:18 2025 Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 82FEC2E92AB; Wed, 1 Oct 2025 12:24:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759321466; cv=none; b=CzLpOahUXyWcXr1NuwjMFF+9wfLNEv+c+qFxPzp2r/Q7Kuh05Zypl14FJEwfMN2BYLGgn1sCITPdAkzKsnVfh0x/gxifmq4SJeb/tfOl/wVy6GSUy4J3SDHM0V9clnqc1EwTZfi1Nom1A+0++KSfQDAN1q9eF5I8CISowH5A+y4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759321466; c=relaxed/simple; bh=5+UWcghN2SY7+LifYvRYqKw21AdbP9ULSZTdA4jNfnA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hEmgXIYzHfOoK0F4kVWYXvQqyAejhkW23jXoqq9+j/ww/ikkvHzW1c0ttB9aOw9BUYpRFIXGlkRgoJgObcvfmODRweftnX0fnxMlqH34FFPVPuEctPf7uY5+BwoYTV9u86XxsrTDVg2Sb5p3uYSiuEd0kBVLdbPQXiGOls9HL8Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; arc=none smtp.client-ip=210.160.252.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com X-CSE-ConnectionGUID: Hlqns4HgQ0mhWLEYfdmZCw== X-CSE-MsgGUID: Fh63t16vTIOQXIjVhW9/LQ== Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie6.idc.renesas.com with ESMTP; 01 Oct 2025 21:24:23 +0900 Received: from demon-pc.localdomain (unknown [10.226.93.1]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id 6A5D24196E62; Wed, 1 Oct 2025 21:24:19 +0900 (JST) From: Cosmin Tanislav To: Cc: Cosmin Tanislav , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Geert Uytterhoeven , Magnus Damm , linux-iio@vger.kernel.org, linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 4/7] arm64: dts: renesas: r9a09g077: Add ADCs support Date: Wed, 1 Oct 2025 15:23:11 +0300 Message-ID: <20251001122326.4024391-5-cosmin-gabriel.tanislav.xa@renesas.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251001122326.4024391-1-cosmin-gabriel.tanislav.xa@renesas.com> References: <20251001122326.4024391-1-cosmin-gabriel.tanislav.xa@renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Renesas RZ/T2H (R9A09G077) includes three 12-Bit successive approximation A/D converters, two 4-channel ADCs, and one 6-channel ADC. Add support for all of them. Signed-off-by: Cosmin Tanislav --- arch/arm64/boot/dts/renesas/r9a09g077.dtsi | 66 ++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a09g077.dtsi b/arch/arm64/boot/d= ts/renesas/r9a09g077.dtsi index 37a696d8ec6d..320a7bf5292c 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g077.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a09g077.dtsi @@ -666,6 +666,72 @@ gic: interrupt-controller@83000000 { interrupts =3D ; }; =20 + adc0: adc@90014000 { + compatible =3D "renesas,r9a09g077-adc"; + reg =3D <0 0x90014000 0 0x400>; + interrupts =3D , + , + , + , + , + , + ; + interrupt-names =3D "adi", "gbadi", "gcadi", + "cmpai", "cmpbi", "wcmpm", "wcmpum"; + clocks =3D <&cpg CPG_CORE R9A09G077_CLK_PCLKL>, + <&cpg CPG_MOD 206>; + clock-names =3D "adclk", "pclk"; + power-domains =3D <&cpg>; + #address-cells =3D <1>; + #size-cells =3D <0>; + #io-channel-cells =3D <1>; + status =3D "disabled"; + }; + + adc1: adc@90014400 { + compatible =3D "renesas,r9a09g077-adc"; + reg =3D <0 0x90014400 0 0x400>; + interrupts =3D , + , + , + , + , + , + ; + interrupt-names =3D "adi", "gbadi", "gcadi", + "cmpai", "cmpbi", "wcmpm", "wcmpum"; + clocks =3D <&cpg CPG_CORE R9A09G077_CLK_PCLKL>, + <&cpg CPG_MOD 207>; + clock-names =3D "adclk", "pclk"; + power-domains =3D <&cpg>; + #address-cells =3D <1>; + #size-cells =3D <0>; + #io-channel-cells =3D <1>; + status =3D "disabled"; + }; + + adc2: adc@80008000 { + compatible =3D "renesas,r9a09g077-adc"; + reg =3D <0 0x80008000 0 0x400>; + interrupts =3D , + , + , + , + , + , + ; + interrupt-names =3D "adi", "gbadi", "gcadi", + "cmpai", "cmpbi", "wcmpm", "wcmpum"; + clocks =3D <&cpg CPG_CORE R9A09G077_CLK_PCLKL>, + <&cpg CPG_MOD 225>; + clock-names =3D "adclk", "pclk"; + power-domains =3D <&cpg>; + #address-cells =3D <1>; + #size-cells =3D <0>; + #io-channel-cells =3D <1>; + status =3D "disabled"; + }; + ohci: usb@92040000 { compatible =3D "generic-ohci"; reg =3D <0 0x92040000 0 0x100>; --=20 2.51.0 From nobody Wed Oct 1 20:33:18 2025 Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DDD262EA14D; Wed, 1 Oct 2025 12:24:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759321472; cv=none; b=RINOPYescFYxUTMGtGUSNpmNlAJjq2bscCeU62ywVny1SNZ7gy466CAyfPHPd1e7rmBXYu2dT5hceyIIAueWhSBEBcvPBocUtXwFXfycxdmlcxyTimqbOxd+8n4TFr3D9ipVOhO5MLAjqmmecfphzvTHr/XLWLHhycZTVLdXv6s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759321472; c=relaxed/simple; bh=MldLSIaUUf2paVc9+mq0kFgSBdUlMz5JWQaoKsfPV6E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=n5Gqz1UgNd4lF6p/+5zaOH0r9iXJCa5sq34ZzMZKah/1ZP5dlSVa8bQqWZD/VDeqAgKEXfkEGEsmV6xs/O9zSQZ9rMxSBMGNKJfuoSE6bDNyd6e7eNdKPlbnuY3w6CT5QoBmUy/pIdkZR2cgvJUY3AIUFqUeoeRQtr3lpL1tKGI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; arc=none smtp.client-ip=210.160.252.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com X-CSE-ConnectionGUID: trbYjeFhQsmUg02Kwfr6Bw== X-CSE-MsgGUID: 8+xLrGiJRByJJKYzhYnS4g== Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie6.idc.renesas.com with ESMTP; 01 Oct 2025 21:24:28 +0900 Received: from demon-pc.localdomain (unknown [10.226.93.1]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id BACF84196E62; Wed, 1 Oct 2025 21:24:24 +0900 (JST) From: Cosmin Tanislav To: Cc: Cosmin Tanislav , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Geert Uytterhoeven , Magnus Damm , linux-iio@vger.kernel.org, linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 5/7] arm64: dts: renesas: r9a09g087: Add ADCs support Date: Wed, 1 Oct 2025 15:23:12 +0300 Message-ID: <20251001122326.4024391-6-cosmin-gabriel.tanislav.xa@renesas.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251001122326.4024391-1-cosmin-gabriel.tanislav.xa@renesas.com> References: <20251001122326.4024391-1-cosmin-gabriel.tanislav.xa@renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Renesas RZ/T2H (R9A09G087) includes three 12-Bit successive approximation A/D converters, two 4-channel ADCs, and one 15-channel ADC. Add support for all of them. Signed-off-by: Cosmin Tanislav --- arch/arm64/boot/dts/renesas/r9a09g087.dtsi | 66 ++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a09g087.dtsi b/arch/arm64/boot/d= ts/renesas/r9a09g087.dtsi index 88669868f0ee..53087cce86e6 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g087.dtsi +++ b/arch/arm64/boot/dts/renesas/r9a09g087.dtsi @@ -666,6 +666,72 @@ gic: interrupt-controller@83000000 { interrupts =3D ; }; =20 + adc0: adc@90014000 { + compatible =3D "renesas,r9a09g087-adc"; + reg =3D <0 0x90014000 0 0x400>; + interrupts =3D , + , + , + , + , + , + ; + interrupt-names =3D "adi", "gbadi", "gcadi", + "cmpai", "cmpbi", "wcmpm", "wcmpum"; + clocks =3D <&cpg CPG_CORE R9A09G087_CLK_PCLKL>, + <&cpg CPG_MOD 206>; + clock-names =3D "adclk", "pclk"; + power-domains =3D <&cpg>; + #address-cells =3D <1>; + #size-cells =3D <0>; + #io-channel-cells =3D <1>; + status =3D "disabled"; + }; + + adc1: adc@90014400 { + compatible =3D "renesas,r9a09g087-adc"; + reg =3D <0 0x90014400 0 0x400>; + interrupts =3D , + , + , + , + , + , + ; + interrupt-names =3D "adi", "gbadi", "gcadi", + "cmpai", "cmpbi", "wcmpm", "wcmpum"; + clocks =3D <&cpg CPG_CORE R9A09G087_CLK_PCLKL>, + <&cpg CPG_MOD 207>; + clock-names =3D "adclk", "pclk"; + power-domains =3D <&cpg>; + #address-cells =3D <1>; + #size-cells =3D <0>; + #io-channel-cells =3D <1>; + status =3D "disabled"; + }; + + adc2: adc@80008000 { + compatible =3D "renesas,r9a09g087-adc"; + reg =3D <0 0x80008000 0 0x400>; + interrupts =3D , + , + , + , + , + , + ; + interrupt-names =3D "adi", "gbadi", "gcadi", + "cmpai", "cmpbi", "wcmpm", "wcmpum"; + clocks =3D <&cpg CPG_CORE R9A09G087_CLK_PCLKL>, + <&cpg CPG_MOD 225>; + clock-names =3D "adclk", "pclk"; + power-domains =3D <&cpg>; + #address-cells =3D <1>; + #size-cells =3D <0>; + #io-channel-cells =3D <1>; + status =3D "disabled"; + }; + ohci: usb@92040000 { compatible =3D "generic-ohci"; reg =3D <0 0x92040000 0 0x100>; --=20 2.51.0 From nobody Wed Oct 1 20:33:18 2025 Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BD4D52EB852; Wed, 1 Oct 2025 12:24:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759321476; cv=none; b=rsp6lewNlPovCd0jVDpez1AFsBvm40DPsKXR8K29Cv5WKFOSIm4NbSdlcZe4vT78Jy5yfLknewwuUFJzxyt3oADQgrBKqR8QGFd4W92eU7XP/szOFl9UP2NNncZER1IEzza6ggKyq5L+RLO23mLEH7b1ly2y4JKhamADrJbZ/oU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759321476; c=relaxed/simple; bh=XQ3XKuMVVnlhB58MduVr+0rxBWpHh/TwGzeY/ypNSww=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XukaiopPxSyvm1Gjtk9X1B6+eASQ5+tdEm/jo25urqcWpsp9tS7MCLnyAJCpat+4Nc4kvb/ZpvgmRsHINDvJD+pj1YoQiAL32eSj6z8ipLIgQMbn4rcRsPaekqWtOal02dIJGSyhj5Q15ZQ2dbtIPvKidvS9TVoq6GnVKtb0wA4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; arc=none smtp.client-ip=210.160.252.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com X-CSE-ConnectionGUID: P0A2ztAXT0a/ptPrxWlU/g== X-CSE-MsgGUID: Tv38kF6gTAW37LXoCgsmNQ== Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie6.idc.renesas.com with ESMTP; 01 Oct 2025 21:24:34 +0900 Received: from demon-pc.localdomain (unknown [10.226.93.1]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id 53AA04197143; Wed, 1 Oct 2025 21:24:30 +0900 (JST) From: Cosmin Tanislav To: Cc: Cosmin Tanislav , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Geert Uytterhoeven , Magnus Damm , linux-iio@vger.kernel.org, linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 6/7] arm64: dts: renesas: rzt2h/rzn2h-evk: enable ADCs Date: Wed, 1 Oct 2025 15:23:13 +0300 Message-ID: <20251001122326.4024391-7-cosmin-gabriel.tanislav.xa@renesas.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251001122326.4024391-1-cosmin-gabriel.tanislav.xa@renesas.com> References: <20251001122326.4024391-1-cosmin-gabriel.tanislav.xa@renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The ADCs on RZ/T2H and RZ/N2H are exposed on the evaluation kit boards. Enable them. Signed-off-by: Cosmin Tanislav --- .../dts/renesas/r9a09g077m44-rzt2h-evk.dts | 28 +++++++ .../dts/renesas/r9a09g087m44-rzn2h-evk.dts | 64 +++++++++++++++ .../dts/renesas/rzt2h-n2h-evk-common.dtsi | 79 +++++++++++++++++++ 3 files changed, 171 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/r9a09g077m44-rzt2h-evk.dts b/arch/= arm64/boot/dts/renesas/r9a09g077m44-rzt2h-evk.dts index 9170c563208a..e94b84393bd9 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g077m44-rzt2h-evk.dts +++ b/arch/arm64/boot/dts/renesas/r9a09g077m44-rzt2h-evk.dts @@ -252,3 +252,31 @@ usb_pins: usb-pins { ; /* OVRCUR */ }; }; + +&adc2 { + status =3D "okay"; + + channel@0 { + reg =3D <0x0>; + }; + + channel@1 { + reg =3D <0x1>; + }; + + channel@2 { + reg =3D <0x2>; + }; + + channel@3 { + reg =3D <0x3>; + }; + + channel@4 { + reg =3D <0x4>; + }; + + channel@5 { + reg =3D <0x5>; + }; +}; diff --git a/arch/arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts b/arch/= arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts index 279f2510044b..d27da157c6d6 100644 --- a/arch/arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts +++ b/arch/arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts @@ -305,3 +305,67 @@ usb_pins: usb-pins { ; /* OVRCUR */ }; }; + +&adc2 { + status =3D "okay"; + + channel@0 { + reg =3D <0x0>; + }; + + channel@1 { + reg =3D <0x1>; + }; + + channel@2 { + reg =3D <0x2>; + }; + + channel@3 { + reg =3D <0x3>; + }; + + channel@4 { + reg =3D <0x4>; + }; + + channel@5 { + reg =3D <0x5>; + }; + + channel@6 { + reg =3D <0x6>; + }; + + channel@7 { + reg =3D <0x7>; + }; + + channel@8 { + reg =3D <0x8>; + }; + + channel@9 { + reg =3D <0x9>; + }; + + channel@a { + reg =3D <0xa>; + }; + + channel@b { + reg =3D <0xb>; + }; + + channel@c { + reg =3D <0xc>; + }; + + channel@d { + reg =3D <0xd>; + }; + + channel@e { + reg =3D <0xe>; + }; +}; diff --git a/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi b/arch/a= rm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi index 9ca26725a3e9..a7123a9ec684 100644 --- a/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi +++ b/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi @@ -338,3 +338,82 @@ &wdt2 { status =3D "okay"; timeout-sec =3D <60>; }; + +/* + * ADC0 AN000 can be connected to a potentiometer on the board or + * exposed on ADC header. + * + * T2H: + * SW17[1] =3D ON, SW17[2] =3D OFF - Potentiometer + * SW17[1] =3D OFF, SW17[2] =3D ON - CN41 header + * N2H: + * DSW6[1] =3D OFF, DSW6[2] =3D ON - Potentiometer + * DSW6[1] =3D ON, DSW6[2] =3D OFF - CN3 header + */ +&adc0 { + status =3D "okay"; + + channel@0 { + reg =3D <0x0>; + }; + + channel@1 { + reg =3D <0x1>; + }; + + channel@2 { + reg =3D <0x2>; + }; + + channel@3 { + reg =3D <0x3>; + }; +}; + +/* + * ADC1 AN100 can be exposed on ADC header or on mikroBUS connector. + * + * T2H: + * SW18[1] =3D ON, SW18[2] =3D OFF - CN42 header + * SW18[1] =3D OFF, SW18[2] =3D ON - mikroBUS + * N2H: + * DSW6[3] =3D ON, DSW6[4] =3D OFF - CN4 header + * DSW6[3] =3D OFF, DSW6[4] =3D ON - mikroBUS + * + * ADC1 AN101 can be exposed on ADC header or on Grove2 connector. + * + * T2H: + * SW18[3] =3D ON, SW18[4] =3D OFF - CN42 header + * SW18[3] =3D OFF, SW18[4] =3D ON - Grove2 + * N2H: + * DSW6[5] =3D ON, DSW6[6] =3D OFF - CN4 header + * DSW6[5] =3D OFF, DSW6[6] =3D ON - Grove2 + * + * ADC1 AN102 can be exposed on ADC header or on Grove2 connector. + * + * T2H: + * SW18[5] =3D ON, SW18[6] =3D OFF - CN42 header + * SW18[5] =3D OFF, SW18[6] =3D ON - Grove2 + * N2H: + * DSW6[7] =3D ON, DSW6[8] =3D OFF - CN4 header + * DSW6[7] =3D OFF, DSW6[8] =3D ON - Grove2 + */ +&adc1 { + status =3D "okay"; + + channel@0 { + reg =3D <0x0>; + }; + + channel@1 { + reg =3D <0x1>; + }; + + channel@2 { + reg =3D <0x2>; + }; + + channel@3 { + reg =3D <0x3>; + }; +}; --=20 2.51.0 From nobody Wed Oct 1 20:33:18 2025 Received: from relmlie5.idc.renesas.com (relmlor1.renesas.com [210.160.252.171]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1B8C52EA477; Wed, 1 Oct 2025 12:24:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759321482; cv=none; b=cb7EPxtrCtZDheoTSinnKv/zHULU2YTv3cmIynwRGNxWrsTGRFh88fxw1xjfC7l7UC73YmYmANK03/5BVLhsTZnfn1ATENyc3c4u3aXilmRTWPEx9XRSFbAg14SbnhmzsqS3SZFqAlONpBG+STohvJ9nGu/40hEfI9KjmwdH8vQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759321482; c=relaxed/simple; bh=tnTqUW1CCfg20bZn8bGpLx7RaTcWjSs1bsmxkTRlM+Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LIaDqE558jd5uH1l/P4hnA/2dgkJsbZ3om84uXDFRet2S4bQImG+oLz0tCDbpGE+KYBBDns8iF7BVpJgwF9IPafkITIypAvKMqrAPNcdpOpT7CpopA/f1uGnshse2Dtfhp9QepREs15qzbX0FOazWFgp9AQGtBV/+jCiO+oEUFQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; arc=none smtp.client-ip=210.160.252.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com X-CSE-ConnectionGUID: 63swcoD6QeOm+Cpw9G+new== X-CSE-MsgGUID: M/r6d7RCQz2F/1Mjjlqzvg== Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie5.idc.renesas.com with ESMTP; 01 Oct 2025 21:24:40 +0900 Received: from demon-pc.localdomain (unknown [10.226.93.1]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id E0AD34196E62; Wed, 1 Oct 2025 21:24:35 +0900 (JST) From: Cosmin Tanislav To: Cc: Cosmin Tanislav , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Geert Uytterhoeven , Magnus Damm , linux-iio@vger.kernel.org, linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 7/7] arm64: defconfig: enable RZ/T2H / RZ/N2H ADC driver Date: Wed, 1 Oct 2025 15:23:14 +0300 Message-ID: <20251001122326.4024391-8-cosmin-gabriel.tanislav.xa@renesas.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251001122326.4024391-1-cosmin-gabriel.tanislav.xa@renesas.com> References: <20251001122326.4024391-1-cosmin-gabriel.tanislav.xa@renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Renesas RZ/T2H (R9A09G077) and RZ/N2H (R9A09G087) SoCs include three 12-Bit successive approximation A/D converters. RZ/T2H has two ADCs with 4 channels and one with 6. RZ/N2H has two ADCs with 4 channels and one with 15. Enable the driver for them. Signed-off-by: Cosmin Tanislav --- arch/arm64/configs/defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig index 8fd1bf869942..3a1326652d47 100644 --- a/arch/arm64/configs/defconfig +++ b/arch/arm64/configs/defconfig @@ -1581,6 +1581,7 @@ CONFIG_QCOM_SPMI_VADC=3Dm CONFIG_QCOM_SPMI_ADC5=3Dm CONFIG_ROCKCHIP_SARADC=3Dm CONFIG_RZG2L_ADC=3Dm +CONFIG_RZT2H_ADC=3Dm CONFIG_SOPHGO_CV1800B_ADC=3Dm CONFIG_TI_ADS1015=3Dm CONFIG_TI_AM335X_ADC=3Dm --=20 2.51.0