rtc: stm32: add pinctrl interface to handle RTC outs
From: | Valentin Caron <valentin.caron-AT-foss.st.com> | |
To: | Alexandre Belloni <alexandre.belloni-AT-bootlin.com>, Rob Herring <robh-AT-kernel.org>, Krzysztof Kozlowski <krzk+dt-AT-kernel.org>, Conor Dooley <conor+dt-AT-kernel.org>, Alexandre Torgue <alexandre.torgue-AT-foss.st.com> | |
Subject: | [PATCH v3 0/4] rtc: stm32: add pinctrl interface to handle RTC outs | |
Date: | Mon, 22 Jul 2024 18:00:18 +0200 | |
Message-ID: | <20240722160022.454226-1-valentin.caron@foss.st.com> | |
Cc: | <linux-rtc-AT-vger.kernel.org>, <devicetree-AT-vger.kernel.org>, <linux-stm32-AT-st-md-mailman.stormreply.com>, <linux-arm-kernel-AT-lists.infradead.org>, <linux-kernel-AT-vger.kernel.org>, Amelie Delaunay <amelie.delaunay-AT-foss.st.com>, Valentin Caron <valentin.caron-AT-foss.st.com> | |
Archive-link: | Article |
This series adds a pinctrl/pinmux interface to control STM32 RTC outputs. Theses two signals output are possible: - LSCO (Low Speed Clock Output) that allow to output LSE clock on a pin. On STM32MPU Discovery boards, this feature is used to generate a clock to Wifi/Bluetooth module. - Alarm out that allow to send a pulse on a pin when alarm A of the RTC expires. First attempt [1] was based on 'st,' vendor properties, this one is based on pinctrl and pinmux framework. As device-trees will be upstreamed separately, here is an example: stm32-pinctrl { rtc_rsvd_pins_a: rtc-rsvd-0 { pins { pinmux = <STM32_PINMUX('B', 2, AF1)>, /* OUT2 */ <STM32_PINMUX('I', 8, ANALOG)>; /* OUT2_RMP */ }; }; }; stm32-rtc { pinctrl-0 = <&rtc_rsvd_pins_a &rtc_alarma_pins_a>; /* Enable by foo-device */ rtc_lsco_pins_a: rtc-lsco-0 { pins = "out2_rmp"; function = "lsco"; }; /* Enable by stm32-rtc hog */ rtc_alarma_pins_a: rtc-alarma-0 { pins = "out2"; function = "alarm-a"; }; }; foo-device { pinctrl-0 = <&rtc_lsco_pins_a>; }; [1] https://lore.kernel.org/linux-arm-kernel/20220504130617.3... Since v2: - Modify Kconfig after (a lot of) robots alert: + https://lore.kernel.org/oe-kbuild-all/202407190654.I3RI7W... + https://lore.kernel.org/oe-kbuild-all/202407191258.1oitww... + https://lore.kernel.org/oe-kbuild-all/202407200400.NnW2fJ... + https://lore.kernel.org/oe-kbuild-all/202407181525.BRNKqm... + https://lore.kernel.org/oe-kbuild-all/202407191830.8bh5dJ... Make RTC_DRV_STM32 depends on OF, PINCTRL and COMMON_CLK as they are menuconfig entry. Make RTC_DRV_STM32 select PINCONF, PINCONF_GENERIC and PINMUX as they config entry. Since v1: - Select PINMUX and PINCONF_GENERIC to solve: https://lore.kernel.org/oe-kbuild-all/202407130943.ie6n2O... - Make stm32_rtc_pinctrl_pins as static to solve: https://lore.kernel.org/oe-kbuild-all/202407130612.OEicZb... - Change "depends on" to "select" COMMON_CLK config - Modify regex in dt-binding to avoid properties like "rtc--123" as valid ones. Valentin Caron (4): dt-bindings: rtc: stm32: describe pinmux nodes rtc: stm32: add pinctrl and pinmux interfaces rtc: stm32: add Low Speed Clock Output (LSCO) support rtc: stm32: add alarm A out feature .../devicetree/bindings/rtc/st,stm32-rtc.yaml | 28 ++ drivers/rtc/Kconfig | 6 + drivers/rtc/rtc-stm32.c | 281 ++++++++++++++++++ 3 files changed, 315 insertions(+) -- 2.25.1