@@ -107,6 +107,9 @@ zcbor
107
107
Device Drivers and Devicetree
108
108
*****************************
109
109
110
+ Devicetree Labels
111
+ =================
112
+
110
113
* Various deprecated macros related to the deprecated devicetree label property
111
114
were removed. These are listed in the following table. The table also
112
115
provides replacements.
@@ -153,52 +156,73 @@ Device Drivers and Devicetree
153
156
* - ``DT_INST_BUS_LABEL(inst) ``
154
157
- ``DT_PROP(DT_BUS(DT_DRV_INST(inst)), label) ``
155
158
156
- * The :dtcompatible: `nxp,pcf8574 ` driver has been renamed to
157
- :dtcompatible: `nxp,pcf857x `. (:github: `67054 `) to support pcf8574 and pcf8575.
158
- The Kconfig option has been renamed from :kconfig:option: `CONFIG_GPIO_PCF8574 ` to
159
- :kconfig:option: `CONFIG_GPIO_PCF857X `.
160
- The Device Tree can be configured as follows:
159
+ Multi-level Interrupts
160
+ ======================
161
+
162
+ * For platforms that enabled :kconfig:option: `CONFIG_MULTI_LEVEL_INTERRUPTS `, the ``IRQ `` variant
163
+ of the Devicetree macros now return the as-seen value in the devicetree instead of the Zephyr
164
+ multilevel-encoded IRQ number. To get the IRQ number in Zephyr multilevel-encoded format, use
165
+ ``IRQN `` variant instead. For example, consider the following devicetree:
161
166
162
167
.. code-block :: devicetree
163
168
164
- &i2c {
165
- status = "okay" ;
166
- pcf8574: pcf857x@20 {
167
- compatible = "nxp,pcf857x" ;
168
- status = "okay" ;
169
- reg = <0x20> ;
170
- gpio-controller ;
171
- #gpio -cells = <2 >;
172
- ngpios = <8 >;
173
- };
169
+ plic: interrupt-controller@c000000 {
170
+ riscv,max-priority = <7> ;
171
+ riscv,ndev = <1024>;
172
+ reg = <0x0c000000 0x04000000> ;
173
+ interrupts-extended = <&hlic0 11> ;
174
+ interrupt-controller ;
175
+ compatible = "sifive,plic-1.0.0" ;
176
+ #address -cells = <0x0 >;
177
+ #interrupt-cells = <0x2 >;
178
+ };
174
179
175
- pcf8575: pcf857x@21 {
176
- compatible = "nxp,pcf857x";
177
- status = "okay";
178
- reg = <0x21>;
179
- gpio-controller;
180
- #gpio-cells = <2>;
181
- ngpios = <16>;
182
- };
180
+ uart0: uart@10000000 {
181
+ interrupts = <10 1>;
182
+ interrupt-parent = <&plic>;
183
+ clock-frequency = <0x384000>;
184
+ reg = <0x10000000 0x100>;
185
+ compatible = "ns16550";
186
+ reg-shift = <0>;
183
187
};
184
188
185
- * The :dtcompatible: `st,lsm6dsv16x ` sensor driver has been changed to support
186
- configuration of both int1 and int2 pins. The DT attribute ``irq-gpios `` has been
187
- removed and substituted by two new attributes, ``int1-gpios `` and ``int2-gpios ``.
188
- These attributes must be configured in the Device Tree similarly to the following
189
- example:
189
+ ``plic `` is a second level interrupt aggregator and ``uart0 `` is a child of ``plic ``.
190
+ ``DT_IRQ_BY_IDX(DT_NODELABEL(uart0), 0, irq) `` will return ``10 ``
191
+ (as-seen value in the devicetree), while ``DT_IRQN_BY_IDX(DT_NODELABEL(uart0), 0) `` will return
192
+ ``(((10 + 1) << CONFIG_1ST_LEVEL_INTERRUPT_BITS) | 11) ``.
190
193
191
- .. code-block :: devicetree
194
+ Drivers and applications that are supposed to work in multilevel-interrupt configurations should
195
+ be updated to use the ``IRQN `` variant, i.e.:
192
196
193
- / {
194
- lsm6dsv16x@0 {
195
- compatible = "st,lsm6dsv16x";
197
+ * ``DT_IRQ(node_id, irq) `` -> ``DT_IRQN(node_id) ``
198
+ * ``DT_IRQ_BY_IDX(node_id, idx, irq) `` -> ``DT_IRQN_BY_IDX(node_id, idx) ``
199
+ * ``DT_IRQ_BY_NAME(node_id, name, irq) `` -> ``DT_IRQN_BY_NAME(node_id, name) ``
200
+ * ``DT_INST_IRQ(inst, irq) `` -> ``DT_INST_IRQN(inst) ``
201
+ * ``DT_INST_IRQ_BY_IDX(inst, idx, irq) `` -> ``DT_INST_IRQN_BY_IDX(inst, idx) ``
202
+ * ``DT_INST_IRQ_BY_NAME(inst, name, irq) `` -> ``DT_INST_IRQN_BY_NAME(inst, name) ``
196
203
197
- int1-gpios = <&gpioa 4 GPIO_ACTIVE_HIGH>;
198
- int2-gpios = <&gpiod 11 GPIO_ACTIVE_HIGH>;
199
- drdy-pin = <2>;
200
- };
201
- };
204
+ Analog-to-Digital Converter (ADC)
205
+ =================================
206
+
207
+ * The io-channel cells of the following devicetree bindings were reduced from 2 (``positive `` and
208
+ ``negative ``) to the common ``input ``, making it possible to use the various ADC DT macros with TI
209
+ LMP90xxx ADC devices:
210
+
211
+ * :dtcompatible: `ti,lmp90077 `
212
+ * :dtcompatible: `ti,lmp90078 `
213
+ * :dtcompatible: `ti,lmp90079 `
214
+ * :dtcompatible: `ti,lmp90080 `
215
+ * :dtcompatible: `ti,lmp90097 `
216
+ * :dtcompatible: `ti,lmp90098 `
217
+ * :dtcompatible: `ti,lmp90099 `
218
+ * :dtcompatible: `ti,lmp90100 `
219
+
220
+ * The io-channel cells of the :dtcompatible: `microchip,mcp3204 ` and
221
+ :dtcompatible: `microchip,mcp3208 ` devicetree bindings were renamed from ``channel `` to the common
222
+ ``input ``, making it possible to use the various ADC DT macros with Microchip MCP320x ADC devices.
223
+
224
+ Bluetooth HCI
225
+ =============
202
226
203
227
* The optional :c:func: `setup() ` function in the Bluetooth HCI driver API (enabled through
204
228
:kconfig:option: `CONFIG_BT_HCI_SETUP `) has gained a function parameter of type
@@ -208,26 +232,11 @@ Device Drivers and Devicetree
208
232
209
233
(:github: `62994 `)
210
234
211
- * The :dtcompatible: `st,stm32-lptim ` lptim which is selected for counting ticks during
212
- low power modes is identified by **stm32_lp_tick_source ** in the device tree as follows.
213
- The stm32_lptim_timer driver has been changed to support this.
214
-
215
- .. code-block :: devicetree
216
-
217
- stm32_lp_tick_source: &lptim1 {
218
- status = "okay";
219
- };
220
-
221
- * The :dtcompatible: `st,stm32-ospi-nor ` and :dtcompatible: `st,stm32-qspi-nor ` give the nor flash
222
- base address and size (in Bytes) with the **reg ** property as follows.
223
- The <size> property is not used anymore.
224
-
225
- .. code-block :: devicetree
235
+ * The :dtcompatible: `st,hci-spi-v1 ` should be used instead of :dtcompatible: `zephyr,bt-hci-spi `
236
+ for the boards which are based on ST BlueNRG-MS.
226
237
227
- mx25lm51245: ospi-nor-flash@70000000 {
228
- compatible = "st,stm32-ospi-nor";
229
- reg = <0x70000000 DT_SIZE_M(64)>; /* 512 Mbits*/
230
- };
238
+ Controller Area Network (CAN)
239
+ =============================
231
240
232
241
* The native Linux SocketCAN driver, which can now be used in both :ref: `native_posix<native_posix> `
233
242
and :ref: `native_sim<native_sim> ` with or without an embedded C-library, has been renamed to
@@ -276,22 +285,8 @@ Device Drivers and Devicetree
276
285
<&rcc STM32_SRC_PLL1_Q FDCAN_SEL(1)>;
277
286
};
278
287
279
- * The io-channel cells of the following devicetree bindings were reduced from 2 (``positive `` and
280
- ``negative ``) to the common ``input ``, making it possible to use the various ADC DT macros with TI
281
- LMP90xxx ADC devices:
282
-
283
- * :dtcompatible: `ti,lmp90077 `
284
- * :dtcompatible: `ti,lmp90078 `
285
- * :dtcompatible: `ti,lmp90079 `
286
- * :dtcompatible: `ti,lmp90080 `
287
- * :dtcompatible: `ti,lmp90097 `
288
- * :dtcompatible: `ti,lmp90098 `
289
- * :dtcompatible: `ti,lmp90099 `
290
- * :dtcompatible: `ti,lmp90100 `
291
-
292
- * The io-channel cells of the :dtcompatible: `microchip,mcp3204 ` and
293
- :dtcompatible: `microchip,mcp3208 ` devicetree bindings were renamed from ``channel `` to the common
294
- ``input ``, making it possible to use the various ADC DT macros with Microchip MCP320x ADC devices.
288
+ Display
289
+ =======
295
290
296
291
* ILI9XXX based displays now use the MIPI DBI driver class. These displays
297
292
must now be declared within a MIPI DBI driver wrapper device, which will
@@ -335,56 +330,72 @@ Device Drivers and Devicetree
335
330
};
336
331
};
337
332
338
- * Touchscreen drivers :dtcompatible: `focaltech,ft5336 ` and
339
- :dtcompatible: `goodix,gt911 ` were using the incorrect polarity for the
340
- respective ``reset-gpios ``. This has been fixed so those signals now have to
341
- be flagged as :c:macro: `GPIO_ACTIVE_LOW ` in the devicetree. (:github: `64800 `)
342
-
343
- * Runtime configuration is now disabled by default for Nordic UART drivers. The motivation for the
344
- change is that this feature is rarely used and disabling it significantly reduces the memory
345
- footprint.
333
+ Flash
334
+ =====
346
335
347
- * For platforms that enabled :kconfig:option: `CONFIG_MULTI_LEVEL_INTERRUPTS `, the ``IRQ `` variant
348
- of the Devicetree macros now return the as-seen value in the devicetree instead of the Zephyr
349
- multilevel-encoded IRQ number. To get the IRQ number in Zephyr multilevel-encoded format, use
350
- ``IRQN `` variant instead. For example, consider the following devicetree:
336
+ * The :dtcompatible: `st,stm32-ospi-nor ` and :dtcompatible: `st,stm32-qspi-nor ` give the nor flash
337
+ base address and size (in Bytes) with the **reg ** property as follows.
338
+ The <size> property is not used anymore.
351
339
352
340
.. code-block :: devicetree
353
341
354
- plic: interrupt-controller@c000000 {
355
- riscv,max-priority = <7>;
356
- riscv,ndev = <1024>;
357
- reg = <0x0c000000 0x04000000>;
358
- interrupts-extended = <&hlic0 11>;
359
- interrupt-controller;
360
- compatible = "sifive,plic-1.0.0";
361
- #address-cells = <0x0>;
362
- #interrupt-cells = <0x2>;
342
+ mx25lm51245: ospi-nor-flash@70000000 {
343
+ compatible = "st,stm32-ospi-nor";
344
+ reg = <0x70000000 DT_SIZE_M(64)>; /* 512 Mbits*/
363
345
};
364
346
365
- uart0: uart@10000000 {
366
- interrupts = <10 1>;
367
- interrupt-parent = <&plic>;
368
- clock-frequency = <0x384000>;
369
- reg = <0x10000000 0x100>;
370
- compatible = "ns16550";
371
- reg-shift = <0>;
347
+ General Purpose I/O (GPIO)
348
+ ==========================
349
+
350
+ * The :dtcompatible: `nxp,pcf8574 ` driver has been renamed to
351
+ :dtcompatible: `nxp,pcf857x `. (:github: `67054 `) to support pcf8574 and pcf8575.
352
+ The Kconfig option has been renamed from :kconfig:option: `CONFIG_GPIO_PCF8574 ` to
353
+ :kconfig:option: `CONFIG_GPIO_PCF857X `.
354
+ The Device Tree can be configured as follows:
355
+
356
+ .. code-block :: devicetree
357
+
358
+ &i2c {
359
+ status = "okay";
360
+ pcf8574: pcf857x@20 {
361
+ compatible = "nxp,pcf857x";
362
+ status = "okay";
363
+ reg = <0x20>;
364
+ gpio-controller;
365
+ #gpio-cells = <2>;
366
+ ngpios = <8>;
367
+ };
368
+
369
+ pcf8575: pcf857x@21 {
370
+ compatible = "nxp,pcf857x";
371
+ status = "okay";
372
+ reg = <0x21>;
373
+ gpio-controller;
374
+ #gpio-cells = <2>;
375
+ ngpios = <16>;
376
+ };
372
377
};
373
378
374
- ``plic `` is a second level interrupt aggregator and ``uart0 `` is a child of ``plic ``.
375
- ``DT_IRQ_BY_IDX(DT_NODELABEL(uart0), 0, irq) `` will return ``10 ``
376
- (as-seen value in the devicetree), while ``DT_IRQN_BY_IDX(DT_NODELABEL(uart0), 0) `` will return
377
- ``(((10 + 1) << CONFIG_1ST_LEVEL_INTERRUPT_BITS) | 11) ``.
379
+ Input
380
+ =====
378
381
379
- Drivers and applications that are supposed to work in multilevel-interrupt configurations should
380
- be updated to use the ``IRQN `` variant, i.e.:
382
+ * Touchscreen drivers :dtcompatible: `focaltech,ft5336 ` and
383
+ :dtcompatible: `goodix,gt911 ` were using the incorrect polarity for the
384
+ respective ``reset-gpios ``. This has been fixed so those signals now have to
385
+ be flagged as :c:macro: `GPIO_ACTIVE_LOW ` in the devicetree. (:github: `64800 `)
381
386
382
- * ``DT_IRQ(node_id, irq) `` -> ``DT_IRQN(node_id) ``
383
- * ``DT_IRQ_BY_IDX(node_id, idx, irq) `` -> ``DT_IRQN_BY_IDX(node_id, idx) ``
384
- * ``DT_IRQ_BY_NAME(node_id, name, irq) `` -> ``DT_IRQN_BY_NAME(node_id, name) ``
385
- * ``DT_INST_IRQ(inst, irq) `` -> ``DT_INST_IRQN(inst) ``
386
- * ``DT_INST_IRQ_BY_IDX(inst, idx, irq) `` -> ``DT_INST_IRQN_BY_IDX(inst, idx) ``
387
- * ``DT_INST_IRQ_BY_NAME(inst, name, irq) `` -> ``DT_INST_IRQN_BY_NAME(inst, name) ``
387
+ Interrupt Controller
388
+ ====================
389
+
390
+ * The function signature of the ``isr_t `` callback function passed to the ``shared_irq ``
391
+ interrupt controller driver API via :c:func: `shared_irq_isr_register() ` has changed.
392
+ The callback now takes an additional `irq_number ` parameter. Out-of-tree users of
393
+ this API will need to be updated.
394
+
395
+ (:github: `66427 `)
396
+
397
+ Renesas RA Series Drivers
398
+ =========================
388
399
389
400
* Several Renesas RA series drivers Kconfig options have been renamed:
390
401
@@ -393,15 +404,46 @@ Device Drivers and Devicetree
393
404
* ``CONFIG_PINCTRL_RA `` -> :kconfig:option: `CONFIG_PINCTRL_RENESAS_RA `
394
405
* ``CONFIG_UART_RA `` -> :kconfig:option: `CONFIG_UART_RENESAS_RA `
395
406
396
- * The function signature of the ``isr_t `` callback function passed to the ``shared_irq ``
397
- interrupt controller driver API via :c:func: `shared_irq_isr_register() ` has changed.
398
- The callback now takes an additional `irq_number ` parameter. Out-of-tree users of
399
- this API will need to be updated.
407
+ Sensors
408
+ =======
400
409
401
- (:github: `66427 `)
410
+ * The :dtcompatible: `st,lsm6dsv16x ` sensor driver has been changed to support
411
+ configuration of both int1 and int2 pins. The DT attribute ``irq-gpios `` has been
412
+ removed and substituted by two new attributes, ``int1-gpios `` and ``int2-gpios ``.
413
+ These attributes must be configured in the Device Tree similarly to the following
414
+ example:
402
415
403
- * The :dtcompatible: `st,hci-spi-v1 ` should be used instead of :dtcompatible: `zephyr,bt-hci-spi `
404
- for the boards which are based on ST BlueNRG-MS.
416
+ .. code-block :: devicetree
417
+
418
+ / {
419
+ lsm6dsv16x@0 {
420
+ compatible = "st,lsm6dsv16x";
421
+
422
+ int1-gpios = <&gpioa 4 GPIO_ACTIVE_HIGH>;
423
+ int2-gpios = <&gpiod 11 GPIO_ACTIVE_HIGH>;
424
+ drdy-pin = <2>;
425
+ };
426
+ };
427
+
428
+ Serial
429
+ ======
430
+
431
+ * Runtime configuration is now disabled by default for Nordic UART drivers. The motivation for the
432
+ change is that this feature is rarely used and disabling it significantly reduces the memory
433
+ footprint.
434
+
435
+ Timer
436
+ =====
437
+
438
+ * The :dtcompatible: `st,stm32-lptim ` lptim which is selected for counting ticks during
439
+ low power modes is identified by **stm32_lp_tick_source ** in the device tree as follows.
440
+ The stm32_lptim_timer driver has been changed to support this.
441
+
442
+ .. code-block :: devicetree
443
+
444
+ stm32_lp_tick_source: &lptim1 {
445
+ status = "okay";
446
+ };
405
447
406
448
Bluetooth
407
449
*********
0 commit comments