From abecd399219b486802e91f60979e3e83f2294b3f Mon Sep 17 00:00:00 2001 From: IBEN EL HADJ MESSAOUD Marwa Date: Wed, 2 Apr 2025 10:51:37 +0200 Subject: [PATCH 1/4] include: zephyr: dt-bindings: Add STM32C0 USB clock selection support - Defined CCIPR2_REG offset. - Added USB_SEL(val) macro to support USB clock selection using CCIPR2_REG. Signed-off-by: IBEN EL HADJ MESSAOUD Marwa --- include/zephyr/dt-bindings/clock/stm32c0_clock.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/zephyr/dt-bindings/clock/stm32c0_clock.h b/include/zephyr/dt-bindings/clock/stm32c0_clock.h index 00b5078ac163d..2489c48f1e933 100644 --- a/include/zephyr/dt-bindings/clock/stm32c0_clock.h +++ b/include/zephyr/dt-bindings/clock/stm32c0_clock.h @@ -31,6 +31,7 @@ /** @brief RCC_CCIPR register offset */ #define CCIPR_REG 0x54 +#define CCIPR2_REG 0x58 /** @brief RCC_CSR1 register offset */ #define CSR1_REG 0x5C @@ -44,6 +45,8 @@ #define I2C1_SEL(val) STM32_DT_CLOCK_SELECT((val), 3, 12, CCIPR_REG) #define I2C2_I2S1_SEL(val) STM32_DT_CLOCK_SELECT((val), 3, 14, CCIPR_REG) #define ADC_SEL(val) STM32_DT_CLOCK_SELECT((val), 3, 30, CCIPR_REG) +/** CCIPR2 devices */ +#define USB_SEL(val) STM32_DT_CLOCK_SELECT((val), 3, 12, CCIPR2_REG) /** CSR1 devices */ #define RTC_SEL(val) STM32_DT_CLOCK_SELECT((val), 3, 8, CSR1_REG) From 4bf24fb54467e7a7d37abbf518589d565245c862 Mon Sep 17 00:00:00 2001 From: IBEN EL HADJ MESSAOUD Marwa Date: Wed, 2 Apr 2025 10:51:21 +0200 Subject: [PATCH 2/4] dts: arm: st: c0: Add USB device node Added USB device node with compatible "st,stm32-usb". Added usb_fs_phy node with compatible "usb-nop-xceiv". Signed-off-by: IBEN EL HADJ MESSAOUD Marwa --- dts/arm/st/c0/stm32c071.dtsi | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/dts/arm/st/c0/stm32c071.dtsi b/dts/arm/st/c0/stm32c071.dtsi index dac77befe50cb..00cbbb6a118a8 100644 --- a/dts/arm/st/c0/stm32c071.dtsi +++ b/dts/arm/st/c0/stm32c071.dtsi @@ -44,6 +44,20 @@ status = "disabled"; }; + usb: usb@40005c00 { + compatible = "st,stm32-usb"; + reg = <0x40005c00 0x400>; + interrupts = <8 0>; + interrupt-names = "usb"; + num-bidir-endpoints = <8>; + ram-size = <2048>; + maximum-speed = "full-speed"; + phys = <&usb_fs_phy>; + clocks = <&rcc STM32_CLOCK(APB1, 13)>, + <&rcc STM32_SRC_HSE USB_SEL(1)>; + status = "disabled"; + }; + spi2: spi@40003800 { compatible = "st,stm32-spi-fifo", "st,stm32-spi"; #address-cells = <1>; @@ -64,4 +78,9 @@ dma-channels = <5>; }; }; + + usb_fs_phy: usbphy { + compatible = "usb-nop-xceiv"; + #phy-cells = <0>; + }; }; From 8999e7ad877178d558443f2be0d9b5357097c190 Mon Sep 17 00:00:00 2001 From: IBEN EL HADJ MESSAOUD Marwa Date: Wed, 2 Apr 2025 10:51:00 +0200 Subject: [PATCH 3/4] boards: st: nucleo_c071rb: Enable USB peripheral Enable the USB node of the nucleo_c071rb board Signed-off-by: IBEN EL HADJ MESSAOUD Marwa --- boards/st/nucleo_c071rb/nucleo_c071rb.dts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/boards/st/nucleo_c071rb/nucleo_c071rb.dts b/boards/st/nucleo_c071rb/nucleo_c071rb.dts index 3d4bcd0a12e46..2344c71a1aaaa 100644 --- a/boards/st/nucleo_c071rb/nucleo_c071rb.dts +++ b/boards/st/nucleo_c071rb/nucleo_c071rb.dts @@ -165,3 +165,9 @@ &dmamux1 { status = "okay"; }; + +zephyr_udc0: &usb { + pinctrl-0 = <&usb_dm_pa11 &usb_dp_pa12>; + pinctrl-names = "default"; + status = "okay"; +}; From a6d34984251d775b61b51f91bed6746f588647c5 Mon Sep 17 00:00:00 2001 From: IBEN EL HADJ MESSAOUD Marwa Date: Wed, 2 Apr 2025 16:49:03 +0200 Subject: [PATCH 4/4] boards: st: nucleo_c071rb: Add the usb and usbd test features Add the usb_device and usbd test features to nucleo_c071rb.yaml Signed-off-by: IBEN EL HADJ MESSAOUD Marwa --- boards/st/nucleo_c071rb/nucleo_c071rb.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/boards/st/nucleo_c071rb/nucleo_c071rb.yaml b/boards/st/nucleo_c071rb/nucleo_c071rb.yaml index 50ca9ed00ee24..c6fb56c823443 100644 --- a/boards/st/nucleo_c071rb/nucleo_c071rb.yaml +++ b/boards/st/nucleo_c071rb/nucleo_c071rb.yaml @@ -16,6 +16,8 @@ supported: - rtc - spi - watchdog + - usb_device + - usbd ram: 24 flash: 128 vendor: st