diff for duplicates of <8739g5y45m.fsf@ti.com> diff --git a/a/1.txt b/N1/1.txt index 163e9d3..b2a0e28 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -10,8 +10,8 @@ Govindraj <govindraj.ti@gmail.com> writes: >>> 3.) autosuspend for port specific activities and put for reg access. >> >> Re: autosuspend, it looks like the driver now has 2 mechanisms for ->> tracking activity. The runtime PM 'mark last busy' and the existing ->> 'up->port_activity = jiffies' stuff. Do you think those could be +>> tracking activity. ?The runtime PM 'mark last busy' and the existing +>> 'up->port_activity = jiffies' stuff. ?Do you think those could be >> unified? >> > @@ -26,15 +26,15 @@ _mark_last_busy(). If it cannot, that's fine, but it should be described. >> At first glance, it looks like most places with a _mark_last_busy() also ->> have a up->port_activity update. I'm not familiar enough with the +>> have a up->port_activity update. ?I'm not familiar enough with the >> driver to make the call, but they look awfully similar. >> > > Ok, I will check whether I can get rid if it. > >>> 4.) for earlyprintk usage the debug macro will write to console uart ->>> so keep uart clocks active from boot, idle using hwmod API's re-enable back ->>> using runtime API's. +>>> ? ? so keep uart clocks active from boot, idle using hwmod API's re-enable back +>>> ? ? using runtime API's. >> >> /me doesn't understand > @@ -50,18 +50,18 @@ separate descriptive changelog. >> >>> 5.) Moving context restore to runtime suspend and using reg values from port ->>> structure to restore the uart port context based on context_loss_count. ->>> Maintain internal state machine for avoiding repeated enable/disable of ->>> uart port wakeup mechanism. +>>> ? ? structure to restore the uart port context based on context_loss_count. +>>> ? ? Maintain internal state machine for avoiding repeated enable/disable of +>>> ? ? uart port wakeup mechanism. >>> 6.) Add API to enable wakeup and check wakeup status. >>> >>> Acked-by: Alan Cox <alan@linux.intel.com> >>> Signed-off-by: Govindraj.R <govindraj.raja@ti.com> >>> --- ->>> arch/arm/mach-omap2/serial.c | 49 ++++++ ->>> arch/arm/plat-omap/include/plat/omap-serial.h | 10 ++ ->>> drivers/tty/serial/omap-serial.c | 211 ++++++++++++++++++++++--- ->>> 3 files changed, 250 insertions(+), 20 deletions(-) +>>> ?arch/arm/mach-omap2/serial.c ? ? ? ? ? ? ? ? ?| ? 49 ++++++ +>>> ?arch/arm/plat-omap/include/plat/omap-serial.h | ? 10 ++ +>>> ?drivers/tty/serial/omap-serial.c ? ? ? ? ? ? ?| ?211 ++++++++++++++++++++++--- +>>> ?3 files changed, 250 insertions(+), 20 deletions(-) >>> > > [..] @@ -69,24 +69,24 @@ separate descriptive changelog. >>> + >>> +static void omap_uart_wakeup_enable(struct platform_device *pdev, bool enable) >>> +{ ->>> + struct omap_device *od; ->>> + struct omap_uart_port_info *up = pdev->dev.platform_data; +>>> + ? ? struct omap_device *od; +>>> + ? ? struct omap_uart_port_info *up = pdev->dev.platform_data; >>> + ->>> + /* Set or clear wake-enable bit */ ->>> + if (up->wk_en && up->wk_mask) { ->>> + u32 v = __raw_readl(up->wk_en); ->>> + if (enable) ->>> + v |= up->wk_mask; ->>> + else ->>> + v &= ~up->wk_mask; ->>> + __raw_writel(v, up->wk_en); ->>> + } +>>> + ? ? /* Set or clear wake-enable bit */ +>>> + ? ? if (up->wk_en && up->wk_mask) { +>>> + ? ? ? ? ? ? u32 v = __raw_readl(up->wk_en); +>>> + ? ? ? ? ? ? if (enable) +>>> + ? ? ? ? ? ? ? ? ? ? v |= up->wk_mask; +>>> + ? ? ? ? ? ? else +>>> + ? ? ? ? ? ? ? ? ? ? v &= ~up->wk_mask; +>>> + ? ? ? ? ? ? __raw_writel(v, up->wk_en); +>>> + ? ? } >>> + ->>> + od = to_omap_device(pdev); ->>> + if (enable) ->>> + omap_hwmod_enable_wakeup(od->hwmods[0]); ->>> + else ->>> + omap_hwmod_disable_wakeup(od->hwmods[0]); +>>> + ? ? od = to_omap_device(pdev); +>>> + ? ? if (enable) +>>> + ? ? ? ? ? ? omap_hwmod_enable_wakeup(od->hwmods[0]); +>>> + ? ? else +>>> + ? ? ? ? ? ? omap_hwmod_disable_wakeup(od->hwmods[0]); >>> +} >>> + >> @@ -119,27 +119,27 @@ wakeups as before. [...] ->>> } +>>> ?} >>> ->>> static int __init +>>> ?static int __init >>> @@ -1065,22 +1123,33 @@ static struct uart_driver serial_omap_reg = { ->>> .cons = OMAP_CONSOLE, ->>> }; +>>> ? ? ? .cons ? ? ? ? ? = OMAP_CONSOLE, +>>> ?}; >>> >>> -static int >>> -serial_omap_suspend(struct platform_device *pdev, pm_message_t state) >>> +static int serial_omap_suspend(struct device *dev) ->>> { ->>> - struct uart_omap_port *up = platform_get_drvdata(pdev); ->>> + struct uart_omap_port *up = dev_get_drvdata(dev); +>>> ?{ +>>> - ? ? struct uart_omap_port *up = platform_get_drvdata(pdev); +>>> + ? ? struct uart_omap_port *up = dev_get_drvdata(dev); >>> ->>> - if (up) ->>> + if (up) { ->>> uart_suspend_port(&serial_omap_reg, &up->port); ->>> + if (up->port.line == up->port.cons->index && ->>> + !is_console_locked()) ->>> + up->console_locked = console_trylock(); ->>> + } +>>> - ? ? if (up) +>>> + ? ? if (up) { +>>> ? ? ? ? ? ? ? uart_suspend_port(&serial_omap_reg, &up->port); +>>> + ? ? ? ? ? ? if (up->port.line == up->port.cons->index && +>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? !is_console_locked()) +>>> + ? ? ? ? ? ? ? ? ? ? up->console_locked = console_trylock(); +>>> + ? ? } >>> + >> >> Motiviation for console locking in this version of the series is not @@ -175,7 +175,3 @@ the UART clocks are not gated, but that is what the user requested. Kevin --- -To unsubscribe from this list: send the line "unsubscribe linux-serial" 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 f8f33f5..4af7951 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -2,18 +2,10 @@ "ref\01315400013-4849-8-git-send-email-govindraj.raja@ti.com\0" "ref\087obyu36lo.fsf@ti.com\0" "ref\0CAAL8m4wpCVrhY7++ROwu0Whh4w_cF_dUr0t5622+WmJZah_FRA@mail.gmail.com\0" - "From\0Kevin Hilman <khilman@ti.com>\0" - "Subject\0Re: [PATCH v4 07/11] Serial: OMAP: Add runtime pm support for omap-serial driver\0" + "From\0khilman@ti.com (Kevin Hilman)\0" + "Subject\0[PATCH v4 07/11] Serial: OMAP: Add runtime pm support for omap-serial driver\0" "Date\0Fri, 09 Sep 2011 11:14:13 -0700\0" - "To\0Govindraj <govindraj.ti@gmail.com>\0" - "Cc\0Govindraj.R <govindraj.raja@ti.com>" - linux-omap@vger.kernel.org - Paul Walmsley <paul@pwsan.com> - Tony Lindgren <tony@atomide.com> - Partha Basak <p-basak2@ti.com> - linux-serial@vger.kernel.org - Vishwanath Sripathy <vishwanath.bs@ti.com> - " 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" @@ -28,8 +20,8 @@ ">>> 3.) autosuspend for port specific activities and put for reg access.\n" ">>\n" ">> Re: autosuspend, it looks like the driver now has 2 mechanisms for\n" - ">> tracking activity. \302\240The runtime PM 'mark last busy' and the existing\n" - ">> 'up->port_activity = jiffies' stuff. \302\240Do you think those could be\n" + ">> tracking activity. ?The runtime PM 'mark last busy' and the existing\n" + ">> 'up->port_activity = jiffies' stuff. ?Do you think those could be\n" ">> unified?\n" ">>\n" ">\n" @@ -44,15 +36,15 @@ "If it cannot, that's fine, but it should be described.\n" "\n" ">> At first glance, it looks like most places with a _mark_last_busy() also\n" - ">> have a up->port_activity update. \302\240I'm not familiar enough with the\n" + ">> have a up->port_activity update. ?I'm not familiar enough with the\n" ">> driver to make the call, but they look awfully similar.\n" ">>\n" ">\n" "> Ok, I will check whether I can get rid if it.\n" ">\n" ">>> 4.) for earlyprintk usage the debug macro will write to console uart\n" - ">>> \302\240 \302\240 so keep uart clocks active from boot, idle using hwmod API's re-enable back\n" - ">>> \302\240 \302\240 using runtime API's.\n" + ">>> ? ? so keep uart clocks active from boot, idle using hwmod API's re-enable back\n" + ">>> ? ? using runtime API's.\n" ">>\n" ">> /me doesn't understand\n" ">\n" @@ -68,18 +60,18 @@ "\n" ">>\n" ">>> 5.) Moving context restore to runtime suspend and using reg values from port\n" - ">>> \302\240 \302\240 structure to restore the uart port context based on context_loss_count.\n" - ">>> \302\240 \302\240 Maintain internal state machine for avoiding repeated enable/disable of\n" - ">>> \302\240 \302\240 uart port wakeup mechanism.\n" + ">>> ? ? structure to restore the uart port context based on context_loss_count.\n" + ">>> ? ? Maintain internal state machine for avoiding repeated enable/disable of\n" + ">>> ? ? uart port wakeup mechanism.\n" ">>> 6.) Add API to enable wakeup and check wakeup status.\n" ">>>\n" ">>> Acked-by: Alan Cox <alan@linux.intel.com>\n" ">>> Signed-off-by: Govindraj.R <govindraj.raja@ti.com>\n" ">>> ---\n" - ">>> \302\240arch/arm/mach-omap2/serial.c \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240| \302\240 49 ++++++\n" - ">>> \302\240arch/arm/plat-omap/include/plat/omap-serial.h | \302\240 10 ++\n" - ">>> \302\240drivers/tty/serial/omap-serial.c \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240| \302\240211 ++++++++++++++++++++++---\n" - ">>> \302\2403 files changed, 250 insertions(+), 20 deletions(-)\n" + ">>> ?arch/arm/mach-omap2/serial.c ? ? ? ? ? ? ? ? ?| ? 49 ++++++\n" + ">>> ?arch/arm/plat-omap/include/plat/omap-serial.h | ? 10 ++\n" + ">>> ?drivers/tty/serial/omap-serial.c ? ? ? ? ? ? ?| ?211 ++++++++++++++++++++++---\n" + ">>> ?3 files changed, 250 insertions(+), 20 deletions(-)\n" ">>>\n" ">\n" "> [..]\n" @@ -87,24 +79,24 @@ ">>> +\n" ">>> +static void omap_uart_wakeup_enable(struct platform_device *pdev, bool enable)\n" ">>> +{\n" - ">>> + \302\240 \302\240 struct omap_device *od;\n" - ">>> + \302\240 \302\240 struct omap_uart_port_info *up = pdev->dev.platform_data;\n" + ">>> + ? ? struct omap_device *od;\n" + ">>> + ? ? struct omap_uart_port_info *up = pdev->dev.platform_data;\n" ">>> +\n" - ">>> + \302\240 \302\240 /* Set or clear wake-enable bit */\n" - ">>> + \302\240 \302\240 if (up->wk_en && up->wk_mask) {\n" - ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 u32 v = __raw_readl(up->wk_en);\n" - ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 if (enable)\n" - ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 v |= up->wk_mask;\n" - ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 else\n" - ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 v &= ~up->wk_mask;\n" - ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 __raw_writel(v, up->wk_en);\n" - ">>> + \302\240 \302\240 }\n" + ">>> + ? ? /* Set or clear wake-enable bit */\n" + ">>> + ? ? if (up->wk_en && up->wk_mask) {\n" + ">>> + ? ? ? ? ? ? u32 v = __raw_readl(up->wk_en);\n" + ">>> + ? ? ? ? ? ? if (enable)\n" + ">>> + ? ? ? ? ? ? ? ? ? ? v |= up->wk_mask;\n" + ">>> + ? ? ? ? ? ? else\n" + ">>> + ? ? ? ? ? ? ? ? ? ? v &= ~up->wk_mask;\n" + ">>> + ? ? ? ? ? ? __raw_writel(v, up->wk_en);\n" + ">>> + ? ? }\n" ">>> +\n" - ">>> + \302\240 \302\240 od = to_omap_device(pdev);\n" - ">>> + \302\240 \302\240 if (enable)\n" - ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_hwmod_enable_wakeup(od->hwmods[0]);\n" - ">>> + \302\240 \302\240 else\n" - ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 omap_hwmod_disable_wakeup(od->hwmods[0]);\n" + ">>> + ? ? od = to_omap_device(pdev);\n" + ">>> + ? ? if (enable)\n" + ">>> + ? ? ? ? ? ? omap_hwmod_enable_wakeup(od->hwmods[0]);\n" + ">>> + ? ? else\n" + ">>> + ? ? ? ? ? ? omap_hwmod_disable_wakeup(od->hwmods[0]);\n" ">>> +}\n" ">>> +\n" ">>\n" @@ -137,27 +129,27 @@ "\n" "[...]\n" "\n" - ">>> \302\240}\n" + ">>> ?}\n" ">>>\n" - ">>> \302\240static int __init\n" + ">>> ?static int __init\n" ">>> @@ -1065,22 +1123,33 @@ static struct uart_driver serial_omap_reg = {\n" - ">>> \302\240 \302\240 \302\240 .cons \302\240 \302\240 \302\240 \302\240 \302\240 = OMAP_CONSOLE,\n" - ">>> \302\240};\n" + ">>> ? ? ? .cons ? ? ? ? ? = OMAP_CONSOLE,\n" + ">>> ?};\n" ">>>\n" ">>> -static int\n" ">>> -serial_omap_suspend(struct platform_device *pdev, pm_message_t state)\n" ">>> +static int serial_omap_suspend(struct device *dev)\n" - ">>> \302\240{\n" - ">>> - \302\240 \302\240 struct uart_omap_port *up = platform_get_drvdata(pdev);\n" - ">>> + \302\240 \302\240 struct uart_omap_port *up = dev_get_drvdata(dev);\n" + ">>> ?{\n" + ">>> - ? ? struct uart_omap_port *up = platform_get_drvdata(pdev);\n" + ">>> + ? ? struct uart_omap_port *up = dev_get_drvdata(dev);\n" ">>>\n" - ">>> - \302\240 \302\240 if (up)\n" - ">>> + \302\240 \302\240 if (up) {\n" - ">>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 uart_suspend_port(&serial_omap_reg, &up->port);\n" - ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 if (up->port.line == up->port.cons->index &&\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 !is_console_locked())\n" - ">>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 up->console_locked = console_trylock();\n" - ">>> + \302\240 \302\240 }\n" + ">>> - ? ? if (up)\n" + ">>> + ? ? if (up) {\n" + ">>> ? ? ? ? ? ? ? uart_suspend_port(&serial_omap_reg, &up->port);\n" + ">>> + ? ? ? ? ? ? if (up->port.line == up->port.cons->index &&\n" + ">>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? !is_console_locked())\n" + ">>> + ? ? ? ? ? ? ? ? ? ? up->console_locked = console_trylock();\n" + ">>> + ? ? }\n" ">>> +\n" ">>\n" ">> Motiviation for console locking in this version of the series is not\n" @@ -192,10 +184,6 @@ "the UART clocks are not gated, but that is what the user requested.\n" "\n" "\n" - "Kevin\n" - "--\n" - "To unsubscribe from this list: send the line \"unsubscribe linux-serial\" in\n" - "the body of a message to majordomo@vger.kernel.org\n" - More majordomo info at http://vger.kernel.org/majordomo-info.html + Kevin -e4fe9138aea544e877e963ef16fd7dc9cd8c3fe53039876f7d7589c6c20a7234 +138f786e199a7e99eb0649f3b9bea0b2780d84448c67e492585de07abcc44b47
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.