From nobody Wed Oct 8 17:34:31 2025 Received: from mail-qv1-f44.google.com (mail-qv1-f44.google.com [209.85.219.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0EB6F2D4B7B for ; Wed, 25 Jun 2025 16:41:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750869687; cv=none; b=YQSeG9QvkIbn/fJj9xmO2rxntacyguOOgbFnqNKNfCGzMe/trtfyTjL3zG7kdvJhFtTJT/UK7ukI731hncRB3Ajue9ufBrJoJZoLbzE+H23CLxtb8w0J/nIDZr//Ju4hjh4OiX5A7SC0PJ00DmDuxA+tmwpfdd2omNyPDWJMGag= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750869687; c=relaxed/simple; bh=hMn6z2AZyzcbL/cGMK7HwRD4mhVABvJkOEyvUbzSheE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=U0hIMK3yZKQ1Ncfg3f01bhbkvpy3ajjiIy2duI06BWogSDjOqoDYag+49G3GkKhhMU8T6Sx/6gQ3e+WVCTADitP784KTBxKTcK1MMKf9gDdgWqDUiyu/XwZQWzZcSMXnVs4kVzJ7UMrzk6gKp/20Fs4fzp5TvIEIXHrCeBZtDhE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com; spf=pass smtp.mailfrom=riscstar.com; dkim=pass (2048-bit key) header.d=riscstar-com.20230601.gappssmtp.com header.i=@riscstar-com.20230601.gappssmtp.com header.b=0lnVmzdc; arc=none smtp.client-ip=209.85.219.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=riscstar.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=riscstar-com.20230601.gappssmtp.com header.i=@riscstar-com.20230601.gappssmtp.com header.b="0lnVmzdc" Received: by mail-qv1-f44.google.com with SMTP id 6a1803df08f44-6fad8b4c927so1526756d6.0 for ; Wed, 25 Jun 2025 09:41:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=riscstar-com.20230601.gappssmtp.com; s=20230601; t=1750869685; x=1751474485; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=onUZmipuuggYzLIHkuYvhE+eJtHfnxxJxJfL7IX4aE0=; b=0lnVmzdcyco+AcCWPdejdfNP73E040O3ytndwojuKP/0zZ+6VsjO0ZvLb0r7yE1qGb 28qd4vt/oDd5xoS/WP14/01BY8C1ftpiZDDAkzA/AqueXfU3I6QpnGKODCLmwtnheGRS e54ys3QXpjVC8jNBDduCR/CgKAvGxVPW4RTtUj4Gk/Ah3c/12RC0AaLXvPRlrch4EyLC PFvQl1nQI8AoJbSd0HRo2mZCgS/pY42Tj2+kQY72DyE+1ix0cKc4Fuu5yswuWCuB02hB 1vLklzXem+JtEorWPQ7FZ3KWgKaM4/FoRT3ML9SferpIzfxwxt6qbRVjNe2g0ANcLgg7 KMBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750869685; x=1751474485; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=onUZmipuuggYzLIHkuYvhE+eJtHfnxxJxJfL7IX4aE0=; b=ftvaaCpI5SIuHG5NjkaBMJ2khX5qnU32L3D/bAqmIbB11VyJ7frXLXe+M/aVmHnbZ0 NlEcadYbwi75Jhya/XoVzA4UP/CyD9Ai9nuXwgd//v+nFrEHqShk7E/cuj3wflf+KqGw KETwPnm1p+kP0KavGHEsA4E+hfinpB4EnVNzGkMCQ53sCB4OGL4UXgHR1DQ0fNRevOK3 Io+h/H/dX3jCyHP22lzMLOn72M3X7X5RQlyMMNan70Vb1YwDHYGYazrYR0YnhuH4IYEg 2geCvsY8yocEJ92XvwkAiVH9P/yOa75FYqCqE6nPiTZ6CaUoUUar94wH9KXzYgoRam9T KwvQ== X-Forwarded-Encrypted: i=1; AJvYcCVq6+qfp3/FfvhHgvarm9alFGsy0SXqNKYIKKHs4EFrdOzyfqCy+AOjUwCrBjmUKneWpPf2jFcoCsWKssI=@vger.kernel.org X-Gm-Message-State: AOJu0YwTPWPFscp8nltylPGOEvbVEy9bh3ARVwZl2HXgYEx0Two/zeVH rsXTJrd4eiivZUKgrF8/ICJoRB6KsYkEmLPcHwbCBCInZ6Mldxs7++f6b/iQO+C3tDM= X-Gm-Gg: ASbGnctHSKqxpctfceW70vXazo366yIb73Z/jqgH1d71hXyVjLVLZ/I0SKcjdu1jsUg mwutuuO1BNoNTgfDI4GXQF1SAINgQn/MgWabii8HY8MD/ID3P7MNJ8ed7I/w1VwFd3HxZ9sPjRa w+4RQ6nKUvoBPfXcHJfT9blLYFT5KXlUG7IvrAx4krBrOlSli1el7+9Wt9IeT//8eCW7MuR+1t3 lbgpV19MBQD4hqKc8P9LP7rGpqCYktq1p7cry5KhrLTkR9beFxK0PZwEy6dU44yVhJWzYl1YjtI WLvQeNiuH9jYW0BX8ztANTi8FPMmXp2SndenH1ZCValWiaMr9W3pwXdIyeyzKWsOwbSR0BrpMD9 5ECE1imy5i3n+RrEcTtanoO8YcPY19fwu1yYEXMddqQ1fIg== X-Google-Smtp-Source: AGHT+IEJjH8bQjuNwdtdMHcIqr7TaeXw94sA8Sz7we5uKf6oSd/0mHR3v6BiNGUMN+0Ha8bqXVo/yg== X-Received: by 2002:a05:6214:dad:b0:6fa:fcb0:b88d with SMTP id 6a1803df08f44-6fd5efab193mr58692036d6.28.1750869684773; Wed, 25 Jun 2025 09:41:24 -0700 (PDT) Received: from localhost.localdomain (c-73-228-159-35.hsd1.mn.comcast.net. [73.228.159.35]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7d3ffdb190esm576783085a.86.2025.06.25.09.41.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Jun 2025 09:41:24 -0700 (PDT) From: Alex Elder To: lee@kernel.org, lgirdwood@gmail.com, broonie@kernel.org, alexandre.belloni@bootlin.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mat.jonczyk@o2.pl, dlan@gentoo.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, troymitchell988@gmail.com, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v4 1/7] dt-bindings: mfd: add support the SpacemiT P1 PMIC Date: Wed, 25 Jun 2025 11:41:12 -0500 Message-ID: <20250625164119.1068842-2-elder@riscstar.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250625164119.1068842-1-elder@riscstar.com> References: <20250625164119.1068842-1-elder@riscstar.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" Enable the SpacemiT P1, which is an I2C-controlled PMIC. Initially only the RTC and regulators will be supported. Signed-off-by: Alex Elder --- .../devicetree/bindings/mfd/spacemit,p1.yaml | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 Documentation/devicetree/bindings/mfd/spacemit,p1.yaml diff --git a/Documentation/devicetree/bindings/mfd/spacemit,p1.yaml b/Docum= entation/devicetree/bindings/mfd/spacemit,p1.yaml new file mode 100644 index 0000000000000..5cc34d4934b54 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/spacemit,p1.yaml @@ -0,0 +1,86 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mfd/spacemit,p1.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: SpacemiT P1 Power Management Integrated Circuit + +maintainers: + - Troy Mitchell + +description: + P1 is an I2C-controlled PMIC produced by SpacemiT. It implements six + constant-on-time buck converters and twelve low-dropout regulators. + It also contains a load switch, watchdog timer, real-time clock, eight + 12-bit ADC channels, and six GPIOs. Additional details are available + in the "Power Stone/P1" section at the following link. + https://developer.spacemit.com/documentation + +properties: + compatible: + const: spacemit,p1 + + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + vin-supply: + description: Input supply phandle. + + regulators: + type: object + + patternProperties: + "^(buck[1-6]|aldo[1-4]|dldo[1-7])$": + type: object + $ref: /schemas/regulator/regulator.yaml# + unevaluatedProperties: false + + unevaluatedProperties: false + +required: + - compatible + - reg + - interrupts + +unevaluatedProperties: false + +examples: + - | + i2c { + #address-cells =3D <1>; + #size-cells =3D <0>; + + pmic@41 { + compatible =3D "spacemit,p1"; + reg =3D <0x41>; + interrupts =3D <64>; + + regulators { + buck1 { + regulator-name =3D "buck1"; + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3450000>; + regulator-ramp-delay =3D <5000>; + regulator-always-on; + }; + + aldo1 { + regulator-name =3D "aldo1"; + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3400000>; + regulator-boot-on; + }; + + dldo1 { + regulator-name =3D "dldo1"; + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3400000>; + regulator-boot-on; + }; + }; + }; + }; --=20 2.45.2 From nobody Wed Oct 8 17:34:31 2025 Received: from mail-qv1-f47.google.com (mail-qv1-f47.google.com [209.85.219.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 587AE2D5419 for ; Wed, 25 Jun 2025 16:41:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750869689; cv=none; b=X9J6Yf3SDZrZWbKhP/tS/TguLKyBoCcl3paqlNj3RJ8q/rzPJLJCorK+8TK+O9G6FeT1Rd9FPipj1p3B7DM0rY7OQechJ1M6F6PNMX89O7Ga9PWbZVTbbTX0S1r2Uq8ekrKIuQL0hCDnLWny6tq6dzoAPv5mEua3SkvOPHgRiQQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750869689; c=relaxed/simple; bh=3NwBP3VAjPu7EVZaVzYEgfspykpp/rccLhvU9/CZmWA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OCfUSyJ7IlvW7N0oa2fmCWHSsisW3JAcLO3ep4kT0PPs+UFc6k+yjw4vTZfFjKTTtUjuYIdQ0l2+LILaydsmXtknRqDjVmEhMvsbVKD0rK43yOtbXE2jKnqfrk5Mp3j1zpmlZJBf+l2Ltsvjnudq48LimtGSEDKeQAgj6nriNeY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com; spf=pass smtp.mailfrom=riscstar.com; dkim=pass (2048-bit key) header.d=riscstar-com.20230601.gappssmtp.com header.i=@riscstar-com.20230601.gappssmtp.com header.b=AbgM+knz; arc=none smtp.client-ip=209.85.219.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=riscstar.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=riscstar-com.20230601.gappssmtp.com header.i=@riscstar-com.20230601.gappssmtp.com header.b="AbgM+knz" Received: by mail-qv1-f47.google.com with SMTP id 6a1803df08f44-6fabe9446a0so1584296d6.2 for ; Wed, 25 Jun 2025 09:41:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=riscstar-com.20230601.gappssmtp.com; s=20230601; t=1750869686; x=1751474486; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EiYMAk+n2KFVeD6iTdiytYbReYUGJB4T1awuY5N83BA=; b=AbgM+knzYnIspw/vVzBC5ovKRwag2XnwMU3H4mBJExK8d/9Z/nnDhZSrxZdWwXq4AR SDiVZ6O5nq3EgUnMnOy5zK3ZQmg3P5uWfUgaCSXcBfOi0SZnmBYTBfsoahegA643myr8 /zKGEvi23Azq1p44+5qxuiobt04bwqWAVJerjqSr3gBYv9gdsS7KANXeGjVT94nI2SOK KrYF7ACTqTTRAG/eEQGbq5h1gzO4pGmQyLyEhwXIwW8vEB0pGEq/urmRq2tg1IPuxGv+ nFpE6232fhed3SJfcdlgWffpY68z4y33bCnxwFbmnNdWr3abENZziQCMiZvgJ7oK2cMw hg5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750869686; x=1751474486; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EiYMAk+n2KFVeD6iTdiytYbReYUGJB4T1awuY5N83BA=; b=NLzfu/8zeAG2V8vlZqlg6XK6pMHCxaQ1o75lh+LMkGUw+E8X5mhdvclgGiVmwrDf7T lq6JzYlIaITpSnleCRADTScuipZFQ1uXTWT2LyX+/x4vVKXx4deJuWyvuJf31o9I2MDl umFR/rDrmvFf4G2APuvz0MiFBqKYnc5VHwoJqU94wBTPCPZGaPaY/8BGaVmo3XmJn6ql JUlr/pxWLVyUG58+LsRQkWvYQOWcgadmCvRLQq91J13EuCtXWEKJSR5imlbTo1/WnQlP lByNkh/c51bEKcFDvP7WJfeqDtATHXv8XYSbLeRIb1vr04uBE6HP6xEfaa3ZvtUEXOC0 Yk8Q== X-Forwarded-Encrypted: i=1; AJvYcCV7WoRKnbMQBh752MEnsXuSTMtbzMJCSdRbMXL9/bMcpbGWngCpFQ1T7Pu7/8aivd9zzNV31WzUmcnv0bE=@vger.kernel.org X-Gm-Message-State: AOJu0YyTqczcl4ZkbwMqhZLqfmoG7IqqXLOpnF55sF8CR9WCqalIa8mA Q7ZECigGqx/TNywm8pNJCQ104lpkJpxdX1H7j0ygQjE0F2OB4h4Ps6tnipL4Ci7qkGg= X-Gm-Gg: ASbGncvFnwknA7KmDJ9ATqRz3v1pLPo30tXP9c0aJ6kc+pnw6vvoNLRS249XUu0hWV7 UrpwlFQ73mZGz759XnQrFOkxzyl2WbyZLSSX5Hn+Ku/VNpi3G/EYyJKBMyslDbME80p+5aXemeE 8Ku+xL50EqKjKZOKKH2ptb8AWSt1mhXEIM58Un+vfvM681Zka6UbuRFQ7fTJy23RGranc97mDtN T1wdBkBUVb3wK3mRXsRXMhapNFy3+Vk99z69+Cji6bMZKBPeiJ3h0ZVJlD+KqnhOepWQ6TmOrKx mWa2CiraugnTGoZaDSl+te+E+cW7S1kQeHlIIlI5X4yu8+L44kkVAE4eNy9HiK9U7p2NUJsC8pL Bf9fwqZviEWh2thRVv6PlCefjXt7XEuNcLXQ= X-Google-Smtp-Source: AGHT+IE1or5SFKNkcRKmq8LFw9DnBikVJYe2AFiC9sbCjtCfT/HtlItDWp87qBFYsQunHs2yQD2B7Q== X-Received: by 2002:a05:6214:f0b:b0:6e8:fcde:58d5 with SMTP id 6a1803df08f44-6fd5efa696emr52880996d6.42.1750869686196; Wed, 25 Jun 2025 09:41:26 -0700 (PDT) Received: from localhost.localdomain (c-73-228-159-35.hsd1.mn.comcast.net. [73.228.159.35]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7d3ffdb190esm576783085a.86.2025.06.25.09.41.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Jun 2025 09:41:25 -0700 (PDT) From: Alex Elder To: lee@kernel.org, lgirdwood@gmail.com, broonie@kernel.org, alexandre.belloni@bootlin.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mat.jonczyk@o2.pl, dlan@gentoo.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, troymitchell988@gmail.com, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v4 2/7] mfd: simple-mfd-i2c: add SpacemiT P1 support Date: Wed, 25 Jun 2025 11:41:13 -0500 Message-ID: <20250625164119.1068842-3-elder@riscstar.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250625164119.1068842-1-elder@riscstar.com> References: <20250625164119.1068842-1-elder@riscstar.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" Enable support for the RTC and regulators found in the SpacemiT P1 PMIC. Support is implemented by the simple I2C MFD driver. The P1 PMIC is normally implemented with the SpacemiT K1 SoC. This PMIC provides 6 buck converters and 12 LDO regulators. It also implements a switch, watchdog timer, real-time clock, and more. Initially its RTC and regulators are supported. Signed-off-by: Alex Elder --- v4: - Add a dependency on I2C, to avoid a CROSS_COMPILE build error drivers/mfd/Kconfig | 11 +++++++++++ drivers/mfd/simple-mfd-i2c.c | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index 6fb3768e3d71c..01805c3eec57d 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -1182,6 +1182,17 @@ config MFD_QCOM_RPM Say M here if you want to include support for the Qualcomm RPM as a module. This will build a module called "qcom_rpm". =20 +config MFD_SPACEMIT_P1 + tristate "SpacemiT P1 PMIC" + depends on I2C + select MFD_SIMPLE_MFD_I2C + help + This option supports the I2C-based SpacemiT P1 PMIC, which + contains regulators, a power switch, GPIOs, an RTC, and more. + This option is selected when any of the supported sub-devices + is configured. The basic functionality is implemented by the + simple MFD I2C driver. + config MFD_SPMI_PMIC tristate "Qualcomm SPMI PMICs" depends on ARCH_QCOM || COMPILE_TEST diff --git a/drivers/mfd/simple-mfd-i2c.c b/drivers/mfd/simple-mfd-i2c.c index 22159913bea03..026cd92e20ad3 100644 --- a/drivers/mfd/simple-mfd-i2c.c +++ b/drivers/mfd/simple-mfd-i2c.c @@ -93,12 +93,30 @@ static const struct simple_mfd_data maxim_mon_max77705 = =3D { .mfd_cell_size =3D ARRAY_SIZE(max77705_sensor_cells), }; =20 +static const struct regmap_config spacemit_p1_regmap_config =3D { + .reg_bits =3D 8, + .val_bits =3D 8, + .max_register =3D 0xaa, +}; + +static const struct mfd_cell spacemit_p1_cells[] =3D { + { .name =3D "spacemit-p1-regulator", }, + { .name =3D "spacemit-p1-rtc", }, +}; + +static const struct simple_mfd_data spacemit_p1 =3D { + .regmap_config =3D &spacemit_p1_regmap_config, + .mfd_cell =3D spacemit_p1_cells, + .mfd_cell_size =3D ARRAY_SIZE(spacemit_p1_cells), +}; + static const struct of_device_id simple_mfd_i2c_of_match[] =3D { { .compatible =3D "kontron,sl28cpld" }, { .compatible =3D "silergy,sy7636a", .data =3D &silergy_sy7636a}, { .compatible =3D "maxim,max5970", .data =3D &maxim_max5970}, { .compatible =3D "maxim,max5978", .data =3D &maxim_max5970}, { .compatible =3D "maxim,max77705-battery", .data =3D &maxim_mon_max77705= }, + { .compatible =3D "spacemit,p1", .data =3D &spacemit_p1, }, {} }; MODULE_DEVICE_TABLE(of, simple_mfd_i2c_of_match); --=20 2.45.2 From nobody Wed Oct 8 17:34:31 2025 Received: from mail-qk1-f176.google.com (mail-qk1-f176.google.com [209.85.222.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9C9132D5C8B for ; Wed, 25 Jun 2025 16:41:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750869690; cv=none; b=CD5T3fM2h4ITqJFB7/hOgkfgRKJ4rBMGf3u7ydfOIX8T0QWAXR+g+4fYLgaEVUUJviIoU42vmNAkGrJjC1hoARGtOcwAOaKxaUHXOAkwDO0QEdgF272o8RStdDXZjn13tv8PqVBKV89wiTO2CouauEdFWDg6dqj5vZiH9oJkW9o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750869690; c=relaxed/simple; bh=j3Wcubq/3SRFXIT3gXxJqmDlxCU0DsP5Pxf1kaaTIt4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ErUZ8gJAb0VmOAWEkn98tmxwzCRpPohNU8L0mkpo2rEyl7Eh8wDqdcbz0I6xaCZ27ukXKDCwFWIbEISypAvwc/ZhjDv1h/bBCFROkVegNd5mbjmgqAWSNIf+miGIUJd9RAHbSU6Jmvo6IJ+VRRwZNzx0YXXbPsKD6SgYom3a12g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com; spf=pass smtp.mailfrom=riscstar.com; dkim=pass (2048-bit key) header.d=riscstar-com.20230601.gappssmtp.com header.i=@riscstar-com.20230601.gappssmtp.com header.b=s/EC7j76; arc=none smtp.client-ip=209.85.222.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=riscstar.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=riscstar-com.20230601.gappssmtp.com header.i=@riscstar-com.20230601.gappssmtp.com header.b="s/EC7j76" Received: by mail-qk1-f176.google.com with SMTP id af79cd13be357-7d21cecc11fso6649085a.3 for ; Wed, 25 Jun 2025 09:41:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=riscstar-com.20230601.gappssmtp.com; s=20230601; t=1750869688; x=1751474488; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2q5ZDFopB9ZTQOgdTyWswTXMkdYAfsuV4jYCvMQMM3U=; b=s/EC7j76QvUUtgP+zlx+o+VyxEb+aRxvYrcsJCNDWFKICuVJiD89+z4bqvmcaiEhMQ ajaV6IfrPL20AEfbcTcSO0V2oqhnHuTM4KmVm2IWqVwj1URVtnIf4EsBiE8VzVrAiLY8 GWBgA8zAEARbU/30/GMl8uVT4Yqru685L1DItYGwLwMSvZ3wl1ze+CsBvhSNjBdMMZ3s w7nmQVi97YysPiXHrlrxDEkMHst71GSIM0ZkR/SJjQhZpJP/0neXz+/RPLTpmHYTdICu zp90dL/sL/IZcvm6Cd0lZK7haZAbi2C/4g5xe8ZNF6ZGOYFyQ6tSTRtGNOtRXBwhgfTm IFOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750869688; x=1751474488; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2q5ZDFopB9ZTQOgdTyWswTXMkdYAfsuV4jYCvMQMM3U=; b=EYy9jclCCnop/AAG3HXKmlv9pLpSTmSjrFERXp76G4lA5pFVkVnuggj7OK46BKjczS xQzqzWsZEP2+Fm8hf/V0iAZBZ5QrV+728kngVMr34ISxd8NIPDRSl6heyViEwBBuiWvK QQjvPJUs2MCpn1FzCm9yXdOL1dX40pXwB9kjAC6i5k1id5y8gaAb/ynxkX1uJZH8iGnN Zg00imTU/E2xVTl6H4KJSPRRz2UlEN96sHHK3vqLHAgZsyQwVjneCNkJ6lQjOSu6b6On YgN9NSeg/QozGX7RWjiHzlOS9B9f3tCkI6JUy50JMAoCTQ7BfAEEWRC96NPr/i7XnowD ILgg== X-Forwarded-Encrypted: i=1; AJvYcCWIUovIO47+O/XwEe/XiCvjAxiPbwuXi5pm5NJr6IYQVBRPzmvv6JV1k7SVzpCBgK7WQFsEVw84DeczDgY=@vger.kernel.org X-Gm-Message-State: AOJu0YzuErZiDlKugkqZSALQq4I2JnsfU9ARDatXl+3nyE4NnZgmzv8J WUln0OE2UxCk+GBtfQiDlrSJVy+VWGXE7MqUleyKc9H607jINJO1P66qkzh2wJlMK/g= X-Gm-Gg: ASbGncsFnuPGQgl0NVC4wLL80wjTwTDuHnvqeW17442zete2/C+ce8dyFNz0YFdWEgA ezizZNfdsXdnnNek2EC6bOmNIdrabQzmDyrtork1aVfOL1LeQ4H+OkCI5wm5eCsJu5W4gi5zinx C90Znd5dQ+k/rPAweqQmCHo7mklbdh9SKCzxF/0hg6E2XLWLlgVL1t/n7HACRTasbtxc1C1qx0a nWRlO7I+FO08e7hun7I3Jm+i9cj11OEwDpyNrFDUP01LcY4jypKU/iNUudnOp/olBETNi62yxot BsnRbzhexcIUrPI2mVwIyyGeBdRn8eR/FqgXU8UsNJxKjNmhcb7Aa2Kfh/+/n4Eex9w3/UQWZhy GRWgEM9n1Bl1qlqWsFzTcel5i+A2uWuXCYrtNai1YTtha+w== X-Google-Smtp-Source: AGHT+IFn7ZOQgH1mSHsZuDYkfEi5oqMvdpP6GqyR9/sd3nkYgujz/NnPZDQpr8gwfqeK46S8X9akLw== X-Received: by 2002:a05:620a:46a2:b0:7d3:c6b0:1d91 with SMTP id af79cd13be357-7d4296e7b63mr432164185a.16.1750869687633; Wed, 25 Jun 2025 09:41:27 -0700 (PDT) Received: from localhost.localdomain (c-73-228-159-35.hsd1.mn.comcast.net. [73.228.159.35]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7d3ffdb190esm576783085a.86.2025.06.25.09.41.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Jun 2025 09:41:27 -0700 (PDT) From: Alex Elder To: lee@kernel.org, lgirdwood@gmail.com, broonie@kernel.org, alexandre.belloni@bootlin.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mat.jonczyk@o2.pl, dlan@gentoo.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, troymitchell988@gmail.com, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v4 3/7] regulator: spacemit: support SpacemiT P1 regulators Date: Wed, 25 Jun 2025 11:41:14 -0500 Message-ID: <20250625164119.1068842-4-elder@riscstar.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250625164119.1068842-1-elder@riscstar.com> References: <20250625164119.1068842-1-elder@riscstar.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" Add support for the regulators found in the SpacemiT P1 PMIC. This PMIC provides 6 buck converters and 12 LDO regulators. The PMIC is implemented as a multi-function device. These regulators are probed based on this driver being named in a MFD cell in the simple MFD I2C driver. Signed-off-by: Alex Elder Reviewed-by: Mark Brown --- drivers/regulator/Kconfig | 12 +++ drivers/regulator/Makefile | 1 + drivers/regulator/spacemit-p1.c | 157 ++++++++++++++++++++++++++++++++ 3 files changed, 170 insertions(+) create mode 100644 drivers/regulator/spacemit-p1.c diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig index 7423954153b07..3e7feeebf8aca 100644 --- a/drivers/regulator/Kconfig +++ b/drivers/regulator/Kconfig @@ -1395,6 +1395,18 @@ config REGULATOR_SLG51000 The SLG51000 is seven compact and customizable low dropout regulators. =20 +config REGULATOR_SPACEMIT_P1 + tristate "SpacemiT P1 regulators" + depends on ARCH_SPACEMIT || COMPILE_TEST + select MFD_SPACEMIT_P1 + default ARCH_SPACEMIT + help + Enable support for regulators implemented by the SpacemiT P1 + power controller. The P1 implements 6 high-efficiency buck + converters and 12 programmable LDO regulators. To compile this + driver as a module, choose M here. The module will be called + "spacemit-pmic". + config REGULATOR_STM32_BOOSTER tristate "STMicroelectronics STM32 BOOSTER" depends on ARCH_STM32 || COMPILE_TEST diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile index be98b29d6675d..278f5b8d1c7d7 100644 --- a/drivers/regulator/Makefile +++ b/drivers/regulator/Makefile @@ -162,6 +162,7 @@ obj-$(CONFIG_REGULATOR_S5M8767) +=3D s5m8767.o obj-$(CONFIG_REGULATOR_SC2731) +=3D sc2731-regulator.o obj-$(CONFIG_REGULATOR_SKY81452) +=3D sky81452-regulator.o obj-$(CONFIG_REGULATOR_SLG51000) +=3D slg51000-regulator.o +obj-$(CONFIG_REGULATOR_SPACEMIT_P1) +=3D spacemit-p1.o obj-$(CONFIG_REGULATOR_STM32_BOOSTER) +=3D stm32-booster.o obj-$(CONFIG_REGULATOR_STM32_VREFBUF) +=3D stm32-vrefbuf.o obj-$(CONFIG_REGULATOR_STM32_PWR) +=3D stm32-pwr.o diff --git a/drivers/regulator/spacemit-p1.c b/drivers/regulator/spacemit-p= 1.c new file mode 100644 index 0000000000000..d437e6738ea1e --- /dev/null +++ b/drivers/regulator/spacemit-p1.c @@ -0,0 +1,157 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Driver for regulators found in the SpacemiT P1 PMIC + * + * Copyright (C) 2025 by RISCstar Solutions Corporation. All rights reser= ved. + * Derived from code from SpacemiT. + * Copyright (c) 2023, SPACEMIT Co., Ltd + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#define MOD_NAME "spacemit-p1-regulator" + +enum p1_regulator_id { + P1_BUCK1, + P1_BUCK2, + P1_BUCK3, + P1_BUCK4, + P1_BUCK5, + P1_BUCK6, + + P1_ALDO1, + P1_ALDO2, + P1_ALDO3, + P1_ALDO4, + + P1_DLDO1, + P1_DLDO2, + P1_DLDO3, + P1_DLDO4, + P1_DLDO5, + P1_DLDO6, + P1_DLDO7, +}; + +static const struct regulator_ops p1_regulator_ops =3D { + .list_voltage =3D regulator_list_voltage_linear_range, + .get_voltage_sel =3D regulator_get_voltage_sel_regmap, + .set_voltage_sel =3D regulator_set_voltage_sel_regmap, + .set_voltage_time_sel =3D regulator_set_voltage_time_sel, + .enable =3D regulator_enable_regmap, + .disable =3D regulator_disable_regmap, + .is_enabled =3D regulator_is_enabled_regmap, +}; + +/* Selector value 255 can be used to disable the buck converter on sleep */ +static const struct linear_range p1_buck_ranges[] =3D { + REGULATOR_LINEAR_RANGE(500000, 0, 170, 5000), + REGULATOR_LINEAR_RANGE(1375000, 171, 254, 25000), +}; + +/* Selector value 0 can be used for suspend */ +static const struct linear_range p1_ldo_ranges[] =3D { + REGULATOR_LINEAR_RANGE(500000, 11, 127, 25000), +}; + +/* These define the voltage selector field for buck and LDO regulators */ +#define BUCK_MASK GENMASK(7, 0) +#define LDO_MASK GENMASK(6, 0) + +#define P1_ID(_TYPE, _n) P1_ ## _TYPE ## _n +#define P1_ENABLE_REG(_off, _n) ((_off) + 3 * ((_n) - 1)) + +#define P1_REG_DESC(_TYPE, _type, _n, _s, _off, _mask, _nv, _ranges) \ + { \ + .name =3D #_type #_n, \ + .supply_name =3D _s, \ + .of_match =3D of_match_ptr(#_type #_n), \ + .regulators_node =3D of_match_ptr("regulators"), \ + .id =3D P1_ID(_TYPE, _n), \ + .n_voltages =3D _nv, \ + .ops =3D &p1_regulator_ops, \ + .owner =3D THIS_MODULE, \ + .linear_ranges =3D _ranges, \ + .n_linear_ranges =3D ARRAY_SIZE(_ranges), \ + .vsel_reg =3D P1_ENABLE_REG(_off, _n) + 1, \ + .vsel_mask =3D _mask, \ + .enable_reg =3D P1_ENABLE_REG(_off, _n), \ + .enable_mask =3D BIT(0), \ + } + +#define P1_BUCK_DESC(_n) \ + P1_REG_DESC(BUCK, buck, _n, "vcc", 0x47, BUCK_MASK, 254, p1_buck_ranges) + +#define P1_ALDO_DESC(_n) \ + P1_REG_DESC(ALDO, aldo, _n, "vcc", 0x5b, LDO_MASK, 117, p1_ldo_ranges) + +#define P1_DLDO_DESC(_n) \ + P1_REG_DESC(DLDO, dldo, _n, "buck5", 0x67, LDO_MASK, 117, p1_ldo_ranges) + +static const struct regulator_desc p1_regulator_desc[] =3D { + P1_BUCK_DESC(1), + P1_BUCK_DESC(2), + P1_BUCK_DESC(3), + P1_BUCK_DESC(4), + P1_BUCK_DESC(5), + P1_BUCK_DESC(6), + + P1_ALDO_DESC(1), + P1_ALDO_DESC(2), + P1_ALDO_DESC(3), + P1_ALDO_DESC(4), + + P1_DLDO_DESC(1), + P1_DLDO_DESC(2), + P1_DLDO_DESC(3), + P1_DLDO_DESC(4), + P1_DLDO_DESC(5), + P1_DLDO_DESC(6), + P1_DLDO_DESC(7), +}; + +static int p1_regulator_probe(struct platform_device *pdev) +{ + struct regulator_config config =3D { }; + struct device *dev =3D &pdev->dev; + u32 i; + + /* + * The parent device (PMIC) owns the regmap. Since we don't + * provide one in the config structure, that one will be used. + */ + config.dev =3D dev->parent; + + for (i =3D 0; i < ARRAY_SIZE(p1_regulator_desc); i++) { + const struct regulator_desc *desc =3D &p1_regulator_desc[i]; + struct regulator_dev *rdev; + + rdev =3D devm_regulator_register(dev, desc, &config); + if (IS_ERR(rdev)) + return dev_err_probe(dev, PTR_ERR(rdev), + "error registering regulator %s\n", + desc->name); + } + + return 0; +} + +static struct platform_driver p1_regulator_driver =3D { + .probe =3D p1_regulator_probe, + .driver =3D { + .name =3D MOD_NAME, + }, +}; + +module_platform_driver(p1_regulator_driver); + +MODULE_DESCRIPTION("SpacemiT P1 regulator driver"); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:" MOD_NAME); --=20 2.45.2 From nobody Wed Oct 8 17:34:31 2025 Received: from mail-qv1-f48.google.com (mail-qv1-f48.google.com [209.85.219.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7DE982D8779 for ; Wed, 25 Jun 2025 16:41:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750869693; cv=none; b=Xrgi3POruQJ+5DgA5dEEnq9xGEZMc1U/qxMsW7BEcRh0pjjJu7Bg8vx7CcLqO6NzB6r/y7IA2wFczpM2mPgY6EAfBogRW3PT+nU6ylDxtDHao2ykzerkqT20AOQeYNALS4NOUO9dbRa/j2CALgwX7LGkaVeh7Ucm2JcJkPrydRY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750869693; c=relaxed/simple; bh=iBNxwWt5RVG6aorzlp6NmbugrktgSEKzYp0YaYxUbVk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=W6/9oyNXGX7DgDe/V4qH1cBphyHTOyH+Cf3ELcQj7KtkP963LQLJa0hGXgbK3cAKYm9+T3zmATgsmWzThz/banfSvtAYJnsW80zq9i7SU5xOxtOTdDAgD2PsdrrdlA2R0oBZVvzYg6oHdBH5pJV4ZY1+KhFTKWQWogLRO654pNc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com; spf=pass smtp.mailfrom=riscstar.com; dkim=pass (2048-bit key) header.d=riscstar-com.20230601.gappssmtp.com header.i=@riscstar-com.20230601.gappssmtp.com header.b=g76NzzCu; arc=none smtp.client-ip=209.85.219.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=riscstar.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=riscstar-com.20230601.gappssmtp.com header.i=@riscstar-com.20230601.gappssmtp.com header.b="g76NzzCu" Received: by mail-qv1-f48.google.com with SMTP id 6a1803df08f44-6fadd3ad18eso1227236d6.2 for ; Wed, 25 Jun 2025 09:41:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=riscstar-com.20230601.gappssmtp.com; s=20230601; t=1750869689; x=1751474489; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=5ECik/dLyp7V3J7nKrFzv5/sHAYEHXhANSBESMnVLr0=; b=g76NzzCuY50OTk4Wo6aUtD7orgRQWNV9WtrDIR3GMLKJ7lY1nVJjxNTLS0MAJ3yK77 Me8cuNXtMJe9v6SLGZWaJroPGm6vIqx3S/nx/JKZTvlEmXiEJm5h8vNOrDI3OsMXrObO Ya0V3jumn7L80PcSjC80sUZpt3sj3TAF0bq+e2u7Ibcse9qds9E6KV9aFuSUripZ9lFJ 1DI7ELuIiGtnLoa7fGtXXA6W3I1a5mz3L6r2tz/3xZMWgLqtJxym4lNe8xmkGStnS1h9 s8lsdNemYTXwemR8WxfZjrqDumkHKsodTl1MqDOy9vXRtxrb2MbE7e4rpWhQOU1puYTy nZRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750869689; x=1751474489; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5ECik/dLyp7V3J7nKrFzv5/sHAYEHXhANSBESMnVLr0=; b=jOQdhQQS2Y4e7Xwa7ARNR8fGooho9EICBxSsGnVqT1JA+q06TNBNU4PrjtgT4BW34p i6ujnUzGR92iAZSeP9z/4XDSsGuUGBderye1ZmIa9czqKkky68b66NMYiprGxrFQT0+v 1kxVMIB+BgH+tInhC+UvugSYZcEds8e7wqFZe0V1o111xbslIjDheE4nTNKD4aQjR3ih NPwSS8jqazXa3xLd9trsfQ5vLwGw+3bYiN0CuYWO0Y9puoJm2XbCPaU2bH8B3N7yOYGy vC3m3+9CKFDqxJ6rdsIP+V8AoGjJ3xDMLYq1sZp+WXvw9lIOV+tTCDa9+VDC//XeuUE5 AOww== X-Forwarded-Encrypted: i=1; AJvYcCVi5C/N1RwWH/ywEunQqtYgGaFv7riSOEQd3ZfaGabK6xSUlUDIJNyubSpjuzOldbiBUyZyd+XUXD4E6OI=@vger.kernel.org X-Gm-Message-State: AOJu0Yzfet48MiecTokBnlOy0epbR4XcEmx1qIwzscGZMBcM/V29QjO/ mOrN0zh1/CldjBXA08UKK71RrxKAG/4HHgmz5xfF/tdXFyu8lcbPArttROnT83cQsQc= X-Gm-Gg: ASbGncsEbAD8bsjsRB5eEMON3gziAAnLl/tv9MgN4Uw7v255rv52Gn3N8Qkr5tErcHm D3DfcPjn8OKifJNuyda5u+CoSgebA1w06AdSENxjCrhGQc1qCoFVkYHOrVFzTkyxpmssgmlrJ+L 9zbLuzi+NzpyU64zXvFcU3OlAE5Zl44DyAl6W4kinIRWbyd8QMDjE+CKQ/NfABJNRMDddlAAHCo 4zMunJEkRO0unJCezMunZ9LkV/iI4dK+g2OHNot/CR+gPHSlp2zITelh7EJ9AtscmGiF8UucoNL 2W0PKuqBhIf5iZgUevDNt4S4R/V2xQW3yb7e6TQJdxKNSBPs1vVIfAdcwjYDVGhxT2qW0AwqrFC mzKEBsqzrKUlr8Qhava9GlVN0ElYw9CHICuY= X-Google-Smtp-Source: AGHT+IH2Rw6qDhj6gxPxTkfHXvCTXxfzxWK7HJ7WiW9c6J8c8xpC7Qe6SfN17xAiNow/8qw/cdT4KQ== X-Received: by 2002:a05:6214:dad:b0:6fd:1687:2e1b with SMTP id 6a1803df08f44-6fd5efac323mr56502306d6.27.1750869689350; Wed, 25 Jun 2025 09:41:29 -0700 (PDT) Received: from localhost.localdomain (c-73-228-159-35.hsd1.mn.comcast.net. [73.228.159.35]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7d3ffdb190esm576783085a.86.2025.06.25.09.41.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Jun 2025 09:41:28 -0700 (PDT) From: Alex Elder To: lee@kernel.org, lgirdwood@gmail.com, broonie@kernel.org, alexandre.belloni@bootlin.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mat.jonczyk@o2.pl, dlan@gentoo.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, troymitchell988@gmail.com, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v4 4/7] rtc: spacemit: support the SpacemiT P1 RTC Date: Wed, 25 Jun 2025 11:41:15 -0500 Message-ID: <20250625164119.1068842-5-elder@riscstar.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250625164119.1068842-1-elder@riscstar.com> References: <20250625164119.1068842-1-elder@riscstar.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" Add support for the RTC found in the SpacemiT P1 PMIC. Initially only setting and reading the time are supported. The PMIC is implemented as a multi-function device. This RTC is probed based on this driver being named in a MFD cell in the simple MFD I2C driver. Signed-off-by: Alex Elder --- v4: - Rename the source file - Rename the config option - Get rid of the time_unit enumerated type (just use indices) - Loop in the RTC read_time callback until consecutive reads produce the same result - Return an error from the set_time callback if re-enabling the RTC fails - Don't report devm_rtc_register_device() errors drivers/rtc/Kconfig | 10 ++ drivers/rtc/Makefile | 1 + drivers/rtc/rtc-spacemit-p1.c | 169 ++++++++++++++++++++++++++++++++++ 3 files changed, 180 insertions(+) create mode 100644 drivers/rtc/rtc-spacemit-p1.c diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig index 9aec922613cec..93620f2c9b29c 100644 --- a/drivers/rtc/Kconfig +++ b/drivers/rtc/Kconfig @@ -406,6 +406,16 @@ config RTC_DRV_MAX77686 This driver can also be built as a module. If so, the module will be called rtc-max77686. =20 +config RTC_DRV_SPACEMIT_P1 + tristate "SpacemiT P1 RTC" + depends on ARCH_SPACEMIT || COMPILE_TEST + select MFD_SPACEMIT_P1 + default ARCH_SPACEMIT + help + Enable support for the RTC function in the SpacemiT P1 PMIC. + This driver can also be built as a module, which will be called + "spacemit-p1-rtc". + config RTC_DRV_NCT3018Y tristate "Nuvoton NCT3018Y" depends on OF diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile index 4619aa2ac4697..a24ff6ad5ca58 100644 --- a/drivers/rtc/Makefile +++ b/drivers/rtc/Makefile @@ -171,6 +171,7 @@ obj-$(CONFIG_RTC_DRV_SD2405AL) +=3D rtc-sd2405al.o obj-$(CONFIG_RTC_DRV_SD3078) +=3D rtc-sd3078.o obj-$(CONFIG_RTC_DRV_SH) +=3D rtc-sh.o obj-$(CONFIG_RTC_DRV_SNVS) +=3D rtc-snvs.o +obj-$(CONFIG_RTC_DRV_SPACEMIT_P1) +=3D rtc-spacemit-p1.o obj-$(CONFIG_RTC_DRV_SPEAR) +=3D rtc-spear.o obj-$(CONFIG_RTC_DRV_STARFIRE) +=3D rtc-starfire.o obj-$(CONFIG_RTC_DRV_STK17TA8) +=3D rtc-stk17ta8.o diff --git a/drivers/rtc/rtc-spacemit-p1.c b/drivers/rtc/rtc-spacemit-p1.c new file mode 100644 index 0000000000000..fdb8e3502c198 --- /dev/null +++ b/drivers/rtc/rtc-spacemit-p1.c @@ -0,0 +1,169 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Driver for the RTC found in the SpacemiT P1 PMIC + * + * Copyright (C) 2025 by RISCstar Solutions Corporation. All rights reser= ved. + */ + +#include +#include +#include +#include +#include +#include + +#define MOD_NAME "spacemit-p1-rtc" + +/* + * Six consecutive 1-byte registers hold the seconds, minutes, hours, + * day-of-month, month, and year (respectively). + * + * The range of values in these registers is: + * seconds 0-59 + * minutes 0-59 + * hours 0-59 + * day 0-30 (struct tm is 1-31) + * month 0-11 + * year years since 2000 (struct tm is since 1900) + * + * Note that the day and month must be converted after reading and + * before writing. + */ +#define RTC_TIME 0x0d /* Offset of the seconds register */ + +#define RTC_CTRL 0x1d +#define RTC_EN BIT(2) + +/* Number of attempts to read a consistent time stamp before giving up */ +#define RTC_READ_TRIES 20 /* At least 1 */ + +struct p1_rtc { + struct regmap *regmap; + struct rtc_device *rtc; +}; + +/* + * The P1 hardware documentation states that the register values are + * latched to ensure a consistent time snapshot within the registers, + * but these are in fact unstable due to a bug in the hardware design. + * So we loop until we get two identical readings. + */ +static int p1_rtc_read_time(struct device *dev, struct rtc_time *t) +{ + struct p1_rtc *p1 =3D dev_get_drvdata(dev); + struct regmap *regmap =3D p1->regmap; + u32 count =3D RTC_READ_TRIES; + u8 times[2][6]; + size_t size; + u32 i =3D 0; + u8 *time; + int ret; + + size =3D sizeof(times[0]); + ret =3D regmap_bulk_read(regmap, RTC_TIME, times[i], size); + if (ret) + return ret; + + do { + i =3D 1 - i; + ret =3D regmap_bulk_read(regmap, RTC_TIME, times[i], size); + if (ret) + return ret; + } while (memcmp(times[i], times[1 - i], size) && --count); + + if (!count) + return -EIO; + + time =3D ×[0][0]; + + t->tm_sec =3D time[0] & GENMASK(5, 0); + t->tm_min =3D time[1] & GENMASK(5, 0); + t->tm_hour =3D time[2] & GENMASK(4, 0); + t->tm_mday =3D (time[3] & GENMASK(4, 0)) + 1; + t->tm_mon =3D time[4] & GENMASK(3, 0); + t->tm_year =3D (time[5] & GENMASK(5, 0)) + 100; + + return 0; +} + +/* + * The P1 hardware documentation states that values in the registers are + * latched so when written they represent a consistent time snapshot. + * Nevertheless, this is not guaranteed by the implementation, so we must + * disable the RTC while updating it. + */ +static int p1_rtc_set_time(struct device *dev, struct rtc_time *t) +{ + struct p1_rtc *p1 =3D dev_get_drvdata(dev); + struct regmap *regmap =3D p1->regmap; + u8 time[6]; + int ret2; + int ret; + + time[0] =3D t->tm_sec; + time[1] =3D t->tm_min; + time[2] =3D t->tm_hour; + time[3] =3D t->tm_mday - 1; + time[4] =3D t->tm_mon; + time[5] =3D t->tm_year - 100; + + /* Disable the RTC to update; re-enable again when done */ + ret =3D regmap_update_bits(regmap, RTC_CTRL, RTC_EN, 0); + if (ret) + return ret; + + ret =3D regmap_bulk_write(regmap, RTC_TIME, time, sizeof(time)); + + ret2 =3D regmap_update_bits(regmap, RTC_CTRL, RTC_EN, RTC_EN); + + return ret ? : ret2; /* Return the first error */ +} + +static const struct rtc_class_ops p1_rtc_class_ops =3D { + .read_time =3D p1_rtc_read_time, + .set_time =3D p1_rtc_set_time, +}; + +static int p1_rtc_probe(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + struct rtc_device *rtc; + struct p1_rtc *p1; + + p1 =3D devm_kzalloc(dev, sizeof(*p1), GFP_KERNEL); + if (!p1) + return -ENOMEM; + dev_set_drvdata(dev, p1); + + p1->regmap =3D dev_get_regmap(dev->parent, NULL); + if (!p1->regmap) + return dev_err_probe(dev, -ENODEV, "failed to get regmap\n"); + + rtc =3D devm_rtc_allocate_device(dev); + if (IS_ERR(rtc)) + return dev_err_probe(dev, PTR_ERR(rtc), + "error allocating device\n"); + p1->rtc =3D rtc; + + rtc->ops =3D &p1_rtc_class_ops; + rtc->range_min =3D RTC_TIMESTAMP_BEGIN_2000; + rtc->range_max =3D RTC_TIMESTAMP_END_2063; + + clear_bit(RTC_FEATURE_ALARM, rtc->features); + clear_bit(RTC_FEATURE_UPDATE_INTERRUPT, rtc->features); + + return devm_rtc_register_device(rtc); +} + +static struct platform_driver p1_rtc_driver =3D { + .probe =3D p1_rtc_probe, + .driver =3D { + .name =3D MOD_NAME, + }, +}; + +module_platform_driver(p1_rtc_driver); + +MODULE_DESCRIPTION("SpacemiT P1 RTC driver"); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:" MOD_NAME); --=20 2.45.2 From nobody Wed Oct 8 17:34:31 2025 Received: from mail-qk1-f181.google.com (mail-qk1-f181.google.com [209.85.222.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2E5FB2D8DC5 for ; Wed, 25 Jun 2025 16:41:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750869694; cv=none; b=HNeZ0AhNhibD64ciJc6iWunRFRxoWMVEECjzz1Q8IIKQCiN+ZHxKJ0lPxKFWHPERtt0hiTDp1rwkTqhs4VJgcK60ByuPzXUGBr2I6L5s0MJciu/HZiD+9w8dg6dIC7riN2IARLgeXxNcgXiEPbhyw7AkZTBokuhSh1WnqxN8l6M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750869694; c=relaxed/simple; bh=PfwZzjjqJBdpG245rW9fZ43Yt8RFpe6Kf9hR0M/wvXw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ekp5hGimXRG0nVvBh/Nfq7Je+7Sn4dC3u0x/dFeSFb9J0LoNqDSnkeDgDVc1+X6xksTh0puexwim+RceBkO+biTnjQ9CfI8X01Q1bnQVRlK7bx2Sdeo6dgDZz4A9krFIH74s+Uhz+7PbnCvXJlsz0NJ1BetaccTFvszRCScRXBY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com; spf=pass smtp.mailfrom=riscstar.com; dkim=pass (2048-bit key) header.d=riscstar-com.20230601.gappssmtp.com header.i=@riscstar-com.20230601.gappssmtp.com header.b=WHR8OwaX; arc=none smtp.client-ip=209.85.222.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=riscstar.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=riscstar-com.20230601.gappssmtp.com header.i=@riscstar-com.20230601.gappssmtp.com header.b="WHR8OwaX" Received: by mail-qk1-f181.google.com with SMTP id af79cd13be357-7d098f7bd77so19194885a.0 for ; Wed, 25 Jun 2025 09:41:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=riscstar-com.20230601.gappssmtp.com; s=20230601; t=1750869691; x=1751474491; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NWnze/SjFdW+lfNDCsnEitBUx1r5ZcEMc14OReZ/axQ=; b=WHR8OwaXm4YVA6un6SIKhvgDDanBMuZpv4c9gAeA5bGJHExwrQew5lHj8huA7fAix+ +XO2tXLUzBwnHIpFj3w3MJii7Jt60iK4pGnUFB2AQ2S9gj2H0NjIpr9y2ommPANt+unU IqYxldzezD0mkHT06wgwz5qbaQijEeghbEHkwP0r5gWhklnoA+JWWvY1rH+1EUA1rqtI uOXD7W0hAky3Q6/h3VLe7s0JynW16SJgI+z4foSEEvOXrh4fLK7XMA/L14M6ZoQun+bY 2RX0yUmiEo7ByzJMJOpYFS7aYvUTA0zx40PvuDJcQCVIuCurt35dcnIG6hJJG4DJ4OeJ C65g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750869691; x=1751474491; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NWnze/SjFdW+lfNDCsnEitBUx1r5ZcEMc14OReZ/axQ=; b=nbeBKF34eCUvOxdFI+X4DH7e9seQNFTFyvAHXPO731a/ba+hj3Iqcn0OH8pYjgWyye ncjT7R0cUZ4tQwhkBpqOq4LzfDadZbn8GDoUZvSKV0l1zWB1iNQcJssOvPIghmJMs36+ XgYxpRzn4N2EZHMXVxZjS33BNQlfuVM+3IrW/AhXFp3NNMoQW0wYY08/KSZZbrHNsfKO jOBg4BJNLdsF0A4yNL67mqUWpX/VbYzMEZbKhGcywXTEPKUPEBClGWwl512qIF8dgSL+ Lz90PNRi0QPW+0Mrhgu3XL7GpF06hR9CWJ6TH4gVhmiGRPSGTmQ/mRV91eHNmU3n2aQO vgPA== X-Forwarded-Encrypted: i=1; AJvYcCXXW35HuckDEgRBgGAjdGcoHEc/uydhCHMZT8MTDA1Qm2mvKaUfRMIO+w/d9ipUf3b/bPyxCWoLZbv/6E4=@vger.kernel.org X-Gm-Message-State: AOJu0YwJm/8E5B8xjAajZiwCdI2uOdq6U+IkqtFgwZ+3WVH80NFZTP2v noCHIcNvM2hNVgjD69UbPzT9/DB+VdX1up8Z7iMP9u10td8VDC9VJv+sYXZu4OpI9y0= X-Gm-Gg: ASbGncvcwc+c4UHpsSNcBAM3GtPCpco5c16xwo1/6u+DmXZ7EBaGz+n8JctpEKf5qfI 6KGr/VvZlH4RdfvHor80nC1JAmfL9YeolbcT14V/z0j0bmKg0dSVOzclq4ZEpQLdjK1R0SXp7YI AFKOhTG51ZmlU14y3p7QKX299CFLOhuFzjri7KBk4JBELBn8Fg4d6zwJdb/y3rndWd4y5HCvVEf 96v8kHUZdMhYnIVaII0oni/UFHALF4fkcnDIVGe1MxneA3c5ISifPkDh/4lBbt3NvqjAeTdw63q NZwMMLZuUCTQEsj4i8lPLu1GuAuGXdGlbv3kiLfya8DPJou55UWL4KP5fMrJBIDuiI6DFdcKgwl sFoKAlTT9ho8/6jg+YO/PfLFRRoTNiOHiRp6DUJNDhQSD/g== X-Google-Smtp-Source: AGHT+IH4WBO33AQEU4daDUfdQCrNAmkqlpvMPDGNy9OxOBKPBp4zs4BCFmH0xBJiPH3X1thxaYnaIA== X-Received: by 2002:a05:620a:40c3:b0:7d0:9a99:1bb1 with SMTP id af79cd13be357-7d43bbdd560mr26509885a.25.1750869690791; Wed, 25 Jun 2025 09:41:30 -0700 (PDT) Received: from localhost.localdomain (c-73-228-159-35.hsd1.mn.comcast.net. [73.228.159.35]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7d3ffdb190esm576783085a.86.2025.06.25.09.41.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Jun 2025 09:41:30 -0700 (PDT) From: Alex Elder To: lee@kernel.org, lgirdwood@gmail.com, broonie@kernel.org, alexandre.belloni@bootlin.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mat.jonczyk@o2.pl, dlan@gentoo.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, troymitchell988@gmail.com, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v4 5/7] riscv: dts: spacemit: enable the i2c8 adapter Date: Wed, 25 Jun 2025 11:41:16 -0500 Message-ID: <20250625164119.1068842-6-elder@riscstar.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250625164119.1068842-1-elder@riscstar.com> References: <20250625164119.1068842-1-elder@riscstar.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" Define properties for the I2C adapter that provides access to the SpacemiT P1 PMIC. Enable this adapter on the Banana Pi BPI-F3. Signed-off-by: Alex Elder --- arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 15 +++++++++++++++ arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi | 7 +++++++ arch/riscv/boot/dts/spacemit/k1.dtsi | 11 +++++++++++ 3 files changed, 33 insertions(+) diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/b= oot/dts/spacemit/k1-bananapi-f3.dts index fe22c747c5012..7c9f91c88e01a 100644 --- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts +++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts @@ -40,6 +40,21 @@ &emmc { status =3D "okay"; }; =20 +&i2c8 { + pinctrl-0 =3D <&i2c8_cfg>; + pinctrl-names =3D "default"; + #address-cells =3D <1>; + #size-cells =3D <0>; + status =3D "okay"; + + pmic@41 { + compatible =3D "spacemit,p1"; + reg =3D <0x41>; + interrupts =3D <64>; + status =3D "okay"; + }; +}; + &uart0 { pinctrl-names =3D "default"; pinctrl-0 =3D <&uart0_2_cfg>; diff --git a/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi b/arch/riscv/boot= /dts/spacemit/k1-pinctrl.dtsi index 283663647a86f..9d6d4503fe751 100644 --- a/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi +++ b/arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi @@ -11,6 +11,13 @@ #define K1_GPIO(x) (x / 32) (x % 32) =20 &pinctrl { + i2c8_cfg: i2c8-cfg { + i2c8-0-pins { + pinmux =3D , /* PWR_SCL */ + ; /* PWR_SDA */ + }; + }; + uart0_2_cfg: uart0-2-cfg { uart0-2-pins { pinmux =3D , diff --git a/arch/riscv/boot/dts/spacemit/k1.dtsi b/arch/riscv/boot/dts/spa= cemit/k1.dtsi index 14097f1f6f447..a85239e8e430b 100644 --- a/arch/riscv/boot/dts/spacemit/k1.dtsi +++ b/arch/riscv/boot/dts/spacemit/k1.dtsi @@ -483,6 +483,17 @@ gpio: gpio@d4019000 { <&pinctrl 3 0 96 32>; }; =20 + i2c8: i2c@d401d800 { + compatible =3D "spacemit,k1-i2c"; + reg =3D <0x0 0xd401d800 0x0 0x38>; + interrupts =3D <19>; + clocks =3D <&syscon_apbc CLK_TWSI8>, + <&syscon_apbc CLK_TWSI8_BUS>; + clock-names =3D "func", "bus"; + clock-frequency =3D <400000>; + status =3D "disabled"; + }; + pinctrl: pinctrl@d401e000 { compatible =3D "spacemit,k1-pinctrl"; reg =3D <0x0 0xd401e000 0x0 0x400>; --=20 2.45.2 From nobody Wed Oct 8 17:34:32 2025 Received: from mail-qk1-f180.google.com (mail-qk1-f180.google.com [209.85.222.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C2F342D9ED7 for ; Wed, 25 Jun 2025 16:41:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750869695; cv=none; b=LQqaqMmc+gpPwVAarwWMg+8EeaqmQwUDOpB0L/0WRf1OhM5VakuGnCqRLl/dRY+nXWye42gfd/xbx+fuWeN7FlyRNjkyvDCwiikQFRsADqeMBHXsEi1mheW6mWU+nrZxbCA3LK/2iPF82yiZhojXXfBr6lusFIirF4EEjkdUhCE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750869695; c=relaxed/simple; bh=E/I9W6fX+DhSmsmtI3yC9YfnKc4TowcG2XvObw3IonQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ftH3e2inVPQl7raY5dLgL4eNhuryiz66GXSS0rRFVUYqM+mdyEOtQG/IZCRfBfJ73NwetAJqOFM+s/yUkznpwhdTD+Dcdj7rr2J41F0mTyALdq4g8g3C1pf72hEOapm2yPNuTq9Hz81rJ3n2zX2xHe5uz4PQdLKp3lel/UJkhzQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com; spf=pass smtp.mailfrom=riscstar.com; dkim=pass (2048-bit key) header.d=riscstar-com.20230601.gappssmtp.com header.i=@riscstar-com.20230601.gappssmtp.com header.b=ByZhU4AS; arc=none smtp.client-ip=209.85.222.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=riscstar.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=riscstar-com.20230601.gappssmtp.com header.i=@riscstar-com.20230601.gappssmtp.com header.b="ByZhU4AS" Received: by mail-qk1-f180.google.com with SMTP id af79cd13be357-7d425fc4e5fso8147885a.0 for ; Wed, 25 Jun 2025 09:41:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=riscstar-com.20230601.gappssmtp.com; s=20230601; t=1750869692; x=1751474492; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bpaBoGbv3UwS2ctJ5MNrLd4WnRBIdXYjgTh8qQmsLHk=; b=ByZhU4ASm4CXKPpovfGRQ1bXfrIbanTBNjGn/9AQW6m3/KAhKbFlMyjeMlharBhSRQ FGQWtgHt+Vy3KqoZg6FqaXiwhdaSViEN0sPLTapZqfBzYqc5Mz11SVyef2o+Ou4c2ltE M4nFBS+ByV3oenO1Pl4P0D23Nf4hvsaU8e+3t85OA0b+4ZDDCqlRKm3UsDl57KH5ccv3 0zIrQ2PO9w0Omw+c2y3NqD23J3v9GAhkwXE58zn3bXeKnaBcFxmvA1OAJrRcGFcwwZtn uqIl5o2aFpQYxsatuJiU3Wyrs0JzFjLWrYQkSrEgZ5v06OWsqZ3bjDEZoO8vhm7VzoQk ZXZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750869692; x=1751474492; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bpaBoGbv3UwS2ctJ5MNrLd4WnRBIdXYjgTh8qQmsLHk=; b=QXIhq+sFi4uJXhFNvkbkxwMTMPWIL6EK9pQq9b5fW7mCnOdrispjmTsKre+Sa9aS4f yk5aV6j4H+bLUUNlcs75aK4tepcUtBojn3sJdVDGRIafdbC/M+L8unnwom8u6xHM2u+X Ekp0oSRI4HXliyAiVEP6TNyOH8GI8J8ht8AFUc+Lw4IRnUHYkljDxgCOuHtMg5uEoymP 8XuhJFUQalN0eHdJgaZR06mV69UCgR1Z/rO27eDQRQP8rGAMZGjwhfIVLOM3M5zhBGQT auQvXSSAVf69zS2Sg6STJ7M4YPcCKd0YmhvYGFAtU0kh5xYvZFW7qQXmh7lGpmGbfYQ+ HdWw== X-Forwarded-Encrypted: i=1; AJvYcCW4yDkmoc3LW0W/JjkweKuEcpgP3fvWK2zzFKCRm7n/S+m4Q6qdE9BL1d6i+5WvHqjgW1wDTkVeo8LpEjM=@vger.kernel.org X-Gm-Message-State: AOJu0Ywn3aPZq24AfNE8qkGCtXm0LgkVQzpuLM2JglMLUaqx7SI9uQGd FpwIJ7zKWgu4b4lftPAdkzK6eNe9kaVi0Dlqwcc5BaDay48/Xxo9flTmweBKk7tJIkc= X-Gm-Gg: ASbGncupjrqI6Hh9KjPt+lC7G1M5Bs9paJoEkYdmH7+/audMs5HjjYC+QzojbS59yE7 cuzGZ6VDAlL0Jt9+34uBN+RaYFo67o9uWnfb4uW1bk5yJenBdrH/2AgkrXhz6LEbsF5Xz0/NCjj o7tx4Ws9aFQExLlpm6ORRKJ2dvyxyxUOOVypvyiLJAuPCudvLeKkljms6rL7/fiO9p4OHYm8Qbw sRb/4z50gBc4akIWQ17WIbHK0F6ykun8hWiMFa4p6BwvQ2NpBBHdmCIbIkuBmsF6uRap51hDyuX bmc3qC9RYAd4rVUUEi3HYa5R0xOtXNc7SUTW4NJU0hR6SXyTalNcWdsYLJ25lculcO0YoX1QZCz szhxPV7uxzadOFG19w0ru8yIFPBYlv0Sx818= X-Google-Smtp-Source: AGHT+IEwItQMBBDI1vzRkKuMV76VC7n5WgZIJe9oGLx0Xn+RTJyLSXPBEu2hmGxf93T+cVf1NqqyAw== X-Received: by 2002:a05:620a:3186:b0:7d2:26e8:d186 with SMTP id af79cd13be357-7d42971d918mr638041085a.36.1750869692268; Wed, 25 Jun 2025 09:41:32 -0700 (PDT) Received: from localhost.localdomain (c-73-228-159-35.hsd1.mn.comcast.net. [73.228.159.35]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7d3ffdb190esm576783085a.86.2025.06.25.09.41.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Jun 2025 09:41:31 -0700 (PDT) From: Alex Elder To: lee@kernel.org, lgirdwood@gmail.com, broonie@kernel.org, alexandre.belloni@bootlin.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mat.jonczyk@o2.pl, dlan@gentoo.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, troymitchell988@gmail.com, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v4 6/7] riscv: dts: spacemit: define fixed regulators Date: Wed, 25 Jun 2025 11:41:17 -0500 Message-ID: <20250625164119.1068842-7-elder@riscstar.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250625164119.1068842-1-elder@riscstar.com> References: <20250625164119.1068842-1-elder@riscstar.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" Define the DC power input and the 4v power as fixed supplies in the Banana Pi BPI-F3. Signed-off-by: Alex Elder --- .../boot/dts/spacemit/k1-bananapi-f3.dts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/b= oot/dts/spacemit/k1-bananapi-f3.dts index 7c9f91c88e01a..a1c184b814262 100644 --- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts +++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts @@ -28,6 +28,25 @@ led1 { default-state =3D "on"; }; }; + + reg_dc_in: dc-in-12v { + compatible =3D "regulator-fixed"; + regulator-name =3D "dc_in_12v"; + regulator-min-microvolt =3D <12000000>; + regulator-max-microvolt =3D <12000000>; + regulator-boot-on; + regulator-always-on; + }; + + reg_vcc_4v: vcc-4v { + compatible =3D "regulator-fixed"; + regulator-name =3D "vcc_4v"; + regulator-min-microvolt =3D <4000000>; + regulator-max-microvolt =3D <4000000>; + regulator-boot-on; + regulator-always-on; + vin-supply =3D <®_dc_in>; + }; }; =20 &emmc { --=20 2.45.2 From nobody Wed Oct 8 17:34:32 2025 Received: from mail-qk1-f175.google.com (mail-qk1-f175.google.com [209.85.222.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EF66D2DA758 for ; Wed, 25 Jun 2025 16:41:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750869696; cv=none; b=uK5LrTBgc6SJTUa0nLTXG+QfOM+FYqJWpmsUMNdgvFgduSTI3Qu07/cL5MlEXNXNlrCM4vbbIuEVFFR7/u+MfaeevE9hMSAgzAdiclsU6w2TvtFMNEdyNzJUGq5+Agz8LPTM2Cn9vptAbm2Im2j0WF4ojahwIOazF3hauHjFAME= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750869696; c=relaxed/simple; bh=WGruvn+Gqs/wHzBEiTs0RVm377PpbfSqb1Lgjf4ooI8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TsppyE8LovcnIVMy/lSxmlPPa22iDVITTe3JhZDjjlPFe6rMYbfCua3sJmPg/BBGJk0wmMa5D97eywX68Lg7rf9wNBd3M8z+no5QxAigWouyfvVVa4xQ9h1QhQ5n5HOjGRJl+Hs/Yzl0j4719Qw97GtjRtEHCPvrInn0moeNXPk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com; spf=pass smtp.mailfrom=riscstar.com; dkim=pass (2048-bit key) header.d=riscstar-com.20230601.gappssmtp.com header.i=@riscstar-com.20230601.gappssmtp.com header.b=DFqDV4Q3; arc=none smtp.client-ip=209.85.222.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=riscstar.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=riscstar.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=riscstar-com.20230601.gappssmtp.com header.i=@riscstar-com.20230601.gappssmtp.com header.b="DFqDV4Q3" Received: by mail-qk1-f175.google.com with SMTP id af79cd13be357-7d0a0bcd3f3so13003485a.1 for ; Wed, 25 Jun 2025 09:41:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=riscstar-com.20230601.gappssmtp.com; s=20230601; t=1750869694; x=1751474494; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ihUO+G2zPvFD7djd8+4VxSPuuLI+GNqieXaQtnBxio4=; b=DFqDV4Q3V8IqvSZ3b8O0CKY5QOM/L3X1DXhBB9GMYB6Ysd6k0KA79ezzjkNZYpGAUb yijEHKF0pcljeO16eGdkwSgyddV82dmiNWDKXWq0c3fclmslOWR8yL2rCa/Xq+jAZTIm aJHiG5Han0ewY5b0MHoertvT7miFrF2RW/k3Z93dFZIGytNtYquGJLjn+nwwcBCWM8eX Jwuibok3Mgf0YmsmXZwjL1jv4c+cqEHKg7OouLp5309EjRmMeDOt0Jo0nyPSea4C76jj er93y/+Ght9ZBlB5CUYbaYpr3smWes9hBs/2bvSkUcXjcBKmj2UeEhrNJaZYhQ9+Cp/T FUDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750869694; x=1751474494; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ihUO+G2zPvFD7djd8+4VxSPuuLI+GNqieXaQtnBxio4=; b=hYuGWxoEZwXfR2kpTbo4Sn2OMRpbI2Lk3ufIAuxgslCE6s49/ALQt5ywSOZ+Ea+omu Jx1Hq7L5wO4couGTaiR3agn4eN8mjeHMNucF6ErMjsYxlujhVgDIu2XxPsnJ0p3rq/4Z 1hSrptwn9Y86Plnp90wTeLNZePStsjL3etfLeRMmU8/wYTFI8PeRF+6e1KjZUza+EhUt E4i0VdQjbMHdrN51cVzeZGzDB4E1MeuBDz9vObxIOYUX3ywRsC50+fT2mkS03Mn+sdMR Hrw4dRxSHfvKqHTeukEQlcjJ2kSSwfoXbJoKnAXCvcvjoh6cAq7oT1YwD3mwbKluDVvx hakA== X-Forwarded-Encrypted: i=1; AJvYcCVR4VZSHZqs9t/eK02UKgIHdnLR5iN67Zmw5ApnXPy9nouEHYuq1a5druPFhmJqGgIND+RSiCJyKZ0jRq8=@vger.kernel.org X-Gm-Message-State: AOJu0YwW9VZWfkIgEtbMk54pOpiEV6S4Vi6zZOZ9fp1qY2zj+Ql5h4Ui yBRJMBT0uqIEImvmaFhcnCPvbNQ6IRQGhzIf5Vp3sVB2gHv1JYIO0HndNV1UgpYQsRU= X-Gm-Gg: ASbGncvAU0Oj9nGoxcJs9K7WIvz6hHLaPjNOaufVX81hFgONvbqNwcaZwtOYW1NZcrk FY1mBHbtB7BTginWbZrL9UFWiyhXqrdUvoW68iX8Cs4l7u1y1Yeerl9BWrXeJmDhXeEKNV7qjIe /p+05MuOxtDf4u4MWVJfIjjr2KJejpYmwGJFoUka19kb+VIRjNcWL57Ezh0oNtADOhEHJz3E0b+ mfrziKzeIsMztifnebt/a+7JwEHOCXuxl6eBKwA/21tiVBY5nibu3vc7wDaKIiY14o4WqGGmjUs sPIt7D+pDkympXq5yYt24u/2Q6hM4u5tBSJKRNxR6F33pn25hs4zvXLNjnqi9DWKgVlO1APqKZq HgmTiPT3NNmPnYndN4Mss8z8hdL+en+cuQaE= X-Google-Smtp-Source: AGHT+IEBC2FuiYFCeaShYjBDomZFTypEHYThHwPRfGEGQQlsuc51Pdbq0Cxqjxbh0A1N+hYJdQQ/fw== X-Received: by 2002:a05:620a:1996:b0:7d3:904a:30c5 with SMTP id af79cd13be357-7d43bb7e163mr36774985a.4.1750869693713; Wed, 25 Jun 2025 09:41:33 -0700 (PDT) Received: from localhost.localdomain (c-73-228-159-35.hsd1.mn.comcast.net. [73.228.159.35]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7d3ffdb190esm576783085a.86.2025.06.25.09.41.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Jun 2025 09:41:33 -0700 (PDT) From: Alex Elder To: lee@kernel.org, lgirdwood@gmail.com, broonie@kernel.org, alexandre.belloni@bootlin.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mat.jonczyk@o2.pl, dlan@gentoo.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, troymitchell988@gmail.com, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v4 7/7] riscv: dts: spacemit: define regulator constraints Date: Wed, 25 Jun 2025 11:41:18 -0500 Message-ID: <20250625164119.1068842-8-elder@riscstar.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250625164119.1068842-1-elder@riscstar.com> References: <20250625164119.1068842-1-elder@riscstar.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" Define basic constraints for the regulators in the SpacemiT P1 PMIC, as implemented in the Banana Pi BPI-F3. Signed-off-by: Alex Elder --- .../boot/dts/spacemit/k1-bananapi-f3.dts | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/b= oot/dts/spacemit/k1-bananapi-f3.dts index a1c184b814262..83907cc1d5ccf 100644 --- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts +++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts @@ -70,7 +70,111 @@ pmic@41 { compatible =3D "spacemit,p1"; reg =3D <0x41>; interrupts =3D <64>; + vin-supply =3D <®_vcc_4v>; status =3D "okay"; + + regulators { + buck1 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3450000>; + regulator-ramp-delay =3D <5000>; + regulator-always-on; + }; + + buck2 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3450000>; + regulator-ramp-delay =3D <5000>; + regulator-always-on; + }; + + buck3 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <1800000>; + regulator-ramp-delay =3D <5000>; + regulator-always-on; + }; + + buck4 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3300000>; + regulator-ramp-delay =3D <5000>; + regulator-always-on; + }; + + buck5 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3450000>; + regulator-ramp-delay =3D <5000>; + regulator-always-on; + }; + + buck6 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3450000>; + regulator-ramp-delay =3D <5000>; + regulator-always-on; + }; + + aldo1 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3400000>; + regulator-boot-on; + }; + + aldo2 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3400000>; + }; + + aldo3 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3400000>; + }; + + aldo4 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3400000>; + }; + + dldo1 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3400000>; + regulator-boot-on; + }; + + dldo2 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3400000>; + }; + + dldo3 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3400000>; + }; + + dldo4 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3400000>; + regulator-always-on; + }; + + dldo5 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3400000>; + }; + + dldo6 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3400000>; + regulator-always-on; + }; + + dldo7 { + regulator-min-microvolt =3D <500000>; + regulator-max-microvolt =3D <3400000>; + }; + }; }; }; =20 --=20 2.45.2