Message ID | 20240711140843.3201530-1-valentin.caron@foss.st.com (mailing list archive) |
---|---|
Headers | show |
Series | rtc: stm32: add pinctrl interface to handle RTC outs | expand |
Hello, On 11/07/2024 16:08:39+0200, Valentin Caron wrote: > 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>; > }; > This all seems good to me, I let you fix the various issues that have been reported. I was just wondering whether the LSCO clock was registered early enough to be used but I guess you tested that.
On 7/15/24 23:12, Alexandre Belloni wrote: > Hello, > > On 11/07/2024 16:08:39+0200, Valentin Caron wrote: >> 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>; >> }; >> > > This all seems good to me, I let you fix the various issues that have > been reported. I was just wondering whether the LSCO clock was registered > early enough to be used but I guess you tested that. > Hi, Here it is: https://lore.kernel.org/lkml/20240717074835.2210411-1valentin.caron@foss.st.com/ Yes it works fine, RTC is probed early enough in the boot sequence, and so Wifi/BT module does not have an issue to get the LSCO clock. Thanks, Valentin