From nobody Sun Feb 8 02:26:45 2026 Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.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 6FB6321ADC1; Sun, 9 Mar 2025 20:26:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741552010; cv=none; b=TE0rAv6+XecGR9mjj/LACtRtjQJOmWnSDlEeP1ZeK9rfnLHCBzQ4yyoXI21fj7BPwrPI5QUDji2YXd6ExjlfDiOXn6lpGSW2GsDyBGd3Sq7R167wC/pQlUabRoPm46tvNB9BnhJcsZV3aa3eGDrtpbAmtx2fkMYaQG2xlTIyoo0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741552010; c=relaxed/simple; bh=F3cdf2Pun+QwUrQMwjJHLneORLZHKHKObVzmIuTIgpQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YyeM7e1/scJOBMxdkagO0HP66STkdRS8QktRUV6ZFOqV6WkNJiGlOrgY9FVgVTew4tsqvRqmPISBd7tm0jtkpzh0aBuV/TU+qvuqk+ZkO6tcYZi766D9JmOg4e1oxRDsrivJmwFWYc4ptNiIevzmIAYmrjKPBeQv+xMYrKEyMUI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=heK5XRdP; arc=none smtp.client-ip=209.85.208.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="heK5XRdP" Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-5e5e8274a74so3303035a12.1; Sun, 09 Mar 2025 13:26:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741552007; x=1742156807; 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=rdqKnoVx0etfX45OW+fypKpA3XDIhcKZ1eSXDwOmnjI=; b=heK5XRdPAwHEXzJFuqGxFzkFay0NGay4pzQkPGNVO8Nn3cl2grPsV6ipwLlR2RBgGP Sb2cuIf+qjm9441mL2/7QWtkWBp4IdOmbafUdUb7rky6bLmsqRYFiHVW6IVxaMqIoIKh WNMbHzw3zBBHSlLGJg2g6RkLzRUaC1992pNTXEQIjYDm2CGwoNgUZVbj+dIlFSBfoeFD GQoAVbyOEu4a9aLiPq+NsTCIhvQ3lHnDqWtjboj8ylCG78qF4z4XLzpmBTi0J7M2MhIw 8dM2EIENPLfOi/nGukJ0c3aNR3MCQO2YqPCWZc1whu6vRGw72kZKms2HQgNyQWPz1o7d l7lA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741552007; x=1742156807; 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=rdqKnoVx0etfX45OW+fypKpA3XDIhcKZ1eSXDwOmnjI=; b=qulym4WYd5KcWFZ4bjHPCXk127BpoT3IT6poZKL7Txhojnr5bogc8tj8x2+YMeGICo hGeVIPnE93qNfTKBp/cOWcaagBDrlydqj4bAJhWdZzYXkRqIkowbXOCmpFbqpYJYcmz7 FH1lltb7s9V5PzNBLolPztJ18OV+1WpHMgBER0/jGJuz3tvZAJlHLV2wJYnLg0oYpKdt VuaFYPbGTZCjNABGyzavE0wDGPHW8DA05Mb0IaYhLygD5TyYa7XkE3i+SRpcemnwfMta 0Ihs43Wk5trKPR5NCj/5Fv4alZyYfTJ56AJif8vYfAQQxZpIhk9WZQ88orYc86K4BVDK nEIg== X-Forwarded-Encrypted: i=1; AJvYcCWuNXK7+hUGUTXhaX1zBug3Sy0l4mNql/PjQl1GOC/H44NaY6z8BFjUf7lsmOUAS34KAG7uXjTaZPyz@vger.kernel.org, AJvYcCXcLaDZgO9MOVFmKy3YMiga1pHAynpwFgfw0FzCFMaPkoyZbGN555KbsnQNTge8LbR0WXu+dgslsrGq@vger.kernel.org, AJvYcCXszNIcdUKGNq9g/giXM4T1yRuCkC29x+TmiqQAf7pciWKzoXCaq0LS9yhRzxE/7rLOZiq5kzCwWhgwG02e@vger.kernel.org X-Gm-Message-State: AOJu0YxBw8XtDVZynRhlPKt73s9pc08jMb62QmH9G3s0qbhqe0O0TUA7 /YU4iMo4so29zv3VcMyTKUr6NKnAEpfxe3ypa+miGUydiHlwQVmk X-Gm-Gg: ASbGncuJdtkzJt+Vo2cHpoQ1EBzMLEaMfPEbDle/qcWjqh9zYP5nhffKSEKnjh65Ny6 sbarDcETC7qOLQYSYyajayJ9/m+xDWx4auZQyA6XsQb8Doxaqg6v6qS3tju//LnXUBcAQmJDa49 3dvC33SatdOLeMd0ihe4FMvc7t8WRoG2n6MumG4bl/R8pt8kWQRIVGL4KcBO1pbeVSwfPR1PKci 0h3EmtQPkoIVkpyAYHYe/nB8GOzAZjagS7+/IVP1afiSkfUv4/eRqi0AiQZsS4kY/51H4tqAFXf UhN76/UOlOCO2PZ7xZboOYwFfhrPFu3AybLoTqRCNe4kYMfzCQ7+OOR0og== X-Google-Smtp-Source: AGHT+IEfsqIh7jXsVRSTB3hJ7A+XE0NL1Lyzez6UJvECg4L8wiO8q2zzms77Kr1kJYB9s1cac8H5Yg== X-Received: by 2002:a05:6402:42c2:b0:5dc:7374:261d with SMTP id 4fb4d7f45d1cf-5e5e22a3716mr25364446a12.7.1741552006303; Sun, 09 Mar 2025 13:26:46 -0700 (PDT) Received: from giga-mm.. ([2a02:1210:861b:6f00:82ee:73ff:feb8:99e3]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac27c7e29bbsm281833966b.92.2025.03.09.13.26.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 13:26:42 -0700 (PDT) From: Alexander Sverdlin To: sophgo@lists.linux.dev, devicetree@vger.kernel.org, linux-rtc@vger.kernel.org Cc: Jingbao Qiu , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen Wang , Inochi Amaoto , Alexandre Belloni , Arnd Bergmann , Yangyu Chen , linux-kernel@vger.kernel.org, Alexander Sverdlin Subject: [PATCH v13 1/3] dt-bindings: soc: sophgo: add RTC support for Sophgo CV1800 series Date: Sun, 9 Mar 2025 21:26:23 +0100 Message-ID: <20250309202629.3516822-2-alexander.sverdlin@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309202629.3516822-1-alexander.sverdlin@gmail.com> References: <20250309202629.3516822-1-alexander.sverdlin@gmail.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" From: Jingbao Qiu Add RTC devicetree binding for Sophgo CV1800 series SoC. The device is called RTC, but contains control registers of other HW blocks in its address space, most notably of Power-on-Reset (PoR) module, DW8051 IP (MCU core), accompanying SRAM, hence putting it in SoC subsystem. Signed-off-by: Jingbao Qiu Signed-off-by: Alexander Sverdlin Reviewed-by: Inochi Amaoto Reviewed-by: Krzysztof Kozlowski --- Changelog: v13: - Moved bindings from MFD into SOC subsystem v12: - maintainer Jingbao Qiu -> sophgo@lists.linux.= dev - dropped Reviewed-by: Krzysztof Kozlowski - link to TRM - mentioned 8051 core in the description - binding is now MFD, not RTC - added "syscon" compatible - added "interrupt-names", "clock-names" (because of added PM/remoteproc) - main compatible "sophgo,cv1800-rtc" -> "sophgo,cv1800b-rtc" .../soc/sophgo/sophgo,cv1800b-rtc.yaml | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1= 800b-rtc.yaml diff --git a/Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800b-rt= c.yaml b/Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800b-rtc.ya= ml new file mode 100644 index 000000000000..5cf186c396c9 --- /dev/null +++ b/Documentation/devicetree/bindings/soc/sophgo/sophgo,cv1800b-rtc.yaml @@ -0,0 +1,86 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/sophgo/sophgo,cv1800b-rtc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Real Time Clock of the Sophgo CV1800 SoC + +description: + The RTC (Real Time Clock) is an independently powered module in the chip= . It + contains a 32KHz oscillator and a Power-On-Reset (POR) sub-module, which= can + be used for time display and scheduled alarm produce. In addition, the + hardware state machine provides triggering and timing control for chip + power-on, power-off and reset. + + Furthermore, the 8051 subsystem is located within RTCSYS and is independ= ently + powered. System software can use the 8051 to manage wake conditions and = wake + the system while the system is asleep, and communicate with external dev= ices + through peripheral controllers. + + Technical Reference Manual available at + https://github.com/sophgo/sophgo-doc/tree/main/SG200X/TRM + +maintainers: + - sophgo@lists.linux.dev + +allOf: + - $ref: /schemas/rtc/rtc.yaml# + +properties: + compatible: + items: + - const: sophgo,cv1800b-rtc + - const: syscon + + reg: + maxItems: 1 + + interrupts: + items: + - description: RTC Alarm + - description: RTC Longpress + - description: VBAT DET + + interrupt-names: + items: + - const: alarm + - const: longpress + - const: vbat + + clocks: + items: + - description: RTC clock source + - description: DW8051 MCU clock source + + clock-names: + items: + - const: rtc + - const: mcu + +required: + - compatible + - reg + - interrupts + - interrupt-names + - clocks + - clock-names + +unevaluatedProperties: false + +examples: + - | + #include + #include + + rtc@5025000 { + compatible =3D "sophgo,cv1800b-rtc", "syscon"; + reg =3D <0x5025000 0x2000>; + interrupts =3D <17 IRQ_TYPE_LEVEL_HIGH>, + <18 IRQ_TYPE_LEVEL_HIGH>, + <19 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names =3D "alarm", "longpress", "vbat"; + clocks =3D <&clk CLK_RTC_25M>, + <&clk CLK_SRC_RTC_SYS_0>; + clock-names =3D "rtc", "mcu"; + }; --=20 2.48.1 From nobody Sun Feb 8 02:26:45 2026 Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) (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 0FB8721B190; Sun, 9 Mar 2025 20:26:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741552011; cv=none; b=hs4F4KMbZg7raVt1RUwytw913+mTRCEZIQPoHr9B9Oorr3AW4gmwEYxROV7tRw1PvWHONrsco8Zv4a71k0fulTTHR+oNtFviUi0UZ9KKVDZm19Mh2FvOwzZ41Rv6Zmtd+bAMeEjA4YDmnna7dagvFzlK+CU2T/y2cgCy8yCwi94= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741552011; c=relaxed/simple; bh=7VX1BSlvhenQSbquGdgx+W88iFUaSsE3inny0vBm9As=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MW1EDbuCrMeNHLU2C04b4QqveJnge7Fq8TmRSTFJ0yYA5c7ygpnFrPOLdfhIFdtOGekgbblTKx0SwZMwFmkehfk7gK3IpmZpOyfRsA4oln9HOfrER1/wEX2raD9++V4cPogZtRHnxxr0zZk+xzn/xWhLiu/T8SVE6+Ta5cssZIs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=NUKuf7cC; arc=none smtp.client-ip=209.85.218.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NUKuf7cC" Received: by mail-ej1-f43.google.com with SMTP id a640c23a62f3a-aaec111762bso679162866b.2; Sun, 09 Mar 2025 13:26:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741552007; x=1742156807; 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=gw7/cRMLqRZEOHmaQSQc8kR2LyWY/sX3ioRlmxvefbM=; b=NUKuf7cCywlUG84eiNVrEGdmZXVlS/r+ZaoPI5iOsW3XNZZzirALYCSgx3GYyLrYwD vTzkfOVTHVSjPbW+SbXTKOZyNGKKJ3QttT/rCTB4fDi6Fzmp8g6mw/fUdMzLKu0EYoXu DRRuQ76qjYmkN+ARHiYL3uRV+/nyXjdA7mkAzNEm6F0ZvMBt/vO8nzLWpaRxEcYlTDUb 1Hiy5IqHxiswaIl5wwl4rN58u3wmVBGm2zDvS3qcyh51FN8Iy0lbf+xFRzS2NUP/ZahL a6y2kV0DH0V3LlcC0CA8JMvehcLhZQ+Kf9JlbrrMFL0dorpaV3cgelT71IapbU5XO7ZK WgtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741552007; x=1742156807; 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=gw7/cRMLqRZEOHmaQSQc8kR2LyWY/sX3ioRlmxvefbM=; b=c5+C3f+XEJ/hAm+ag2O0l0s3UNCQ4x8wg/tnZzC3VvIPWUHAsf+f4vHZmOPPr6rF3b FVPsVfgOqhp9axGgQvbjs2EaFh1PNWBVWSuZ5y6/WkSf8nYRz1cKDs6nS1jrWR/74idS b10VitRREdUWc88GedF7e6OgZcBUmO/5Pil1OKm4b4boJhuiEXTauztwsY6pISm1mH+Z ew8YgVar/jMSH0WyXmAyETRFFQxOp495d+WOw6DpbLkP+Y8HeLimB8I9bgZFQ91vXS0i ErLjBqUJ3oPQYmy8+yj/qZhNbO2NxQ3Gb/wpaDNG4Ze8tNqCygVj65fzN2Lah+YSup1G I18Q== X-Forwarded-Encrypted: i=1; AJvYcCUAV1Vs3RFJ3NOoLR++KNCR58c8F5+E6EylEI8Eksg77c41lVHQayXSfV9dcH0KZkToMD7q1M9aaXrc@vger.kernel.org, AJvYcCWR6JqxLF18e1EyWPU2Vkm4KHS1/8fHUYoKtDLMcI03IlOJ/0Xt7aYk5Gu7uJO4QMRbt84+WLsH4lWa@vger.kernel.org, AJvYcCXZncNpNzw6nidUM6+MnTeTaNRq+7tZ0cl6zSHoWg8yO8OxjCy6A2Yv6bI533BLPnZVDKPQvacNQkXgR6bg@vger.kernel.org X-Gm-Message-State: AOJu0Yx6uSWQlH/+xLc990JaZQhC+h3bzpeHGg/hZWTpYSh5WvfRoUUI 5humFr2kG6R3LS5I0pgnDEnlu8Q9MoHZy00pK3U/zSof2Io8mLHk X-Gm-Gg: ASbGncsjUeKFqL1CvHFeAlpXB9MmCAtIaNLT++q27hJ36ymN4uhtaRITRUUEbov7LRU 0OttS+fNlvWhs7XFIFquUlfPuwAR9Dno9UmYsGkSwhnMLtVVcQ9pwAePzvCT7iCKbPIjoe/OcVU U//lQbnwbTbrY8/3HFZPHWf40/dmNLpQi8hmOc0zYzIZhsK6r6jV2g/wn7KNK93crIcyw1i2TgE SyZWl4FxwROgOyzMqH/oOMkgUvQbGGdSq49DhqfjLMPmZjeCUdsNlK4NewT+HM+kM6jYSORYfo/ dgFAVNP6Yc6Bq3WEnjquHDiBBe4hDojDRhWhhkCJ07LybydctvVX3Vj2fg== X-Google-Smtp-Source: AGHT+IGAXfaXpuQ14waj4NhT86vpzngczi5+WF0SSRJjHCh71cfkSjOTmMNuBVqn+diVxJcamNjEVg== X-Received: by 2002:a17:906:eecd:b0:ac2:4bf9:bf87 with SMTP id a640c23a62f3a-ac252e97382mr1502763366b.34.1741552007124; Sun, 09 Mar 2025 13:26:47 -0700 (PDT) Received: from giga-mm.. ([2a02:1210:861b:6f00:82ee:73ff:feb8:99e3]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac27c7e29bbsm281833966b.92.2025.03.09.13.26.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 13:26:46 -0700 (PDT) From: Alexander Sverdlin To: sophgo@lists.linux.dev, devicetree@vger.kernel.org, linux-rtc@vger.kernel.org Cc: Alexander Sverdlin , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen Wang , Inochi Amaoto , Alexandre Belloni , Jingbao Qiu , Arnd Bergmann , Yangyu Chen , linux-kernel@vger.kernel.org Subject: [PATCH v13 2/3] soc: sophgo: cv1800: rtcsys: New driver (handling RTC only) Date: Sun, 9 Mar 2025 21:26:24 +0100 Message-ID: <20250309202629.3516822-3-alexander.sverdlin@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309202629.3516822-1-alexander.sverdlin@gmail.com> References: <20250309202629.3516822-1-alexander.sverdlin@gmail.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 driver for Sophgo CV1800 series SoC RTC subsystem. The RTC module comprises a 32kHz oscillator, Power-on-Reset (PoR) sub-module, HW state machine to control chip power-on, power-off and reset. Furthermore, the 8051 subsystem is located within RTCSYS including associated SRAM block. This patch only populates RTC sub-device. Signed-off-by: Alexander Sverdlin --- Changelog: v13: - Moved the driver from MFD into SOC subsystem - Dropped unused "cv1800_rtcsys_rtc_subdev" v12: - new patch MAINTAINERS | 1 + drivers/soc/Kconfig | 1 + drivers/soc/Makefile | 1 + drivers/soc/sophgo/Kconfig | 24 ++++++++++++ drivers/soc/sophgo/Makefile | 3 ++ drivers/soc/sophgo/cv1800-rtcsys.c | 63 ++++++++++++++++++++++++++++++ 6 files changed, 93 insertions(+) create mode 100644 drivers/soc/sophgo/Kconfig create mode 100644 drivers/soc/sophgo/Makefile create mode 100644 drivers/soc/sophgo/cv1800-rtcsys.c diff --git a/MAINTAINERS b/MAINTAINERS index 3eee238c2ea2..ac15e448fffb 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -22354,6 +22354,7 @@ L: sophgo@lists.linux.dev W: https://github.com/sophgo/linux/wiki T: git https://github.com/sophgo/linux.git S: Maintained +F: drivers/soc/sophgo/cv1800-rtcsys.c N: sophgo K: sophgo =20 diff --git a/drivers/soc/Kconfig b/drivers/soc/Kconfig index 6a8daeb8c4b9..11e2383c0654 100644 --- a/drivers/soc/Kconfig +++ b/drivers/soc/Kconfig @@ -23,6 +23,7 @@ source "drivers/soc/qcom/Kconfig" source "drivers/soc/renesas/Kconfig" source "drivers/soc/rockchip/Kconfig" source "drivers/soc/samsung/Kconfig" +source "drivers/soc/sophgo/Kconfig" source "drivers/soc/sunxi/Kconfig" source "drivers/soc/tegra/Kconfig" source "drivers/soc/ti/Kconfig" diff --git a/drivers/soc/Makefile b/drivers/soc/Makefile index 2037a8695cb2..0381a0abdec8 100644 --- a/drivers/soc/Makefile +++ b/drivers/soc/Makefile @@ -29,6 +29,7 @@ obj-y +=3D qcom/ obj-y +=3D renesas/ obj-y +=3D rockchip/ obj-$(CONFIG_SOC_SAMSUNG) +=3D samsung/ +obj-y +=3D sophgo/ obj-y +=3D sunxi/ obj-$(CONFIG_ARCH_TEGRA) +=3D tegra/ obj-y +=3D ti/ diff --git a/drivers/soc/sophgo/Kconfig b/drivers/soc/sophgo/Kconfig new file mode 100644 index 000000000000..e50666e423a9 --- /dev/null +++ b/drivers/soc/sophgo/Kconfig @@ -0,0 +1,24 @@ +# SPDX-License-Identifier: GPL-2.0-only +# +# Sophgo/Cvitek SoC drivers +# + +if ARCH_SOPHGO || COMPILE_TEST +menu "Sophgo/Cvitek SoC drivers" + +config SOPHGO_CV1800_RTCSYS + tristate "Sophgo CV1800 RTC MFD" + default y if COMPILE_TEST + select MFD_CORE + help + If you say yes here you get support the RTC MFD driver for Sophgo + CV1800 series SoC. The RTC module comprises a 32kHz oscillator, + Power-on-Reset (PoR) sub-module, HW state machine to control chip + power-on, power-off and reset. Furthermore, the 8051 subsystem is + located within RTCSYS including associated SRAM block. + + This driver can also be built as a module. If so, the module will be + called cv1800-rtcsys. + +endmenu +endif diff --git a/drivers/soc/sophgo/Makefile b/drivers/soc/sophgo/Makefile new file mode 100644 index 000000000000..8f22b4e79311 --- /dev/null +++ b/drivers/soc/sophgo/Makefile @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0 + +obj-$(CONFIG_SOPHGO_CV1800_RTCSYS) +=3D cv1800-rtcsys.o diff --git a/drivers/soc/sophgo/cv1800-rtcsys.c b/drivers/soc/sophgo/cv1800= -rtcsys.c new file mode 100644 index 000000000000..cb271f02afcc --- /dev/null +++ b/drivers/soc/sophgo/cv1800-rtcsys.c @@ -0,0 +1,63 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Driver for Sophgo CV1800 series SoC RTC subsystem + * + * The RTC module comprises a 32kHz oscillator, Power-on-Reset (PoR) sub-m= odule, + * HW state machine to control chip power-on, power-off and reset. Further= more, + * the 8051 subsystem is located within RTCSYS including associated SRAM b= lock. + * + * Copyright (C) 2025 Alexander Sverdlin + * + */ + +#include +#include +#include +#include + +static struct resource cv1800_rtcsys_irq_resources[] =3D { + DEFINE_RES_IRQ_NAMED(0, "alarm"), +}; + +static const struct mfd_cell cv1800_rtcsys_subdev[] =3D { + { + .name =3D "cv1800-rtc", + .num_resources =3D 1, + .resources =3D &cv1800_rtcsys_irq_resources[0], + }, +}; + +static int cv1800_rtcsys_probe(struct platform_device *pdev) +{ + int irq; + + irq =3D platform_get_irq_byname(pdev, "alarm"); + if (irq < 0) + return irq; + cv1800_rtcsys_irq_resources[0].start =3D irq; + cv1800_rtcsys_irq_resources[0].end =3D irq; + + return devm_mfd_add_devices(&pdev->dev, PLATFORM_DEVID_AUTO, + cv1800_rtcsys_subdev, + ARRAY_SIZE(cv1800_rtcsys_subdev), + NULL, 0, NULL); +} + +static const struct of_device_id cv1800_rtcsys_of_match[] =3D { + { .compatible =3D "sophgo,cv1800b-rtc" }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, cv1800_rtcsys_of_match); + +static struct platform_driver cv1800_rtcsys_mfd =3D { + .probe =3D cv1800_rtcsys_probe, + .driver =3D { + .name =3D "cv1800_rtcsys", + .of_match_table =3D cv1800_rtcsys_of_match, + }, +}; +module_platform_driver(cv1800_rtcsys_mfd); + +MODULE_AUTHOR("Alexander Sverdlin "); +MODULE_DESCRIPTION("Sophgo CV1800 series SoC RTC subsystem driver"); +MODULE_LICENSE("GPL"); --=20 2.48.1 From nobody Sun Feb 8 02:26:45 2026 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) (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 CCEF821B1BE; Sun, 9 Mar 2025 20:26:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741552011; cv=none; b=SxRsVp7GPdVUQ2qq3etszw7vFsldXuzh2CJkEIPZq5Zc19+Z+38Kl/vWP++zp0xJ9n0BoP9TUM8yf6nl2zOqYaW/FAZtrIf/0x04BHP9HCyz8VUHlqyrOo/WHjjhPEYB8C7dpqrQHxG2YqgUmeAdR4WVtJzSbMuPypCYuTDRcwc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741552011; c=relaxed/simple; bh=JlNZJiSrRTG2CRBUO5hEK/QMgLdercFEvvrI/JrL3to=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CdsQ1U4hVGW4nPR077FtSxOJysACDpexprrggGngJ1oH5UO8Jl2VJMESI8I57P1UXgBr/z8wnZvgwqQo55QqWxd1Bpuz2ZMM9jDU3pgDgrj60xSCWghWOPtrcNAQIkHt+2m5gK69j5jEdXC0u9cT6ggJ/+w/CZS7Te9HspwD0MI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=TjU0ZNY5; arc=none smtp.client-ip=209.85.218.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TjU0ZNY5" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-abf45d8db04so544107666b.1; Sun, 09 Mar 2025 13:26:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741552008; x=1742156808; 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=AgX9a1Aq9JdDvGqYLnfOnFZ6qHi3vH+XQ7U6CnatI+A=; b=TjU0ZNY5g4fMyLZLaLSRvfaK2/42mjELTUopIN+odU0xyyjw35Bme4C1eNTqs8LfmY 6QgiACFelErCUDdFS5gYVI5G2LDt6HLEm5d1YZdeipsmAO5Ub1ayreSZzoPsFDTbANlL AUX9c4bnWlrtTU//L7J5shzjCwZ7Sd7Qx61dhr+5FoH1pV2QlkNQ7vUsgxu9y6tn+GIB uRQRoe+l9pnML6+xz0Zdhs6pexRHg1kd42fWQEsqev8v+8cI8ge6naosOiaxZGahtbwl 8xKicz8jU4Bqew04Ee6TKLT1VTYoZuWn9eO5nRb37cYjscd/qGfxB/cnCmoemhOmp7X3 XC8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741552008; x=1742156808; 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=AgX9a1Aq9JdDvGqYLnfOnFZ6qHi3vH+XQ7U6CnatI+A=; b=AiWHZ9mByo33d6RJFtI1a/RYDo0i4oXDNMImzomNPLgQEnSCNDCu8zypLjcHUbNsKD 0DGGoSKeRnuSHETfuQ8VgBGUP8AIOPseHxg3RjkXRImy7G8pN+WpApjPDLKzraHlSgaW OuaHuZOVJfQsve7yFzsN7OzmcHaMy4AZ35I5g3iuWreZyQTWajdPfawVkSwLZt84DzfG ihS29Rr7+Fh7x8Sh89uzE9AnqEyqrdrri4Ko2TReV0HN1CartDpBQGZcmKfxIeV3YMk9 54uxoexWNCMEg6qjA9+nBBbJ5FLw5xYLJ7K7alw87xeUAEb4ZSym5ec3tfCbTopiIIHv QMmw== X-Forwarded-Encrypted: i=1; AJvYcCUj6ErJ/FzT4qHx8lMD2IBFCZk4FT0assStkiFcgRTtQzCwEH2IasBzvrlSVl+hGzLMglYkFgXNur4f@vger.kernel.org, AJvYcCVECYV3VOqol9ZronQGwyNkdQvs1DSH10qLWjWfjJ7gBuvZAItxDvH3vWKoYnr8qsHINQZbYtlYIK+J@vger.kernel.org, AJvYcCXqff67mbRfgrlqgY4zwzFfuDFNSEcrQdA9oiseQvrlGRp/SlYtpPHx9+Ndwsk5KCcC22xOe5VPD/gjBj0u@vger.kernel.org X-Gm-Message-State: AOJu0YymT5mIOSoD/VtSyGpeYRhicsIWyO6/JyoeH6HiIFZ7H+uc7gPQ BmNCTLlp7TxCWGdSCAGrBvzd1+OOs9Whn2+VP1U7+ooDRtaOuh9K X-Gm-Gg: ASbGncvyAMGVGzDkeQ9EBY+YeE2lYHziLA16nicu/p1vmALusypi8X90L4Hy89Iedci Z2j121Z16MgqBIhXCN3rKIXiWES6wuUFyqZSyjN14BzF6QrqyvMh6vG1yBhbJOhH+UoVjWkvroD Obl0w57ylMWwm+pLxqKInr9707IyUCxcd8QXzzfFBWD5XrwXTPp2Abvu7m1DM3kgT9Bxwbi66Bx WM1zD09vpXJZRFIBMHHFdTYzZlyIPUPaRgi7eTsLhpVFGq1h28TDHGHwlfkPEENYgnCUp3Mc0pN H/BuR5Mj8RgyH5VMjma7FUSLgxmI1tE86qVuy1Sp3jCu9ttDdzBogOY4jOyucAS/jGIT X-Google-Smtp-Source: AGHT+IGtDIxOlAVM/YPDW2Uqggt56ekJGM3Hytlqa9FsP51qMBCQBLySx7tKlXb3Bz4oCLEqdlrYwA== X-Received: by 2002:a17:907:1b05:b0:ac2:4b9:dff8 with SMTP id a640c23a62f3a-ac2527048b1mr1192209466b.32.1741552007848; Sun, 09 Mar 2025 13:26:47 -0700 (PDT) Received: from giga-mm.. ([2a02:1210:861b:6f00:82ee:73ff:feb8:99e3]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac27c7e29bbsm281833966b.92.2025.03.09.13.26.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 13:26:47 -0700 (PDT) From: Alexander Sverdlin To: sophgo@lists.linux.dev, devicetree@vger.kernel.org, linux-rtc@vger.kernel.org Cc: Jingbao Qiu , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen Wang , Inochi Amaoto , Alexandre Belloni , Arnd Bergmann , Yangyu Chen , linux-kernel@vger.kernel.org, Alexander Sverdlin Subject: [PATCH v13 3/3] rtc: sophgo: add rtc support for Sophgo CV1800 SoC Date: Sun, 9 Mar 2025 21:26:25 +0100 Message-ID: <20250309202629.3516822-4-alexander.sverdlin@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250309202629.3516822-1-alexander.sverdlin@gmail.com> References: <20250309202629.3516822-1-alexander.sverdlin@gmail.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" From: Jingbao Qiu Implement the RTC driver for CV1800, which able to provide time alarm. Signed-off-by: Jingbao Qiu Signed-off-by: Alexander Sverdlin --- Changelog: v13: - Change in the Kconfig dependency caused by the move of the previous patch from MFD into SOC v12: - added MAINTAINERS entry - depends on cv1800-rtcsys MFD driver - use syscon for regmap - get named clock from parent MFD - corresponding platform device is expected to be instantiated by MFD stub Changes since v10: - only start RTC on set_time; Changes since v9: - further simplified bitmask macros; - unconditional RTC start (rtc_enable_sec_counter()), otherwise didn't start on SG2000; - dropped ANA_CALIB modification (has been forgotten in v8 with the drop of SW calibration to switch to HW calibration); - successfully tested on SG2000; MAINTAINERS | 1 + drivers/rtc/Kconfig | 12 +++ drivers/rtc/Makefile | 1 + drivers/rtc/rtc-cv1800.c | 218 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 232 insertions(+) create mode 100644 drivers/rtc/rtc-cv1800.c diff --git a/MAINTAINERS b/MAINTAINERS index ac15e448fffb..be8fee50a49c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -22354,6 +22354,7 @@ L: sophgo@lists.linux.dev W: https://github.com/sophgo/linux/wiki T: git https://github.com/sophgo/linux.git S: Maintained +F: drivers/rtc/rtc-cv1800.c F: drivers/soc/sophgo/cv1800-rtcsys.c N: sophgo K: sophgo diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig index 0bbbf778ecfa..46593103db11 100644 --- a/drivers/rtc/Kconfig +++ b/drivers/rtc/Kconfig @@ -1395,6 +1395,18 @@ config RTC_DRV_ASM9260 This driver can also be built as a module. If so, the module will be called rtc-asm9260. =20 +config RTC_DRV_CV1800 + tristate "Sophgo CV1800 RTC" + depends on SOPHGO_CV1800_RTCSYS || COMPILE_TEST + select MFD_SYSCON + select REGMAP + help + If you say yes here you get support the RTC driver for Sophgo CV1800 + series SoC. + + This driver can also be built as a module. If so, the module will be + called rtc-cv1800. + config RTC_DRV_DIGICOLOR tristate "Conexant Digicolor RTC" depends on ARCH_DIGICOLOR || COMPILE_TEST diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile index 489b4ab07068..621b30a33dda 100644 --- a/drivers/rtc/Makefile +++ b/drivers/rtc/Makefile @@ -44,6 +44,7 @@ obj-$(CONFIG_RTC_DRV_CADENCE) +=3D rtc-cadence.o obj-$(CONFIG_RTC_DRV_CMOS) +=3D rtc-cmos.o obj-$(CONFIG_RTC_DRV_CPCAP) +=3D rtc-cpcap.o obj-$(CONFIG_RTC_DRV_CROS_EC) +=3D rtc-cros-ec.o +obj-$(CONFIG_RTC_DRV_CV1800) +=3D rtc-cv1800.o obj-$(CONFIG_RTC_DRV_DA9052) +=3D rtc-da9052.o obj-$(CONFIG_RTC_DRV_DA9055) +=3D rtc-da9055.o obj-$(CONFIG_RTC_DRV_DA9063) +=3D rtc-da9063.o diff --git a/drivers/rtc/rtc-cv1800.c b/drivers/rtc/rtc-cv1800.c new file mode 100644 index 000000000000..18bc542bbdb8 --- /dev/null +++ b/drivers/rtc/rtc-cv1800.c @@ -0,0 +1,218 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * rtc-cv1800.c: RTC driver for Sophgo cv1800 RTC + * + * Author: Jingbao Qiu + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define SEC_PULSE_GEN 0x1004 +#define ALARM_TIME 0x1008 +#define ALARM_ENABLE 0x100C +#define SET_SEC_CNTR_VAL 0x1010 +#define SET_SEC_CNTR_TRIG 0x1014 +#define SEC_CNTR_VAL 0x1018 + +/* + * When in VDDBKUP domain, this MACRO register + * does not power down + */ +#define MACRO_RO_T 0x14A8 +#define MACRO_RG_SET_T 0x1498 + +#define ALARM_ENABLE_MASK BIT(0) +#define SEL_SEC_PULSE BIT(31) + +struct cv1800_rtc_priv { + struct rtc_device *rtc_dev; + struct regmap *rtc_map; + struct clk *clk; + int irq; +}; + +static bool cv1800_rtc_enabled(struct device *dev) +{ + struct cv1800_rtc_priv *info =3D dev_get_drvdata(dev); + u32 reg; + + regmap_read(info->rtc_map, SEC_PULSE_GEN, ®); + + return (reg & SEL_SEC_PULSE) =3D=3D 0; +} + +static void cv1800_rtc_enable(struct device *dev) +{ + struct cv1800_rtc_priv *info =3D dev_get_drvdata(dev); + + /* Sec pulse generated internally */ + regmap_update_bits(info->rtc_map, SEC_PULSE_GEN, SEL_SEC_PULSE, 0); +} + +static int cv1800_rtc_alarm_irq_enable(struct device *dev, unsigned int en= abled) +{ + struct cv1800_rtc_priv *info =3D dev_get_drvdata(dev); + + regmap_write(info->rtc_map, ALARM_ENABLE, enabled); + + return 0; +} + +static int cv1800_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alr= m) +{ + struct cv1800_rtc_priv *info =3D dev_get_drvdata(dev); + unsigned long alarm_time; + + alarm_time =3D rtc_tm_to_time64(&alrm->time); + + cv1800_rtc_alarm_irq_enable(dev, 0); + + regmap_write(info->rtc_map, ALARM_TIME, alarm_time); + + cv1800_rtc_alarm_irq_enable(dev, alrm->enabled); + + return 0; +} + +static int cv1800_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *al= arm) +{ + struct cv1800_rtc_priv *info =3D dev_get_drvdata(dev); + u32 enabled; + u32 time; + + if (!cv1800_rtc_enabled(dev)) { + alarm->enabled =3D 0; + return 0; + } + + regmap_read(info->rtc_map, ALARM_ENABLE, &enabled); + + alarm->enabled =3D enabled & ALARM_ENABLE_MASK; + + regmap_read(info->rtc_map, ALARM_TIME, &time); + + rtc_time64_to_tm(time, &alarm->time); + + return 0; +} + +static int cv1800_rtc_read_time(struct device *dev, struct rtc_time *tm) +{ + struct cv1800_rtc_priv *info =3D dev_get_drvdata(dev); + u32 sec; + + if (!cv1800_rtc_enabled(dev)) + return -EINVAL; + + regmap_read(info->rtc_map, SEC_CNTR_VAL, &sec); + + rtc_time64_to_tm(sec, tm); + + return 0; +} + +static int cv1800_rtc_set_time(struct device *dev, struct rtc_time *tm) +{ + struct cv1800_rtc_priv *info =3D dev_get_drvdata(dev); + unsigned long sec; + + sec =3D rtc_tm_to_time64(tm); + + regmap_write(info->rtc_map, SET_SEC_CNTR_VAL, sec); + regmap_write(info->rtc_map, SET_SEC_CNTR_TRIG, 1); + + regmap_write(info->rtc_map, MACRO_RG_SET_T, sec); + + cv1800_rtc_enable(dev); + + return 0; +} + +static irqreturn_t cv1800_rtc_irq_handler(int irq, void *dev_id) +{ + struct cv1800_rtc_priv *info =3D dev_id; + + rtc_update_irq(info->rtc_dev, 1, RTC_IRQF | RTC_AF); + + regmap_write(info->rtc_map, ALARM_ENABLE, 0); + + return IRQ_HANDLED; +} + +static const struct rtc_class_ops cv1800_rtc_ops =3D { + .read_time =3D cv1800_rtc_read_time, + .set_time =3D cv1800_rtc_set_time, + .read_alarm =3D cv1800_rtc_read_alarm, + .set_alarm =3D cv1800_rtc_set_alarm, + .alarm_irq_enable =3D cv1800_rtc_alarm_irq_enable, +}; + +static int cv1800_rtc_probe(struct platform_device *pdev) +{ + struct cv1800_rtc_priv *rtc; + int ret; + + rtc =3D devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL); + if (!rtc) + return -ENOMEM; + + rtc->rtc_map =3D device_node_to_regmap(pdev->dev.parent->of_node); + if (IS_ERR(rtc->rtc_map)) + return dev_err_probe(&pdev->dev, PTR_ERR(rtc->rtc_map), + "cannot get parent regmap\n"); + + rtc->irq =3D platform_get_irq(pdev, 0); + if (rtc->irq < 0) + return rtc->irq; + + rtc->clk =3D devm_clk_get_enabled(pdev->dev.parent, "rtc"); + if (IS_ERR(rtc->clk)) + return dev_err_probe(&pdev->dev, PTR_ERR(rtc->clk), + "rtc clk not found\n"); + + platform_set_drvdata(pdev, rtc); + + device_init_wakeup(&pdev->dev, 1); + + rtc->rtc_dev =3D devm_rtc_allocate_device(&pdev->dev); + if (IS_ERR(rtc->rtc_dev)) + return PTR_ERR(rtc->rtc_dev); + + rtc->rtc_dev->ops =3D &cv1800_rtc_ops; + rtc->rtc_dev->range_max =3D U32_MAX; + + ret =3D devm_request_irq(&pdev->dev, rtc->irq, cv1800_rtc_irq_handler, + IRQF_TRIGGER_HIGH, "rtc alarm", rtc); + if (ret) + return dev_err_probe(&pdev->dev, ret, + "cannot register interrupt handler\n"); + + return devm_rtc_register_device(rtc->rtc_dev); +} + +static const struct platform_device_id cv1800_rtc_id[] =3D { + { .name =3D "cv1800-rtc" }, + { /* sentinel */ }, +}; +MODULE_DEVICE_TABLE(platform, cv1800_rtc_id); + +static struct platform_driver cv1800_rtc_driver =3D { + .driver =3D { + .name =3D "sophgo-cv1800-rtc", + }, + .probe =3D cv1800_rtc_probe, + .id_table =3D cv1800_rtc_id, +}; + +module_platform_driver(cv1800_rtc_driver); +MODULE_AUTHOR("Jingbao Qiu"); +MODULE_DESCRIPTION("Sophgo cv1800 RTC Driver"); +MODULE_LICENSE("GPL"); --=20 2.48.1