Skip to content

Commit 74c061f

Browse files
committed
core: set all peripherals to deferred init
1 parent d2b7cef commit 74c061f

11 files changed

Lines changed: 117 additions & 24 deletions

File tree

cores/arduino/zephyrCommon.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ void _reinit_peripheral_if_needed(pin_size_t pin, const struct device *dev) {
1717
if (pinmux_array[pin] != dev) {
1818
pinmux_array[pin] = dev;
1919
if (dev != NULL) {
20-
dev->ops.init(dev);
20+
device_init(dev);
2121
}
2222
}
2323
}

cores/arduino/zephyrSerial.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,7 @@ class ZephyrSerial : public HardwareSerial {
7777

7878
void end() {
7979
#ifdef CONFIG_DEVICE_DEINIT_SUPPORT
80-
if (uart->ops.deinit) {
81-
uart->ops.deinit(uart);
82-
}
80+
(void)device_deinit(uart);
8381
#endif
8482
}
8583

@@ -110,7 +108,7 @@ class ZephyrSerial : public HardwareSerial {
110108
ZephyrSerialBuffer<CONFIG_ARDUINO_API_SERIAL_BUFFER_SIZE> rx;
111109

112110
virtual void _reinit_if_needed() {
113-
uart->ops.init(uart);
111+
device_init(uart);
114112
}
115113
};
116114

libraries/CAN/CAN.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,7 @@ bool arduino::ZephyrCAN::beginFD(CanBitRate arbitration_bitrate, uint32_t data_b
3333

3434
bool arduino::ZephyrCAN::_begin(CanBitRate arbitration_bitrate, CanMode mode, uint32_t data_bitrate,
3535
bool bitrate_switch) {
36-
if (!device_is_ready(_dev)) {
37-
return false;
38-
}
39-
40-
_dev->ops.init(_dev);
36+
(void)device_init(_dev);
4137

4238
/* Bitrate can only be changed while the controller is stopped. */
4339
(void)can_stop(_dev);

libraries/SPI/SPI.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,14 +115,12 @@ void arduino::ZephyrSPI::detachInterrupt() {
115115
}
116116

117117
void arduino::ZephyrSPI::begin() {
118-
spi_dev->ops.init(spi_dev);
118+
device_init(spi_dev);
119119
}
120120

121121
void arduino::ZephyrSPI::end() {
122122
#ifdef CONFIG_DEVICE_DEINIT_SUPPORT
123-
if (spi_dev->ops.deinit) {
124-
spi_dev->ops.deinit(spi_dev);
125-
}
123+
(void)device_deinit(spi_dev);
126124
#endif
127125
}
128126

libraries/Wire/Wire.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ arduino::ZephyrI2C::ZephyrI2C(const struct device *i2c) : i2c_cfg({0}), i2c_dev(
5757
}
5858

5959
void arduino::ZephyrI2C::begin() {
60-
i2c_dev->ops.init(i2c_dev);
60+
(void)device_init(i2c_dev);
6161
}
6262

6363
void arduino::ZephyrI2C::begin(uint8_t slaveAddr) {
@@ -75,9 +75,7 @@ void arduino::ZephyrI2C::end() {
7575
memset(&i2c_cfg, 0, sizeof(i2c_cfg));
7676
}
7777
#ifdef CONFIG_DEVICE_DEINIT_SUPPORT
78-
if (i2c_dev->ops.deinit) {
79-
i2c_dev->ops.deinit(i2c_dev);
80-
}
78+
(void)device_deinit(i2c_dev);
8179
#endif
8280
}
8381

variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.overlay

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,24 +13,28 @@
1313

1414
&usart1 {
1515
status = "okay";
16+
/* usart1 is not set as deferred-init to catch early boot logs since it is assigned to zephyr,console */
1617
};
1718

1819
&usart2 {
1920
status = "okay";
21+
zephyr,deferred-init;
2022
pinctrl-0 = <&usart2_tx_pd5 &usart2_rx_pd6>;
2123
pinctrl-names = "default";
2224
current-speed = <115200>;
2325
};
2426

2527
&uart4 {
2628
status = "okay";
29+
zephyr,deferred-init;
2730
pinctrl-0 = <&uart4_tx_ph13 &uart4_rx_pi9>;
2831
pinctrl-names = "default";
2932
current-speed = <115200>;
3033
};
3134

3235
&usart6 {
3336
status = "okay";
37+
zephyr,deferred-init;
3438
};
3539

3640
&rtc {
@@ -42,6 +46,7 @@
4246

4347
&i2c4 {
4448
status = "okay";
49+
zephyr,deferred-init;
4550
gc2145: gc2145@3c {
4651
compatible = "galaxycore,gc2145";
4752
reg = <0x3c>;
@@ -58,13 +63,15 @@
5863

5964
&i2c1 {
6065
status = "okay";
66+
zephyr,deferred-init;
6167
pinctrl-0 = <&i2c1_scl_pb8 &i2c1_sda_pb9>;
6268
pinctrl-names = "default";
6369
clock-frequency = <I2C_BITRATE_FAST>;
6470
};
6571

6672
&i2c2 {
6773
status = "okay";
74+
zephyr,deferred-init;
6875
pinctrl-0 = <&i2c2_scl_ph4 &i2c2_sda_pb11>;
6976
pinctrl-names = "default";
7077
clock-frequency = <I2C_BITRATE_FAST>;
@@ -76,6 +83,7 @@
7683

7784
pwm1: pwm {
7885
status = "okay";
86+
zephyr,deferred-init;
7987
/* Temporarily removed SPI1 pins */
8088
/* pinctrl-0 = <&tim1_ch3_pj9 &tim1_ch1_pk1 &tim1_ch2_pj11>; */
8189
pinctrl-0 = <&tim1_ch3_pj9 &tim1_ch1_pk1>;
@@ -89,6 +97,7 @@
8997

9098
pwm2: pwm {
9199
status = "okay";
100+
zephyr,deferred-init;
92101
pinctrl-0 = <&tim2_ch4_pa3 &tim2_ch3_pa2>;
93102
pinctrl-names = "default";
94103
};
@@ -100,6 +109,7 @@
100109

101110
pwm3: pwm {
102111
status = "okay";
112+
zephyr,deferred-init;
103113
pinctrl-0 = <&tim3_ch2_pa7 &tim3_ch1_pb4>;
104114
pinctrl-names = "default";
105115
};
@@ -111,6 +121,7 @@
111121

112122
pwm4: pwm {
113123
status = "okay";
124+
zephyr,deferred-init;
114125
pinctrl-0 = <&tim4_ch2_pd13 &tim4_ch3_pb8 &tim4_ch4_pb9>;
115126
pinctrl-names = "default";
116127
};
@@ -122,6 +133,7 @@
122133

123134
pwm8: pwm {
124135
status = "okay";
136+
zephyr,deferred-init;
125137
/* Temporarily removed SPI1 pins */
126138
/* pinctrl-0 = <&tim8_ch1_pj8 &tim8_ch2_pj10>; */
127139
pinctrl-0 = <&tim8_ch1_pj8>;
@@ -189,19 +201,22 @@
189201

190202
&spi1 {
191203
status = "okay";
204+
zephyr,deferred-init;
192205
pinctrl-0 = <&spi1_sck_pb3
193206
&spi1_miso_pg9 &spi1_mosi_pd7>;
194207
pinctrl-names = "default";
195208
};
196209

197210
&spi5 {
198211
status = "okay";
212+
zephyr,deferred-init;
199213
pinctrl-0 = <&spi5_sck_ph6
200214
&spi5_miso_pj11 &spi5_mosi_pj10>;
201215
pinctrl-names = "default";
202216
};
203217

204218
&adc1 {
219+
zephyr,deferred-init;
205220
pinctrl-0 = <&adc1_inp4_pc4
206221
&adc1_inp8_pc5
207222
&adc1_inp9_pb0
@@ -310,6 +325,7 @@
310325
};
311326

312327
&adc3 {
328+
zephyr,deferred-init;
313329
pinctrl-0 = <&adc3_inp0_pc2_c
314330
&adc3_inp1_pc3_c>;
315331
pinctrl-names = "default";
@@ -336,6 +352,10 @@
336352
};
337353
};
338354

355+
&dac1 {
356+
zephyr,deferred-init;
357+
};
358+
339359
/{
340360
chosen {
341361
zephyr,camera = &dcmi;

variants/arduino_nano_33_ble_nrf52840_sense/arduino_nano_33_ble_nrf52840_sense.overlay

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,8 @@
144144
&adc {
145145
#address-cells = <1>;
146146
#size-cells = <0>;
147-
147+
zephyr,deferred-init;
148+
148149
channel@0 {
149150
reg = <0>;
150151
zephyr,gain = "ADC_GAIN_1_6";
@@ -262,20 +263,23 @@
262263

263264
&pwm1 {
264265
status = "okay";
266+
zephyr,deferred-init;
265267
pinctrl-0 = <&pwm1_default>;
266268
pinctrl-1 = <&pwm1_sleep>;
267269
pinctrl-names = "default", "sleep";
268270
};
269271

270272
&pwm2 {
271273
status = "okay";
274+
zephyr,deferred-init;
272275
pinctrl-0 = <&pwm2_default>;
273276
pinctrl-1 = <&pwm2_sleep>;
274277
pinctrl-names = "default", "sleep";
275278
};
276279

277280
&i2c0 {
278281
status = "okay";
282+
zephyr,deferred-init;
279283
pinctrl-0 = <&i2c0_default>;
280284
pinctrl-1 = <&i2c0_sleep>;
281285
pinctrl-names = "default", "sleep";
@@ -284,6 +288,7 @@
284288

285289
&i2c1 {
286290
status = "okay";
291+
zephyr,deferred-init;
287292
pinctrl-0 = <&i2c1_default>;
288293
pinctrl-1 = <&i2c1_sleep>;
289294
pinctrl-names = "default", "sleep";
@@ -295,3 +300,7 @@
295300
clock-frequency = <32768>;
296301
prescaler = <1>; // Optional: sets the RTC tick to ~30.5 µs
297302
};
303+
&spi2 {
304+
zephyr,deferred-init;
305+
};
306+

variants/arduino_nicla_vision_stm32h747xx_m7/arduino_nicla_vision_stm32h747xx_m7.overlay

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,26 +12,36 @@
1212
};
1313
};
1414

15+
&lpuart1 {
16+
status = "okay";
17+
/* lpuart1 is not set as deferred-init to catch early boot logs since it is assigned to zephyr,console */
18+
};
19+
1520
/* I2C buses */
1621
&i2c1 {
1722
status = "okay";
23+
zephyr,deferred-init;
1824
};
1925

2026
&i2c2 {
2127
status = "okay";
28+
zephyr,deferred-init;
2229
};
2330

2431
&i2c3 {
2532
status = "okay";
33+
zephyr,deferred-init;
2634
};
2735

2836
/* SPI buses */
2937
&spi4 {
3038
status = "okay";
39+
zephyr,deferred-init;
3140
};
3241

3342
&spi5 {
3443
status = "okay";
44+
zephyr,deferred-init;
3545
};
3646

3747
&rtc {
@@ -48,6 +58,7 @@
4858

4959
pwm1: pwm {
5060
status = "okay";
61+
zephyr,deferred-init;
5162
pinctrl-0 = <&tim1_ch3_pj9 &tim1_ch1_pk1>;
5263
pinctrl-names = "default";
5364
};
@@ -61,6 +72,7 @@
6172

6273
pwm8: pwm {
6374
status = "okay";
75+
zephyr,deferred-init;
6476
pinctrl-0 = <&tim8_ch3n_ph15 &tim8_ch2_pj10 &tim8_ch2n_pj7>;
6577
pinctrl-names = "default";
6678
};
@@ -72,12 +84,14 @@
7284

7385
pwm12: pwm {
7486
status = "okay";
87+
zephyr,deferred-init;
7588
pinctrl-0 = <&tim12_ch1_ph6>;
7689
pinctrl-names = "default";
7790
};
7891
};
7992

8093
&adc1 {
94+
zephyr,deferred-init;
8195
pinctrl-0 = <&adc1_inp4_pc4>;
8296
pinctrl-names = "default";
8397
st,adc-clock-source = "SYNC";
@@ -105,6 +119,7 @@
105119
};
106120

107121
&adc2 {
122+
zephyr,deferred-init;
108123
pinctrl-0 = <&adc2_inp2_pf13>;
109124
pinctrl-names = "default";
110125
st,adc-clock-source = "SYNC";

0 commit comments

Comments
 (0)