@@ -107,6 +107,9 @@ zcbor
107107Device Drivers and Devicetree
108108*****************************
109109
110+ Devicetree Labels
111+ =================
112+
110113* Various deprecated macros related to the deprecated devicetree label property
111114 were removed. These are listed in the following table. The table also
112115 provides replacements.
@@ -153,52 +156,73 @@ Device Drivers and Devicetree
153156 * - ``DT_INST_BUS_LABEL(inst) ``
154157 - ``DT_PROP(DT_BUS(DT_DRV_INST(inst)), label) ``
155158
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:
161166
162167 .. code-block :: devicetree
163168
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+ };
174179
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>;
183187 };
184188
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) ``.
190193
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.:
192196
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) ``
196203
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+ =============
202226
203227* The optional :c:func: `setup() ` function in the Bluetooth HCI driver API (enabled through
204228 :kconfig:option: `CONFIG_BT_HCI_SETUP `) has gained a function parameter of type
@@ -208,26 +232,11 @@ Device Drivers and Devicetree
208232
209233 (:github: `62994 `)
210234
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.
226237
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+ =============================
231240
232241* The native Linux SocketCAN driver, which can now be used in both :ref: `native_posix<native_posix> `
233242 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
276285 <&rcc STM32_SRC_PLL1_Q FDCAN_SEL(1)>;
277286 };
278287
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+ =======
295290
296291* ILI9XXX based displays now use the MIPI DBI driver class. These displays
297292 must now be declared within a MIPI DBI driver wrapper device, which will
@@ -335,56 +330,72 @@ Device Drivers and Devicetree
335330 };
336331 };
337332
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+ =====
346335
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.
351339
352340 .. code-block :: devicetree
353341
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*/
363345 };
364346
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+ };
372377 };
373378
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+ =====
378381
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 `)
381386
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+ =========================
388399
389400* Several Renesas RA series drivers Kconfig options have been renamed:
390401
@@ -393,15 +404,46 @@ Device Drivers and Devicetree
393404 * ``CONFIG_PINCTRL_RA `` -> :kconfig:option: `CONFIG_PINCTRL_RENESAS_RA `
394405 * ``CONFIG_UART_RA `` -> :kconfig:option: `CONFIG_UART_RENESAS_RA `
395406
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+ =======
400409
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:
402415
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+ };
405447
406448 Bluetooth
407449*********
0 commit comments