Skip to content

Commit abc7326

Browse files
kwillis01cshilwant
authored andcommitted
style(pm_wakeup_sources): Reword Main I/O Daisy Chain section
Reword the Main I/O Daisy Chain section to remove passive language. Signed-off-by: Kendall Willis <[email protected]>
1 parent 07aaf1d commit abc7326

File tree

1 file changed

+33
-28
lines changed

1 file changed

+33
-28
lines changed

source/linux/Foundational_Components/Power_Management/pm_wakeup_sources.rst

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -495,19 +495,22 @@ WKUP GPIO
495495
Main I/O Daisy Chain
496496
********************
497497

498-
The main domain is powered-off when the SoC enters low power mode. This includes controllers like
499-
Main UART, GPIO, I2C, etc. The question then arises how to wakeup the SoC from peripherals connected
500-
to these controllers (for example main UART)? Here's where the role of I/O Daisy Chaining comes in.
501-
At the hardware level, all the pads in an SoC have to be pinmuxed to dedicated controllers like UART or GPIO.
502-
503-
For example, if a key press on Main UART (which is used for Linux console logs)
504-
were to wakeup the system from Deep Sleep then simply configuring the Main UART controller as a
505-
wakeup source wouldn't suffice. This is because the UART controller is powered off and wouldn't be able to
506-
register any key press as such. However, at the "pad" level we are still connected, and the pads have
507-
a specific way to be configured as wakeup sources.
508-
509-
For detailed information and sequence please refer to
510-
I/O Power Management and Daisy Chaining section in the TRM.
498+
The system powers off the main domain when the SoC enters a low power mode. The
499+
main domain includes controllers such as Main UART, GPIO, I2C, etc. I/O daisy
500+
chaining is used in order to wakeup the SoC from peripherals that are connected
501+
to powered-off controllers. At the hardware level, all the pads in an SoC are
502+
pinmuxed to dedicated controllers like UART or GPIO.
503+
504+
For example, to wakeup the system from Deep Sleep via a key press on Main UART
505+
(used for Linux console logs), then simply configuring the Main UART
506+
controller as a wakeup source wouldn't work. This is because the UART
507+
controller is powered off and wouldn't be able to register any key press as
508+
a wakeup event. However, the UART is still connected at the "pad" level and the
509+
pads can be configured as wakeup sources by setting a specific bit in the pad
510+
register.
511+
512+
For detailed information and sequence please refer to I/O Power Management and
513+
Daisy Chaining section in the TRM.
511514

512515
.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX')
513516

@@ -713,9 +716,9 @@ Main GPIO
713716
=========
714717

715718
Configuring Main GPIO as an I/O daisy chain wakeup source requires a
716-
combination of gpio-keys with chained IRQ in the pinctrl driver. To briefly
717-
explain, setting the 29th bit in the desired padconfig register, allows the
718-
pad to act as a wakeup source by triggering a wake IRQ in Deep Sleep states.
719+
combination of gpio-keys with a chained IRQ in the pinctrl driver. Setting the
720+
29th bit in the desired padconfig register, allows the pad to act as a wakeup
721+
source by triggering a wake IRQ in Deep Sleep states.
719722

720723
.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62AX', 'AM62PX')
721724

@@ -739,17 +742,18 @@ pad to act as a wakeup source by triggering a wake IRQ in Deep Sleep states.
739742
};
740743
};
741744
742-
Here, we chain the IRQ to the pinctrl driver using the second
743-
interrupts-extended entry. The wake IRQ framework in Linux works in such a
744-
way that the second entry gets marked as a wakeup source, and then the
745-
pinctrl driver is informed that the pad 0x1a0 in this case is to be
746-
configured as a wakeup pad when system enters Deep Sleep.
745+
The IRQ is chained to the pinctrl driver using the second
746+
interrupts-extended entry. The wake IRQ framework in Linux works so that the
747+
second entry gets marked as a wakeup source, and then the pinctrl driver is
748+
informed that the pad, 0x1a0 in this case, is to be configured as a wakeup
749+
pad when system enters Deep Sleep.
747750

748751
Main GPIO wakeup can only be tested when
749752
`k3-am62x-sk-lpm-wkup-sources.dtso <https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am62x-sk-lpm-wkup-sources.dtso?h=11.02.08>`__
750753
overlay is loaded. Please refer to :ref:`How to enable DT overlays<howto_dt_overlays>` for more details.
751754

752-
To use main_gpio as a wakeup source, ensure gpio is a wake-irq in /proc/interrupts:
755+
To use main_gpio as a wakeup source, ensure gpio is a wake-irq in
756+
:file:`/proc/interrupts`:
753757

754758
.. code-block:: console
755759
@@ -782,13 +786,14 @@ pad to act as a wakeup source by triggering a wake IRQ in Deep Sleep states.
782786
};
783787
};
784788
785-
Here, we chain the IRQ to the pinctrl driver using the second
786-
interrupts-extended entry. The wake IRQ framework in Linux works in such a
787-
way that the second entry gets marked as a wakeup source, and then the
788-
pinctrl driver is informed that the pad 0x1ac in this case is to be
789-
configured as a wakeup pad when system enters Deep Sleep.
789+
The IRQ is chained to the pinctrl driver using the second
790+
interrupts-extended entry. The wake IRQ framework in Linux works so that the
791+
second entry gets marked as a wakeup source, and then the pinctrl driver is
792+
informed that the pad, 0x1ac in this case, is to be configured as a wakeup
793+
pad when system enters Deep Sleep.
790794

791-
To use main_gpio as a wakeup source, ensure gpio is a wake-irq in /proc/interrupts:
795+
To use main_gpio as a wakeup source, ensure gpio is a wake-irq in
796+
:file:`/proc/interrupts`:
792797

793798
.. code-block:: console
794799

0 commit comments

Comments
 (0)