]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
soc/tegra: pmc: Add comments clarifying wake events
authorThierry Reding <treding@nvidia.com>
Tue, 4 Jun 2019 15:41:15 +0000 (17:41 +0200)
committerThierry Reding <treding@nvidia.com>
Wed, 5 Jun 2019 07:53:04 +0000 (09:53 +0200)
Add some comments to clarify the purpose of the wake event support
implemented in the PMC driver.

Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/soc/tegra/pmc.c

index 6e66b5e293bea97fc1278a771ce47c8272cfd9e1..af8f63a844cd989ef3097afb51c4e9057ebfeeb5 100644 (file)
@@ -241,6 +241,11 @@ struct tegra_pmc_soc {
        const char * const *reset_levels;
        unsigned int num_reset_levels;
 
+       /*
+        * These describe events that can wake the system from sleep (i.e.
+        * LP0 or SC7). Wakeup from other sleep states (such as LP1 or LP2)
+        * are dealt with in the LIC.
+        */
        const struct tegra_wake_event *wake_events;
        unsigned int num_wake_events;
 };
@@ -1906,6 +1911,11 @@ static int tegra_pmc_irq_alloc(struct irq_domain *domain, unsigned int virq,
                }
        }
 
+       /*
+        * For interrupts that don't have associated wake events, assign a
+        * dummy hardware IRQ number. This is used in the ->irq_set_type()
+        * and ->irq_set_wake() callbacks to return early for these IRQs.
+        */
        if (i == soc->num_wake_events)
                err = irq_domain_set_hwirq_and_chip(domain, virq, ULONG_MAX,
                                                    &pmc->irq, pmc);
@@ -1924,6 +1934,7 @@ static int tegra_pmc_irq_set_wake(struct irq_data *data, unsigned int on)
        unsigned int offset, bit;
        u32 value;
 
+       /* nothing to do if there's no associated wake event */
        if (WARN_ON(data->hwirq == ULONG_MAX))
                return 0;
 
@@ -1954,6 +1965,7 @@ static int tegra_pmc_irq_set_type(struct irq_data *data, unsigned int type)
        struct tegra_pmc *pmc = irq_data_get_irq_chip_data(data);
        u32 value;
 
+       /* nothing to do if there's no associated wake event */
        if (data->hwirq == ULONG_MAX)
                return 0;