diff for duplicates of <871v7idx6m.fsf@deeprootsystems.com> diff --git a/a/1.txt b/N1/1.txt index 6882e68..6089ca7 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -18,224 +18,220 @@ Kevin >> >> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com> >> --- ->> arch/arm/mach-omap2/pm24xx.c | 9 +--- ->> arch/arm/mach-omap2/pm34xx.c | 8 --- ->> arch/arm/mach-omap2/serial.c | 71 +++++++++++++++++++---------- ->> arch/arm/plat-omap/include/plat/serial.h | 2 - ->> 4 files changed, 47 insertions(+), 43 deletions(-) +>> ?arch/arm/mach-omap2/pm24xx.c ? ? ? ? ? ? | ? ?9 +--- +>> ?arch/arm/mach-omap2/pm34xx.c ? ? ? ? ? ? | ? ?8 --- +>> ?arch/arm/mach-omap2/serial.c ? ? ? ? ? ? | ? 71 +++++++++++++++++++---------- +>> ?arch/arm/plat-omap/include/plat/serial.h | ? ?2 - +>> ?4 files changed, 47 insertions(+), 43 deletions(-) >> >> diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c >> index cb1b333..47644d2 100644 >> --- a/arch/arm/mach-omap2/pm24xx.c >> +++ b/arch/arm/mach-omap2/pm24xx.c >> @@ -40,6 +40,7 @@ ->> #include <plat/sram.h> ->> #include <plat/dma.h> ->> #include <plat/board.h> +>> ?#include <plat/sram.h> +>> ?#include <plat/dma.h> +>> ?#include <plat/board.h> >> +#include <plat/common.h> >> ->> #include "prm.h" ->> #include "prm-regbits-24xx.h" +>> ?#include "prm.h" +>> ?#include "prm-regbits-24xx.h" >> @@ -120,19 +121,11 @@ static void omap2_enter_full_retention(void) ->> if (omap_irq_pending()) ->> goto no_sleep; +>> ? ? ? ?if (omap_irq_pending()) +>> ? ? ? ? ? ? ? ?goto no_sleep; >> ->> - omap_uart_prepare_idle(0); ->> - omap_uart_prepare_idle(1); ->> - omap_uart_prepare_idle(2); +>> - ? ? ? omap_uart_prepare_idle(0); +>> - ? ? ? omap_uart_prepare_idle(1); +>> - ? ? ? omap_uart_prepare_idle(2); >> - ->> /* Jump to SRAM suspend code */ ->> omap2_sram_suspend(sdrc_read_reg(SDRC_DLLA_CTRL), ->> OMAP_SDRC_REGADDR(SDRC_DLLA_CTRL), ->> OMAP_SDRC_REGADDR(SDRC_POWER)); ->> ->> - omap_uart_resume_idle(2); ->> - omap_uart_resume_idle(1); ->> - omap_uart_resume_idle(0); +>> ? ? ? ?/* Jump to SRAM suspend code */ +>> ? ? ? ?omap2_sram_suspend(sdrc_read_reg(SDRC_DLLA_CTRL), +>> ? ? ? ? ? ? ? ? ? ? ? ? ? OMAP_SDRC_REGADDR(SDRC_DLLA_CTRL), +>> ? ? ? ? ? ? ? ? ? ? ? ? ? OMAP_SDRC_REGADDR(SDRC_POWER)); +>> +>> - ? ? ? omap_uart_resume_idle(2); +>> - ? ? ? omap_uart_resume_idle(1); +>> - ? ? ? omap_uart_resume_idle(0); >> - ->> no_sleep: ->> if (omap2_pm_debug) { ->> unsigned long long tmp; +>> ?no_sleep: +>> ? ? ? ?if (omap2_pm_debug) { +>> ? ? ? ? ? ? ? ?unsigned long long tmp; >> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c >> index 4674748..eaed95d 100644 >> --- a/arch/arm/mach-omap2/pm34xx.c >> +++ b/arch/arm/mach-omap2/pm34xx.c >> @@ -390,8 +390,6 @@ void omap_sram_idle(void) >> ->> /* PER */ ->> if (per_next_state < PWRDM_POWER_ON) { ->> - omap_uart_prepare_idle(2); ->> - omap_uart_prepare_idle(3); ->> omap2_gpio_prepare_for_idle(per_next_state); ->> if (per_next_state == PWRDM_POWER_OFF) ->> omap3_per_save_context(); +>> ? ? ? ?/* PER */ +>> ? ? ? ?if (per_next_state < PWRDM_POWER_ON) { +>> - ? ? ? ? ? ? ? omap_uart_prepare_idle(2); +>> - ? ? ? ? ? ? ? omap_uart_prepare_idle(3); +>> ? ? ? ? ? ? ? ?omap2_gpio_prepare_for_idle(per_next_state); +>> ? ? ? ? ? ? ? ?if (per_next_state == PWRDM_POWER_OFF) +>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?omap3_per_save_context(); >> @@ -399,8 +397,6 @@ void omap_sram_idle(void) >> ->> /* CORE */ ->> if (core_next_state < PWRDM_POWER_ON) { ->> - omap_uart_prepare_idle(0); ->> - omap_uart_prepare_idle(1); ->> if (core_next_state == PWRDM_POWER_OFF) { ->> omap3_core_save_context(); ->> omap3_prcm_save_context(); +>> ? ? ? ?/* CORE */ +>> ? ? ? ?if (core_next_state < PWRDM_POWER_ON) { +>> - ? ? ? ? ? ? ? omap_uart_prepare_idle(0); +>> - ? ? ? ? ? ? ? omap_uart_prepare_idle(1); +>> ? ? ? ? ? ? ? ?if (core_next_state == PWRDM_POWER_OFF) { +>> ? ? ? ? ? ? ? ? ? ? ? ?omap3_core_save_context(); +>> ? ? ? ? ? ? ? ? ? ? ? ?omap3_prcm_save_context(); >> @@ -445,8 +441,6 @@ void omap_sram_idle(void) ->> omap3_sram_restore_context(); ->> omap2_sms_restore_context(); ->> } ->> - omap_uart_resume_idle(0); ->> - omap_uart_resume_idle(1); ->> if (core_next_state == PWRDM_POWER_OFF) ->> prm_clear_mod_reg_bits(OMAP3430_AUTO_OFF_MASK, ->> OMAP3430_GR_MOD, +>> ? ? ? ? ? ? ? ? ? ? ? ?omap3_sram_restore_context(); +>> ? ? ? ? ? ? ? ? ? ? ? ?omap2_sms_restore_context(); +>> ? ? ? ? ? ? ? ?} +>> - ? ? ? ? ? ? ? omap_uart_resume_idle(0); +>> - ? ? ? ? ? ? ? omap_uart_resume_idle(1); +>> ? ? ? ? ? ? ? ?if (core_next_state == PWRDM_POWER_OFF) +>> ? ? ? ? ? ? ? ? ? ? ? ?prm_clear_mod_reg_bits(OMAP3430_AUTO_OFF_MASK, +>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? OMAP3430_GR_MOD, >> @@ -459,8 +453,6 @@ void omap_sram_idle(void) ->> omap2_gpio_resume_after_idle(); ->> if (per_prev_state == PWRDM_POWER_OFF) ->> omap3_per_restore_context(); ->> - omap_uart_resume_idle(2); ->> - omap_uart_resume_idle(3); ->> } ->> ->> /* Disable IO-PAD and IO-CHAIN wakeup */ +>> ? ? ? ? ? ? ? ?omap2_gpio_resume_after_idle(); +>> ? ? ? ? ? ? ? ?if (per_prev_state == PWRDM_POWER_OFF) +>> ? ? ? ? ? ? ? ? ? ? ? ?omap3_per_restore_context(); +>> - ? ? ? ? ? ? ? omap_uart_resume_idle(2); +>> - ? ? ? ? ? ? ? omap_uart_resume_idle(3); +>> ? ? ? ?} +>> +>> ? ? ? ?/* Disable IO-PAD and IO-CHAIN wakeup */ >> diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c >> index becf0e3..8a619ff 100644 >> --- a/arch/arm/mach-omap2/serial.c >> +++ b/arch/arm/mach-omap2/serial.c >> @@ -73,6 +73,7 @@ struct omap_uart_state { ->> u32 padconf; ->> u32 dma_enabled; +>> ? ? ? ?u32 padconf; +>> ? ? ? ?u32 dma_enabled; >> ->> + struct powerdomain *pwrdm; ->> struct clk *ick; ->> struct clk *fck; ->> int clocked; +>> + ? ? ? struct powerdomain *pwrdm; +>> ? ? ? ?struct clk *ick; +>> ? ? ? ?struct clk *fck; +>> ? ? ? ?int clocked; >> @@ -389,39 +390,31 @@ static void omap_uart_idle_timer(unsigned long data) ->> omap_uart_allow_sleep(uart); ->> } +>> ? ? ? ?omap_uart_allow_sleep(uart); +>> ?} >> >> -void omap_uart_prepare_idle(int num) >> +static void omap_uart_prepare_idle(struct omap_uart_state *uart) ->> { ->> - struct omap_uart_state *uart; +>> ?{ +>> - ? ? ? struct omap_uart_state *uart; >> - ->> - list_for_each_entry(uart, &uart_list, node) { ->> - if (num == uart->num && uart->can_sleep) { ->> - omap_uart_disable_clocks(uart); ->> - return; ->> - } ->> - } ->> + if (uart->can_sleep && ->> + pwrdm_read_next_pwrst(uart->pwrdm) < PWRDM_POWER_ON) ->> + omap_uart_disable_clocks(uart); ->> } +>> - ? ? ? list_for_each_entry(uart, &uart_list, node) { +>> - ? ? ? ? ? ? ? if (num == uart->num && uart->can_sleep) { +>> - ? ? ? ? ? ? ? ? ? ? ? omap_uart_disable_clocks(uart); +>> - ? ? ? ? ? ? ? ? ? ? ? return; +>> - ? ? ? ? ? ? ? } +>> - ? ? ? } +>> + ? ? ? if (uart->can_sleep && +>> + ? ? ? ? ? pwrdm_read_next_pwrst(uart->pwrdm) < PWRDM_POWER_ON) +>> + ? ? ? ? ? ? ? omap_uart_disable_clocks(uart); +>> ?} >> >> -void omap_uart_resume_idle(int num) >> +static void omap_uart_resume_idle(struct omap_uart_state *uart) ->> { ->> - struct omap_uart_state *uart; ->> + if (uart->can_sleep && ->> + pwrdm_read_next_pwrst(uart->pwrdm) < PWRDM_POWER_ON) { ->> + omap_uart_enable_clocks(uart); ->> ->> - list_for_each_entry(uart, &uart_list, node) { ->> - if (num == uart->num) { ->> - omap_uart_enable_clocks(uart); +>> ?{ +>> - ? ? ? struct omap_uart_state *uart; +>> + ? ? ? if (uart->can_sleep && +>> + ? ? ? ? ? pwrdm_read_next_pwrst(uart->pwrdm) < PWRDM_POWER_ON) { +>> + ? ? ? ? ? ? ? omap_uart_enable_clocks(uart); +>> +>> - ? ? ? list_for_each_entry(uart, &uart_list, node) { +>> - ? ? ? ? ? ? ? if (num == uart->num) { +>> - ? ? ? ? ? ? ? ? ? ? ? omap_uart_enable_clocks(uart); >> - ->> - /* Check for IO pad wakeup */ ->> - if (cpu_is_omap34xx() && uart->padconf) { ->> - u16 p = omap_ctrl_readw(uart->padconf); +>> - ? ? ? ? ? ? ? ? ? ? ? /* Check for IO pad wakeup */ +>> - ? ? ? ? ? ? ? ? ? ? ? if (cpu_is_omap34xx() && uart->padconf) { +>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? u16 p = omap_ctrl_readw(uart->padconf); >> - ->> - if (p & OMAP3_PADCONF_WAKEUPEVENT0) ->> - omap_uart_block_sleep(uart); ->> - } ->> + /* Check for IO pad wakeup */ ->> + if (cpu_is_omap34xx() && uart->padconf) { ->> + u16 p = omap_ctrl_readw(uart->padconf); ->> ->> - /* Check for normal UART wakeup */ ->> - if (__raw_readl(uart->wk_st) & uart->wk_mask) ->> + if (p & OMAP3_PADCONF_WAKEUPEVENT0) ->> omap_uart_block_sleep(uart); ->> - return; ->> } +>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (p & OMAP3_PADCONF_WAKEUPEVENT0) +>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? omap_uart_block_sleep(uart); +>> - ? ? ? ? ? ? ? ? ? ? ? } +>> + ? ? ? ? ? ? ? /* Check for IO pad wakeup */ +>> + ? ? ? ? ? ? ? if (cpu_is_omap34xx() && uart->padconf) { +>> + ? ? ? ? ? ? ? ? ? ? ? u16 p = omap_ctrl_readw(uart->padconf); +>> +>> - ? ? ? ? ? ? ? ? ? ? ? /* Check for normal UART wakeup */ +>> - ? ? ? ? ? ? ? ? ? ? ? if (__raw_readl(uart->wk_st) & uart->wk_mask) +>> + ? ? ? ? ? ? ? ? ? ? ? if (p & OMAP3_PADCONF_WAKEUPEVENT0) +>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?omap_uart_block_sleep(uart); +>> - ? ? ? ? ? ? ? ? ? ? ? return; +>> ? ? ? ? ? ? ? ?} >> + ->> + /* Check for normal UART wakeup */ ->> + if (__raw_readl(uart->wk_st) & uart->wk_mask) ->> + omap_uart_block_sleep(uart); ->> + return; ->> } ->> } +>> + ? ? ? ? ? ? ? /* Check for normal UART wakeup */ +>> + ? ? ? ? ? ? ? if (__raw_readl(uart->wk_st) & uart->wk_mask) +>> + ? ? ? ? ? ? ? ? ? ? ? omap_uart_block_sleep(uart); +>> + ? ? ? ? ? ? ? return; +>> ? ? ? ?} +>> ?} >> >> @@ -474,6 +467,27 @@ static irqreturn_t omap_uart_interrupt(int irq, void *dev_id) ->> return IRQ_NONE; ->> } +>> ? ? ? ?return IRQ_NONE; +>> ?} >> >> +static int omap_uart_idle_notifier(struct notifier_block *n, ->> + unsigned long val, ->> + void *p) +>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?unsigned long val, +>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?void *p) >> +{ ->> + struct omap_uart_state *uart; +>> + ? ? ? struct omap_uart_state *uart; >> + ->> + if (val == OMAP_IDLE_START) ->> + list_for_each_entry(uart, &uart_list, node) ->> + omap_uart_prepare_idle(uart); ->> + else ->> + list_for_each_entry(uart, &uart_list, node) ->> + omap_uart_resume_idle(uart); +>> + ? ? ? if (val == OMAP_IDLE_START) +>> + ? ? ? ? ? ? ? list_for_each_entry(uart, &uart_list, node) +>> + ? ? ? ? ? ? ? ? ? ? ? omap_uart_prepare_idle(uart); +>> + ? ? ? else +>> + ? ? ? ? ? ? ? list_for_each_entry(uart, &uart_list, node) +>> + ? ? ? ? ? ? ? ? ? ? ? omap_uart_resume_idle(uart); >> + ->> + return 0; +>> + ? ? ? return 0; >> +} >> + >> +static bool omap_uart_notifier_enabled; >> +static struct notifier_block omap_uart_notifier = { ->> + .notifier_call = omap_uart_idle_notifier, +>> + ? ? ? .notifier_call = omap_uart_idle_notifier, >> +}; >> + ->> static void omap_uart_idle_init(struct omap_uart_state *uart) ->> { ->> int ret; +>> ?static void omap_uart_idle_init(struct omap_uart_state *uart) +>> ?{ +>> ? ? ? ?int ret; >> @@ -549,6 +563,11 @@ static void omap_uart_idle_init(struct omap_uart_state *uart) ->> ret = request_threaded_irq(uart->irq, NULL, omap_uart_interrupt, ->> IRQF_SHARED, "serial idle", (void *)uart); ->> WARN_ON(ret); +>> ? ? ? ?ret = request_threaded_irq(uart->irq, NULL, omap_uart_interrupt, +>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? IRQF_SHARED, "serial idle", (void *)uart); +>> ? ? ? ?WARN_ON(ret); >> + ->> + if (!omap_uart_notifier_enabled) { ->> + omap_idle_notifier_register(&omap_uart_notifier); ->> + omap_uart_notifier_enabled = true; ->> + } ->> } +>> + ? ? ? if (!omap_uart_notifier_enabled) { +>> + ? ? ? ? ? ? ? omap_idle_notifier_register(&omap_uart_notifier); +>> + ? ? ? ? ? ? ? omap_uart_notifier_enabled = true; +>> + ? ? ? } +>> ?} >> ->> void omap_uart_enable_irqs(int enable) +>> ?void omap_uart_enable_irqs(int enable) >> @@ -731,6 +750,8 @@ void __init omap_serial_init_port(int port) ->> break; ->> ->> oh = uart->oh; ->> + uart->pwrdm = omap_hwmod_get_pwrdm(oh); ->> + WARN_ON(!uart->pwrdm); ->> uart->dma_enabled = 0; ->> #ifndef CONFIG_SERIAL_OMAP ->> name = "serial8250"; +>> ? ? ? ? ? ? ? ? ? ? ? ?break; +>> +>> ? ? ? ?oh = uart->oh; +>> + ? ? ? uart->pwrdm = omap_hwmod_get_pwrdm(oh); +>> + ? ? ? WARN_ON(!uart->pwrdm); +>> ? ? ? ?uart->dma_enabled = 0; +>> ?#ifndef CONFIG_SERIAL_OMAP +>> ? ? ? ?name = "serial8250"; >> diff --git a/arch/arm/plat-omap/include/plat/serial.h b/arch/arm/plat-omap/include/plat/serial.h >> index 19145f5..d3ee47b 100644 >> --- a/arch/arm/plat-omap/include/plat/serial.h >> +++ b/arch/arm/plat-omap/include/plat/serial.h >> @@ -99,8 +99,6 @@ extern void omap_serial_init_port(int port); ->> extern int omap_uart_can_sleep(void); ->> extern void omap_uart_check_wakeup(void); ->> extern void omap_uart_prepare_suspend(void); +>> ?extern int omap_uart_can_sleep(void); +>> ?extern void omap_uart_check_wakeup(void); +>> ?extern void omap_uart_prepare_suspend(void); >> -extern void omap_uart_prepare_idle(int num); >> -extern void omap_uart_resume_idle(int num); ->> extern void omap_uart_enable_irqs(int enable); ->> #endif +>> ?extern void omap_uart_enable_irqs(int enable); +>> ?#endif >> >> -- >> 1.7.2.1 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-omap" in ->> the body of a message to majordomo@vger.kernel.org ->> More majordomo info at http://vger.kernel.org/majordomo-info.html +>> the body of a message to majordomo at vger.kernel.org +>> More majordomo info at ?http://vger.kernel.org/majordomo-info.html >> --- -To unsubscribe from this list: send the line "unsubscribe linux-omap" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/a/content_digest b/N1/content_digest index ff4ac2c..2c4e8d7 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,12 +1,10 @@ "ref\01287617483-24170-1-git-send-email-khilman@deeprootsystems.com\0" "ref\01287617483-24170-3-git-send-email-khilman@deeprootsystems.com\0" "ref\0AANLkTinYhNAYpehKEshPz89uqcKy9K9hB2Q+a7N+EveJ@mail.gmail.com\0" - "From\0Kevin Hilman <khilman@deeprootsystems.com>\0" - "Subject\0Re: [PATCH 3/3] OMAP: UART: use atomic idle notifiers\0" + "From\0khilman@deeprootsystems.com (Kevin Hilman)\0" + "Subject\0[PATCH 3/3] OMAP: UART: use atomic idle notifiers\0" "Date\0Fri, 22 Oct 2010 09:11:45 -0700\0" - "To\0Govindraj <govindraj.ti@gmail.com>\0" - "Cc\0linux-omap@vger.kernel.org" - " linux-arm-kernel@lists.infradead.org\0" + "To\0linux-arm-kernel@lists.infradead.org\0" "\00:1\0" "b\0" "Govindraj <govindraj.ti@gmail.com> writes:\n" @@ -29,226 +27,222 @@ ">>\n" ">> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>\n" ">> ---\n" - ">> \302\240arch/arm/mach-omap2/pm24xx.c \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 | \302\240 \302\2409 +---\n" - ">> \302\240arch/arm/mach-omap2/pm34xx.c \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 | \302\240 \302\2408 ---\n" - ">> \302\240arch/arm/mach-omap2/serial.c \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 | \302\240 71 +++++++++++++++++++----------\n" - ">> \302\240arch/arm/plat-omap/include/plat/serial.h | \302\240 \302\2402 -\n" - ">> \302\2404 files changed, 47 insertions(+), 43 deletions(-)\n" + ">> ?arch/arm/mach-omap2/pm24xx.c ? ? ? ? ? ? | ? ?9 +---\n" + ">> ?arch/arm/mach-omap2/pm34xx.c ? ? ? ? ? ? | ? ?8 ---\n" + ">> ?arch/arm/mach-omap2/serial.c ? ? ? ? ? ? | ? 71 +++++++++++++++++++----------\n" + ">> ?arch/arm/plat-omap/include/plat/serial.h | ? ?2 -\n" + ">> ?4 files changed, 47 insertions(+), 43 deletions(-)\n" ">>\n" ">> diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c\n" ">> index cb1b333..47644d2 100644\n" ">> --- a/arch/arm/mach-omap2/pm24xx.c\n" ">> +++ b/arch/arm/mach-omap2/pm24xx.c\n" ">> @@ -40,6 +40,7 @@\n" - ">> \302\240#include <plat/sram.h>\n" - ">> \302\240#include <plat/dma.h>\n" - ">> \302\240#include <plat/board.h>\n" + ">> ?#include <plat/sram.h>\n" + ">> ?#include <plat/dma.h>\n" + ">> ?#include <plat/board.h>\n" ">> +#include <plat/common.h>\n" ">>\n" - ">> \302\240#include \"prm.h\"\n" - ">> \302\240#include \"prm-regbits-24xx.h\"\n" + ">> ?#include \"prm.h\"\n" + ">> ?#include \"prm-regbits-24xx.h\"\n" ">> @@ -120,19 +121,11 @@ static void omap2_enter_full_retention(void)\n" - ">> \302\240 \302\240 \302\240 \302\240if (omap_irq_pending())\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240goto no_sleep;\n" + ">> ? ? ? ?if (omap_irq_pending())\n" + ">> ? ? ? ? ? ? ? ?goto no_sleep;\n" ">>\n" - ">> - \302\240 \302\240 \302\240 omap_uart_prepare_idle(0);\n" - ">> - \302\240 \302\240 \302\240 omap_uart_prepare_idle(1);\n" - ">> - \302\240 \302\240 \302\240 omap_uart_prepare_idle(2);\n" + ">> - ? ? ? omap_uart_prepare_idle(0);\n" + ">> - ? ? ? omap_uart_prepare_idle(1);\n" + ">> - ? ? ? omap_uart_prepare_idle(2);\n" ">> -\n" - ">> \302\240 \302\240 \302\240 \302\240/* Jump to SRAM suspend code */\n" - ">> \302\240 \302\240 \302\240 \302\240omap2_sram_suspend(sdrc_read_reg(SDRC_DLLA_CTRL),\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 OMAP_SDRC_REGADDR(SDRC_DLLA_CTRL),\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 OMAP_SDRC_REGADDR(SDRC_POWER));\n" - ">>\n" - ">> - \302\240 \302\240 \302\240 omap_uart_resume_idle(2);\n" - ">> - \302\240 \302\240 \302\240 omap_uart_resume_idle(1);\n" - ">> - \302\240 \302\240 \302\240 omap_uart_resume_idle(0);\n" + ">> ? ? ? ?/* Jump to SRAM suspend code */\n" + ">> ? ? ? ?omap2_sram_suspend(sdrc_read_reg(SDRC_DLLA_CTRL),\n" + ">> ? ? ? ? ? ? ? ? ? ? ? ? ? OMAP_SDRC_REGADDR(SDRC_DLLA_CTRL),\n" + ">> ? ? ? ? ? ? ? ? ? ? ? ? ? OMAP_SDRC_REGADDR(SDRC_POWER));\n" + ">>\n" + ">> - ? ? ? omap_uart_resume_idle(2);\n" + ">> - ? ? ? omap_uart_resume_idle(1);\n" + ">> - ? ? ? omap_uart_resume_idle(0);\n" ">> -\n" - ">> \302\240no_sleep:\n" - ">> \302\240 \302\240 \302\240 \302\240if (omap2_pm_debug) {\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240unsigned long long tmp;\n" + ">> ?no_sleep:\n" + ">> ? ? ? ?if (omap2_pm_debug) {\n" + ">> ? ? ? ? ? ? ? ?unsigned long long tmp;\n" ">> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c\n" ">> index 4674748..eaed95d 100644\n" ">> --- a/arch/arm/mach-omap2/pm34xx.c\n" ">> +++ b/arch/arm/mach-omap2/pm34xx.c\n" ">> @@ -390,8 +390,6 @@ void omap_sram_idle(void)\n" ">>\n" - ">> \302\240 \302\240 \302\240 \302\240/* PER */\n" - ">> \302\240 \302\240 \302\240 \302\240if (per_next_state < PWRDM_POWER_ON) {\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_uart_prepare_idle(2);\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_uart_prepare_idle(3);\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240omap2_gpio_prepare_for_idle(per_next_state);\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240if (per_next_state == PWRDM_POWER_OFF)\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240omap3_per_save_context();\n" + ">> ? ? ? ?/* PER */\n" + ">> ? ? ? ?if (per_next_state < PWRDM_POWER_ON) {\n" + ">> - ? ? ? ? ? ? ? omap_uart_prepare_idle(2);\n" + ">> - ? ? ? ? ? ? ? omap_uart_prepare_idle(3);\n" + ">> ? ? ? ? ? ? ? ?omap2_gpio_prepare_for_idle(per_next_state);\n" + ">> ? ? ? ? ? ? ? ?if (per_next_state == PWRDM_POWER_OFF)\n" + ">> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?omap3_per_save_context();\n" ">> @@ -399,8 +397,6 @@ void omap_sram_idle(void)\n" ">>\n" - ">> \302\240 \302\240 \302\240 \302\240/* CORE */\n" - ">> \302\240 \302\240 \302\240 \302\240if (core_next_state < PWRDM_POWER_ON) {\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_uart_prepare_idle(0);\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_uart_prepare_idle(1);\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240if (core_next_state == PWRDM_POWER_OFF) {\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240omap3_core_save_context();\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240omap3_prcm_save_context();\n" + ">> ? ? ? ?/* CORE */\n" + ">> ? ? ? ?if (core_next_state < PWRDM_POWER_ON) {\n" + ">> - ? ? ? ? ? ? ? omap_uart_prepare_idle(0);\n" + ">> - ? ? ? ? ? ? ? omap_uart_prepare_idle(1);\n" + ">> ? ? ? ? ? ? ? ?if (core_next_state == PWRDM_POWER_OFF) {\n" + ">> ? ? ? ? ? ? ? ? ? ? ? ?omap3_core_save_context();\n" + ">> ? ? ? ? ? ? ? ? ? ? ? ?omap3_prcm_save_context();\n" ">> @@ -445,8 +441,6 @@ void omap_sram_idle(void)\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240omap3_sram_restore_context();\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240omap2_sms_restore_context();\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240}\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_uart_resume_idle(0);\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_uart_resume_idle(1);\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240if (core_next_state == PWRDM_POWER_OFF)\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240prm_clear_mod_reg_bits(OMAP3430_AUTO_OFF_MASK,\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 OMAP3430_GR_MOD,\n" + ">> ? ? ? ? ? ? ? ? ? ? ? ?omap3_sram_restore_context();\n" + ">> ? ? ? ? ? ? ? ? ? ? ? ?omap2_sms_restore_context();\n" + ">> ? ? ? ? ? ? ? ?}\n" + ">> - ? ? ? ? ? ? ? omap_uart_resume_idle(0);\n" + ">> - ? ? ? ? ? ? ? omap_uart_resume_idle(1);\n" + ">> ? ? ? ? ? ? ? ?if (core_next_state == PWRDM_POWER_OFF)\n" + ">> ? ? ? ? ? ? ? ? ? ? ? ?prm_clear_mod_reg_bits(OMAP3430_AUTO_OFF_MASK,\n" + ">> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? OMAP3430_GR_MOD,\n" ">> @@ -459,8 +453,6 @@ void omap_sram_idle(void)\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240omap2_gpio_resume_after_idle();\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240if (per_prev_state == PWRDM_POWER_OFF)\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240omap3_per_restore_context();\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_uart_resume_idle(2);\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_uart_resume_idle(3);\n" - ">> \302\240 \302\240 \302\240 \302\240}\n" - ">>\n" - ">> \302\240 \302\240 \302\240 \302\240/* Disable IO-PAD and IO-CHAIN wakeup */\n" + ">> ? ? ? ? ? ? ? ?omap2_gpio_resume_after_idle();\n" + ">> ? ? ? ? ? ? ? ?if (per_prev_state == PWRDM_POWER_OFF)\n" + ">> ? ? ? ? ? ? ? ? ? ? ? ?omap3_per_restore_context();\n" + ">> - ? ? ? ? ? ? ? omap_uart_resume_idle(2);\n" + ">> - ? ? ? ? ? ? ? omap_uart_resume_idle(3);\n" + ">> ? ? ? ?}\n" + ">>\n" + ">> ? ? ? ?/* Disable IO-PAD and IO-CHAIN wakeup */\n" ">> diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c\n" ">> index becf0e3..8a619ff 100644\n" ">> --- a/arch/arm/mach-omap2/serial.c\n" ">> +++ b/arch/arm/mach-omap2/serial.c\n" ">> @@ -73,6 +73,7 @@ struct omap_uart_state {\n" - ">> \302\240 \302\240 \302\240 \302\240u32 padconf;\n" - ">> \302\240 \302\240 \302\240 \302\240u32 dma_enabled;\n" + ">> ? ? ? ?u32 padconf;\n" + ">> ? ? ? ?u32 dma_enabled;\n" ">>\n" - ">> + \302\240 \302\240 \302\240 struct powerdomain *pwrdm;\n" - ">> \302\240 \302\240 \302\240 \302\240struct clk *ick;\n" - ">> \302\240 \302\240 \302\240 \302\240struct clk *fck;\n" - ">> \302\240 \302\240 \302\240 \302\240int clocked;\n" + ">> + ? ? ? struct powerdomain *pwrdm;\n" + ">> ? ? ? ?struct clk *ick;\n" + ">> ? ? ? ?struct clk *fck;\n" + ">> ? ? ? ?int clocked;\n" ">> @@ -389,39 +390,31 @@ static void omap_uart_idle_timer(unsigned long data)\n" - ">> \302\240 \302\240 \302\240 \302\240omap_uart_allow_sleep(uart);\n" - ">> \302\240}\n" + ">> ? ? ? ?omap_uart_allow_sleep(uart);\n" + ">> ?}\n" ">>\n" ">> -void omap_uart_prepare_idle(int num)\n" ">> +static void omap_uart_prepare_idle(struct omap_uart_state *uart)\n" - ">> \302\240{\n" - ">> - \302\240 \302\240 \302\240 struct omap_uart_state *uart;\n" + ">> ?{\n" + ">> - ? ? ? struct omap_uart_state *uart;\n" ">> -\n" - ">> - \302\240 \302\240 \302\240 list_for_each_entry(uart, &uart_list, node) {\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 if (num == uart->num && uart->can_sleep) {\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_uart_disable_clocks(uart);\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 return;\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 }\n" - ">> - \302\240 \302\240 \302\240 }\n" - ">> + \302\240 \302\240 \302\240 if (uart->can_sleep &&\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 pwrdm_read_next_pwrst(uart->pwrdm) < PWRDM_POWER_ON)\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_uart_disable_clocks(uart);\n" - ">> \302\240}\n" + ">> - ? ? ? list_for_each_entry(uart, &uart_list, node) {\n" + ">> - ? ? ? ? ? ? ? if (num == uart->num && uart->can_sleep) {\n" + ">> - ? ? ? ? ? ? ? ? ? ? ? omap_uart_disable_clocks(uart);\n" + ">> - ? ? ? ? ? ? ? ? ? ? ? return;\n" + ">> - ? ? ? ? ? ? ? }\n" + ">> - ? ? ? }\n" + ">> + ? ? ? if (uart->can_sleep &&\n" + ">> + ? ? ? ? ? pwrdm_read_next_pwrst(uart->pwrdm) < PWRDM_POWER_ON)\n" + ">> + ? ? ? ? ? ? ? omap_uart_disable_clocks(uart);\n" + ">> ?}\n" ">>\n" ">> -void omap_uart_resume_idle(int num)\n" ">> +static void omap_uart_resume_idle(struct omap_uart_state *uart)\n" - ">> \302\240{\n" - ">> - \302\240 \302\240 \302\240 struct omap_uart_state *uart;\n" - ">> + \302\240 \302\240 \302\240 if (uart->can_sleep &&\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 pwrdm_read_next_pwrst(uart->pwrdm) < PWRDM_POWER_ON) {\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_uart_enable_clocks(uart);\n" - ">>\n" - ">> - \302\240 \302\240 \302\240 list_for_each_entry(uart, &uart_list, node) {\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 if (num == uart->num) {\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_uart_enable_clocks(uart);\n" + ">> ?{\n" + ">> - ? ? ? struct omap_uart_state *uart;\n" + ">> + ? ? ? if (uart->can_sleep &&\n" + ">> + ? ? ? ? ? pwrdm_read_next_pwrst(uart->pwrdm) < PWRDM_POWER_ON) {\n" + ">> + ? ? ? ? ? ? ? omap_uart_enable_clocks(uart);\n" + ">>\n" + ">> - ? ? ? list_for_each_entry(uart, &uart_list, node) {\n" + ">> - ? ? ? ? ? ? ? if (num == uart->num) {\n" + ">> - ? ? ? ? ? ? ? ? ? ? ? omap_uart_enable_clocks(uart);\n" ">> -\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 /* Check for IO pad wakeup */\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 if (cpu_is_omap34xx() && uart->padconf) {\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 u16 p = omap_ctrl_readw(uart->padconf);\n" + ">> - ? ? ? ? ? ? ? ? ? ? ? /* Check for IO pad wakeup */\n" + ">> - ? ? ? ? ? ? ? ? ? ? ? if (cpu_is_omap34xx() && uart->padconf) {\n" + ">> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? u16 p = omap_ctrl_readw(uart->padconf);\n" ">> -\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 if (p & OMAP3_PADCONF_WAKEUPEVENT0)\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_uart_block_sleep(uart);\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 }\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 /* Check for IO pad wakeup */\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 if (cpu_is_omap34xx() && uart->padconf) {\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 u16 p = omap_ctrl_readw(uart->padconf);\n" - ">>\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 /* Check for normal UART wakeup */\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 if (__raw_readl(uart->wk_st) & uart->wk_mask)\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 if (p & OMAP3_PADCONF_WAKEUPEVENT0)\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240omap_uart_block_sleep(uart);\n" - ">> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 return;\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240}\n" + ">> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (p & OMAP3_PADCONF_WAKEUPEVENT0)\n" + ">> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? omap_uart_block_sleep(uart);\n" + ">> - ? ? ? ? ? ? ? ? ? ? ? }\n" + ">> + ? ? ? ? ? ? ? /* Check for IO pad wakeup */\n" + ">> + ? ? ? ? ? ? ? if (cpu_is_omap34xx() && uart->padconf) {\n" + ">> + ? ? ? ? ? ? ? ? ? ? ? u16 p = omap_ctrl_readw(uart->padconf);\n" + ">>\n" + ">> - ? ? ? ? ? ? ? ? ? ? ? /* Check for normal UART wakeup */\n" + ">> - ? ? ? ? ? ? ? ? ? ? ? if (__raw_readl(uart->wk_st) & uart->wk_mask)\n" + ">> + ? ? ? ? ? ? ? ? ? ? ? if (p & OMAP3_PADCONF_WAKEUPEVENT0)\n" + ">> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?omap_uart_block_sleep(uart);\n" + ">> - ? ? ? ? ? ? ? ? ? ? ? return;\n" + ">> ? ? ? ? ? ? ? ?}\n" ">> +\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 /* Check for normal UART wakeup */\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 if (__raw_readl(uart->wk_st) & uart->wk_mask)\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_uart_block_sleep(uart);\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 return;\n" - ">> \302\240 \302\240 \302\240 \302\240}\n" - ">> \302\240}\n" + ">> + ? ? ? ? ? ? ? /* Check for normal UART wakeup */\n" + ">> + ? ? ? ? ? ? ? if (__raw_readl(uart->wk_st) & uart->wk_mask)\n" + ">> + ? ? ? ? ? ? ? ? ? ? ? omap_uart_block_sleep(uart);\n" + ">> + ? ? ? ? ? ? ? return;\n" + ">> ? ? ? ?}\n" + ">> ?}\n" ">>\n" ">> @@ -474,6 +467,27 @@ static irqreturn_t omap_uart_interrupt(int irq, void *dev_id)\n" - ">> \302\240 \302\240 \302\240 \302\240return IRQ_NONE;\n" - ">> \302\240}\n" + ">> ? ? ? ?return IRQ_NONE;\n" + ">> ?}\n" ">>\n" ">> +static int omap_uart_idle_notifier(struct notifier_block *n,\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240unsigned long val,\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240void *p)\n" + ">> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?unsigned long val,\n" + ">> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?void *p)\n" ">> +{\n" - ">> + \302\240 \302\240 \302\240 struct omap_uart_state *uart;\n" + ">> + ? ? ? struct omap_uart_state *uart;\n" ">> +\n" - ">> + \302\240 \302\240 \302\240 if (val == OMAP_IDLE_START)\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 list_for_each_entry(uart, &uart_list, node)\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_uart_prepare_idle(uart);\n" - ">> + \302\240 \302\240 \302\240 else\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 list_for_each_entry(uart, &uart_list, node)\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_uart_resume_idle(uart);\n" + ">> + ? ? ? if (val == OMAP_IDLE_START)\n" + ">> + ? ? ? ? ? ? ? list_for_each_entry(uart, &uart_list, node)\n" + ">> + ? ? ? ? ? ? ? ? ? ? ? omap_uart_prepare_idle(uart);\n" + ">> + ? ? ? else\n" + ">> + ? ? ? ? ? ? ? list_for_each_entry(uart, &uart_list, node)\n" + ">> + ? ? ? ? ? ? ? ? ? ? ? omap_uart_resume_idle(uart);\n" ">> +\n" - ">> + \302\240 \302\240 \302\240 return 0;\n" + ">> + ? ? ? return 0;\n" ">> +}\n" ">> +\n" ">> +static bool omap_uart_notifier_enabled;\n" ">> +static struct notifier_block omap_uart_notifier = {\n" - ">> + \302\240 \302\240 \302\240 .notifier_call = omap_uart_idle_notifier,\n" + ">> + ? ? ? .notifier_call = omap_uart_idle_notifier,\n" ">> +};\n" ">> +\n" - ">> \302\240static void omap_uart_idle_init(struct omap_uart_state *uart)\n" - ">> \302\240{\n" - ">> \302\240 \302\240 \302\240 \302\240int ret;\n" + ">> ?static void omap_uart_idle_init(struct omap_uart_state *uart)\n" + ">> ?{\n" + ">> ? ? ? ?int ret;\n" ">> @@ -549,6 +563,11 @@ static void omap_uart_idle_init(struct omap_uart_state *uart)\n" - ">> \302\240 \302\240 \302\240 \302\240ret = request_threaded_irq(uart->irq, NULL, omap_uart_interrupt,\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 IRQF_SHARED, \"serial idle\", (void *)uart);\n" - ">> \302\240 \302\240 \302\240 \302\240WARN_ON(ret);\n" + ">> ? ? ? ?ret = request_threaded_irq(uart->irq, NULL, omap_uart_interrupt,\n" + ">> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? IRQF_SHARED, \"serial idle\", (void *)uart);\n" + ">> ? ? ? ?WARN_ON(ret);\n" ">> +\n" - ">> + \302\240 \302\240 \302\240 if (!omap_uart_notifier_enabled) {\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_idle_notifier_register(&omap_uart_notifier);\n" - ">> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_uart_notifier_enabled = true;\n" - ">> + \302\240 \302\240 \302\240 }\n" - ">> \302\240}\n" + ">> + ? ? ? if (!omap_uart_notifier_enabled) {\n" + ">> + ? ? ? ? ? ? ? omap_idle_notifier_register(&omap_uart_notifier);\n" + ">> + ? ? ? ? ? ? ? omap_uart_notifier_enabled = true;\n" + ">> + ? ? ? }\n" + ">> ?}\n" ">>\n" - ">> \302\240void omap_uart_enable_irqs(int enable)\n" + ">> ?void omap_uart_enable_irqs(int enable)\n" ">> @@ -731,6 +750,8 @@ void __init omap_serial_init_port(int port)\n" - ">> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240break;\n" - ">>\n" - ">> \302\240 \302\240 \302\240 \302\240oh = uart->oh;\n" - ">> + \302\240 \302\240 \302\240 uart->pwrdm = omap_hwmod_get_pwrdm(oh);\n" - ">> + \302\240 \302\240 \302\240 WARN_ON(!uart->pwrdm);\n" - ">> \302\240 \302\240 \302\240 \302\240uart->dma_enabled = 0;\n" - ">> \302\240#ifndef CONFIG_SERIAL_OMAP\n" - ">> \302\240 \302\240 \302\240 \302\240name = \"serial8250\";\n" + ">> ? ? ? ? ? ? ? ? ? ? ? ?break;\n" + ">>\n" + ">> ? ? ? ?oh = uart->oh;\n" + ">> + ? ? ? uart->pwrdm = omap_hwmod_get_pwrdm(oh);\n" + ">> + ? ? ? WARN_ON(!uart->pwrdm);\n" + ">> ? ? ? ?uart->dma_enabled = 0;\n" + ">> ?#ifndef CONFIG_SERIAL_OMAP\n" + ">> ? ? ? ?name = \"serial8250\";\n" ">> diff --git a/arch/arm/plat-omap/include/plat/serial.h b/arch/arm/plat-omap/include/plat/serial.h\n" ">> index 19145f5..d3ee47b 100644\n" ">> --- a/arch/arm/plat-omap/include/plat/serial.h\n" ">> +++ b/arch/arm/plat-omap/include/plat/serial.h\n" ">> @@ -99,8 +99,6 @@ extern void omap_serial_init_port(int port);\n" - ">> \302\240extern int omap_uart_can_sleep(void);\n" - ">> \302\240extern void omap_uart_check_wakeup(void);\n" - ">> \302\240extern void omap_uart_prepare_suspend(void);\n" + ">> ?extern int omap_uart_can_sleep(void);\n" + ">> ?extern void omap_uart_check_wakeup(void);\n" + ">> ?extern void omap_uart_prepare_suspend(void);\n" ">> -extern void omap_uart_prepare_idle(int num);\n" ">> -extern void omap_uart_resume_idle(int num);\n" - ">> \302\240extern void omap_uart_enable_irqs(int enable);\n" - ">> \302\240#endif\n" + ">> ?extern void omap_uart_enable_irqs(int enable);\n" + ">> ?#endif\n" ">>\n" ">> --\n" ">> 1.7.2.1\n" ">>\n" ">> --\n" ">> To unsubscribe from this list: send the line \"unsubscribe linux-omap\" in\n" - ">> the body of a message to majordomo@vger.kernel.org\n" - ">> More majordomo info at \302\240http://vger.kernel.org/majordomo-info.html\n" - ">>\n" - "--\n" - "To unsubscribe from this list: send the line \"unsubscribe linux-omap\" in\n" - "the body of a message to majordomo@vger.kernel.org\n" - More majordomo info at http://vger.kernel.org/majordomo-info.html + ">> the body of a message to majordomo at vger.kernel.org\n" + ">> More majordomo info at ?http://vger.kernel.org/majordomo-info.html\n" + >> -1cdc4f4a683ec942556e186b03aba1af2a71e13bf53aa54ddbe6a9d290f06eb1 +cf8c2843e8dc3706b832f16a0fd50d19260d84bbda722ad606f0051fa2dab75e
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.