Skip to content

Commit 664b8d4

Browse files
henrikbrixandersenMaureenHelm
authored andcommitted
docs: release: migration guide: 3.6.0: reorganize driver/dts section
Divide the "Device Drivers and Devicetree" section into subsections for the various driver classes. Signed-off-by: Henrik Brix Andersen <[email protected]>
1 parent 94672ac commit 664b8d4

File tree

1 file changed

+161
-119
lines changed

1 file changed

+161
-119
lines changed

doc/releases/migration-guide-3.6.rst

Lines changed: 161 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,9 @@ zcbor
107107
Device 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

Comments
 (0)