@@ -495,19 +495,22 @@ WKUP GPIO
495495Main 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
715718Configuring 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