diff for duplicates of <87sjo1itjw.fsf@ti.com> diff --git a/a/1.txt b/N1/1.txt index bbb8bc6..6243541 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -13,8 +13,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? >>>> >>> @@ -22,7 +22,7 @@ Govindraj <govindraj.ti@gmail.com> writes: >>> using runtime API? I don't find that available. >>> >> ->> Not currently. The question is more along the lines of: what is the +>> Not currently. ?The question is more along the lines of: what is the >> port_activity jiffies used for, and can it be replaced by using >> _mark_last_busy(). >> @@ -32,22 +32,22 @@ Govindraj <govindraj.ti@gmail.com> writes: > >> >>>> 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 >>> >>> I have added this reason in early mail reply to 04/11 patch review >>> [needed for earlyprintk option from low level debug ] >> ->> OK, but AFAIK, DEBUG_LL + earlyprintk do not use this driver. Instead +>> OK, but AFAIK, DEBUG_LL + earlyprintk do not use this driver. ?Instead >> they use the debug macros, so any hacks to deal with that do not belong >> in the driver. >> @@ -68,18 +68,18 @@ Yes please. >>>> >>>>> 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(-) >>>>> >>> >>> [..] @@ -87,24 +87,24 @@ Yes please. >>>>> + >>>>> +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]); >>>>> +} >>>>> + >>>> @@ -173,27 +173,27 @@ descriptive changelogs are invaluable to an efficient review process. > >> [...] >> ->>>>> } +>>>>> ?} >>>>> ->>>>> 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 @@ -242,7 +242,3 @@ yes please. These are the kinds of things that belong in a descriptive changelog. Kevin --- -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 1c76ab7..24a8a8a 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -4,18 +4,10 @@ "ref\0CAAL8m4wpCVrhY7++ROwu0Whh4w_cF_dUr0t5622+WmJZah_FRA@mail.gmail.com\0" "ref\08739g5y45m.fsf@ti.com\0" "ref\0CAAL8m4zR06U115V52+fT84dc6g7PYkLb1jJaMKGyi2VJhFtYxg@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\0Mon, 12 Sep 2011 10:01:23 -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" @@ -33,8 +25,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" @@ -42,7 +34,7 @@ ">>> using runtime API? I don't find that available.\n" ">>>\n" ">>\n" - ">> Not currently. \302\240The question is more along the lines of: what is the\n" + ">> Not currently. ?The question is more along the lines of: what is the\n" ">> port_activity jiffies used for, and can it be replaced by using\n" ">> _mark_last_busy().\n" ">>\n" @@ -52,22 +44,22 @@ ">\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" ">>> I have added this reason in early mail reply to 04/11 patch review\n" ">>> [needed for earlyprintk option from low level debug ]\n" ">>\n" - ">> OK, but AFAIK, DEBUG_LL + earlyprintk do not use this driver. \302\240Instead\n" + ">> OK, but AFAIK, DEBUG_LL + earlyprintk do not use this driver. ?Instead\n" ">> they use the debug macros, so any hacks to deal with that do not belong\n" ">> in the driver.\n" ">>\n" @@ -88,18 +80,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" @@ -107,24 +99,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" @@ -193,27 +185,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" @@ -261,10 +253,6 @@ "\n" "These are the kinds of things that belong in a descriptive changelog.\n" "\n" - "Kevin\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 + Kevin -fcdbe871f59550cdce4c6498392d2b5b0ba838a013505ec7101fac28debac1a8 +31e0602436df705b6c6a6b42eb38c263fc7a1f5aa44d03a913fe0dcbf3312f23
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.