* new PM branch: pm-20081106
@ 2008-11-07 17:29 Kevin Hilman
2008-11-10 5:52 ` Rajendra Nayak
0 siblings, 1 reply; 12+ messages in thread
From: Kevin Hilman @ 2008-11-07 17:29 UTC (permalink / raw)
To: linux-omap
For those who want to experiment with the latest PM branch, it is now
available in OMAP git as branch pm-20081106
The shortlog is below[1], but the significant thing for now is a
rework of how UART handles its clocks and allows idle. I also did
quite a bit of reordering and some restructuring.
I've tested this on Nokia HW and the basic retention-on-idle support
on Beagle. I'm still waiting for my SDP to arrive, so haven't tested
on SDP.
Kevin
[1]
Amit Kucheria (2):
OMAP: PM: Typo fix for clock_allow_idle
HSMMC: Make driver support dynamic idle
Jouni Hogander (5):
OMAP3: PM: Use pwrdm_set_next_pwrst instead of set_pwrdm_state in idle loop
OMAP3: Do not set mpu, core, neon states if cpuidle is used
OMAP3: PM: Do not set next states sw to control those is available
OMAP3: PM: Always return value in pwrdms_setup
OMAP3: PM: Fix wrong sequence in suspend.
Kalle Jokiniemi (3):
OMAP: PM: sysfs interface for enabling voltage off in idle
OMAP3: PM: Fix cpu idle init sequencing
OMAP: SRF: Fixes to shared resource framework (Ver.3)
Kevin Hilman (10):
OMAP3: PM: Add wake-up bit defintiions for CONTROL_PADCONF_X
OMAP3: PM: Allow UARTs to be unclocked when inactive
8250: Allow platform to register PM hook
8250: when waking, PM hook should be called before accessing port
OMAP3: PM: UART: Add 8250 UART PM hook for suspend/resume
OMAP3: PM: UART save/restore support for OFF-mode
OMAP2/3: HSMMC: Ensure HSMMC is fully reset on boot
OMAP3: PM: CPUidle: obey enable_off_mode flag
OMAP3: PM: CPUidle: restrict C-states on UART activity
OMAP3: PM: decouple PER and CORE context save and restore
Paul Walmsley (6):
OMAP2/3 PM: create the OMAP PM interface and add a default OMAP PM no-op layer.
OMAP2/3 omapdev: add basic omapdev structure
OMAP242x omapdev: add OMAP242x omapdev records
OMAP243x omapdev: add OMAP243x omapdev records
OMAP3xxx omapdev: add OMAP3xxx omapdev records
OMAP2/3 omapdev: add code to walk the omapdev records
Peter 'p2' De Schrijver (9):
OMAP: PM counter infrastructure.
OMAP: PM: Hook into PM counters
OMAP: PM: Add closures to clkdm_for_each and pwrdm_for_each.
OMAP: PM: Add pm-debug counters
OMAP: PM debug: make powerdomains use PM-debug counters
OMAP: PM: Add definitions for ETK pads and observability registers
OMAP: Debug observability and ETK padconf implementation
OMAP: Add debug observablity (debobs) Kconfig item
OMAP: PM: Implement get_last_off_on_transaction_id()
Rajendra Nayak (23):
OMAP3: PM: GPMC context save/restore
OMAP3: PM: GPIO context save/restore
OMAP3: PM: I2C context save/restore
OMAP3: PM: INTC context save/restore
OMAP3: PM: PRCM context save/restore
OMAP3: PM: Populate scratchpad contents
OMAP3: PM: SCM context save/restore
OMAP3: PM: SRAM restore function
OMAP3: PM: handle PER/NEON/CORE in idle
OMAP3: PM: Restore MMU table entry
OMAP3: PM: MPU off-mode support
OMAP3: PM: CORE domain off-mode support
OMAP3: PM: allow runtime enable/disable of OFF mode
OMAP3: 3430SDP minimal kernel defconfig
OMAP3: PM: CPUidle: Basic support for C1-C2
OMAP3: PM: CPUidle: Enables state C4
OMAP3: PM: CPUidle: Enables C3 and C5
OMAP3: PM: CPUidle: Safe-state on bm-activity
OMAP3: PM: CPUidle: Enable Kconfig option for OMAP
OMAP3 SRF: Generic shared resource f/w
OMAP3 SRF: MPU/CORE/PD latency modeling
OMAP3 SRF: omap3 srf driver
OMAP3 SRF: OMAP PM srf implementation
Tero Kristo (9):
OMAP: PM debug: do not print out status for meta powerdomains (dpll*)
OMAP: PM debug: Add PRCM register dump support
OMAP: PM: DMA context save / restore
OMAP: PM: off-mode support for DMA on EMU/HS devices
OMAP3: SRAM size fix for HS/EMU devices
OMAP3 PM: off-mode support for HS/EMU devices
OMAP3: PM: Enable SDRAM auto-refresh during sleep
OMAP: SDRC: Add new register definitions for SDRAM controller
OMAP3: PM: SDRC auto-refresh workaround for off-mode
^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: new PM branch: pm-20081106
2008-11-07 17:29 new PM branch: pm-20081106 Kevin Hilman
@ 2008-11-10 5:52 ` Rajendra Nayak
2008-11-11 17:21 ` Kevin Hilman
0 siblings, 1 reply; 12+ messages in thread
From: Rajendra Nayak @ 2008-11-10 5:52 UTC (permalink / raw)
To: 'Kevin Hilman', linux-omap
Hello Kevin,
I am seeing a couple of issues on the 3430sdp with this latest pm branch.
With the omap_3430sdp_min_defconfig I see a system freeze after bootup
after the debug UART inactivity. Also system wide suspend seems to freeze.
The system wide suspend freeze is seen even with the default (omap_3430sdp_defconfig)
config.
I ran into these issue while validating the DVFS patches and haven't really looked further
into what might be causing these. I have a ES3.0 GP based SDP board.
regards,
Rajendra
> -----Original Message-----
> From: linux-omap-owner@vger.kernel.org
> [mailto:linux-omap-owner@vger.kernel.org] On Behalf Of Kevin Hilman
> Sent: Friday, November 07, 2008 11:00 PM
> To: linux-omap@vger.kernel.org
> Subject: new PM branch: pm-20081106
>
> For those who want to experiment with the latest PM branch, it is now
> available in OMAP git as branch pm-20081106
>
> The shortlog is below[1], but the significant thing for now is a
> rework of how UART handles its clocks and allows idle. I also did
> quite a bit of reordering and some restructuring.
>
> I've tested this on Nokia HW and the basic retention-on-idle support
> on Beagle. I'm still waiting for my SDP to arrive, so haven't tested
> on SDP.
>
> Kevin
>
> [1]
> Amit Kucheria (2):
> OMAP: PM: Typo fix for clock_allow_idle
> HSMMC: Make driver support dynamic idle
>
> Jouni Hogander (5):
> OMAP3: PM: Use pwrdm_set_next_pwrst instead of
> set_pwrdm_state in idle loop
> OMAP3: Do not set mpu, core, neon states if cpuidle is used
> OMAP3: PM: Do not set next states sw to control those
> is available
> OMAP3: PM: Always return value in pwrdms_setup
> OMAP3: PM: Fix wrong sequence in suspend.
>
> Kalle Jokiniemi (3):
> OMAP: PM: sysfs interface for enabling voltage off in idle
> OMAP3: PM: Fix cpu idle init sequencing
> OMAP: SRF: Fixes to shared resource framework (Ver.3)
>
> Kevin Hilman (10):
> OMAP3: PM: Add wake-up bit defintiions for CONTROL_PADCONF_X
> OMAP3: PM: Allow UARTs to be unclocked when inactive
> 8250: Allow platform to register PM hook
> 8250: when waking, PM hook should be called before
> accessing port
> OMAP3: PM: UART: Add 8250 UART PM hook for suspend/resume
> OMAP3: PM: UART save/restore support for OFF-mode
> OMAP2/3: HSMMC: Ensure HSMMC is fully reset on boot
> OMAP3: PM: CPUidle: obey enable_off_mode flag
> OMAP3: PM: CPUidle: restrict C-states on UART activity
> OMAP3: PM: decouple PER and CORE context save and restore
>
> Paul Walmsley (6):
> OMAP2/3 PM: create the OMAP PM interface and add a
> default OMAP PM no-op layer.
> OMAP2/3 omapdev: add basic omapdev structure
> OMAP242x omapdev: add OMAP242x omapdev records
> OMAP243x omapdev: add OMAP243x omapdev records
> OMAP3xxx omapdev: add OMAP3xxx omapdev records
> OMAP2/3 omapdev: add code to walk the omapdev records
>
> Peter 'p2' De Schrijver (9):
> OMAP: PM counter infrastructure.
> OMAP: PM: Hook into PM counters
> OMAP: PM: Add closures to clkdm_for_each and pwrdm_for_each.
> OMAP: PM: Add pm-debug counters
> OMAP: PM debug: make powerdomains use PM-debug counters
> OMAP: PM: Add definitions for ETK pads and
> observability registers
> OMAP: Debug observability and ETK padconf implementation
> OMAP: Add debug observablity (debobs) Kconfig item
> OMAP: PM: Implement get_last_off_on_transaction_id()
>
> Rajendra Nayak (23):
> OMAP3: PM: GPMC context save/restore
> OMAP3: PM: GPIO context save/restore
> OMAP3: PM: I2C context save/restore
> OMAP3: PM: INTC context save/restore
> OMAP3: PM: PRCM context save/restore
> OMAP3: PM: Populate scratchpad contents
> OMAP3: PM: SCM context save/restore
> OMAP3: PM: SRAM restore function
> OMAP3: PM: handle PER/NEON/CORE in idle
> OMAP3: PM: Restore MMU table entry
> OMAP3: PM: MPU off-mode support
> OMAP3: PM: CORE domain off-mode support
> OMAP3: PM: allow runtime enable/disable of OFF mode
> OMAP3: 3430SDP minimal kernel defconfig
> OMAP3: PM: CPUidle: Basic support for C1-C2
> OMAP3: PM: CPUidle: Enables state C4
> OMAP3: PM: CPUidle: Enables C3 and C5
> OMAP3: PM: CPUidle: Safe-state on bm-activity
> OMAP3: PM: CPUidle: Enable Kconfig option for OMAP
> OMAP3 SRF: Generic shared resource f/w
> OMAP3 SRF: MPU/CORE/PD latency modeling
> OMAP3 SRF: omap3 srf driver
> OMAP3 SRF: OMAP PM srf implementation
>
> Tero Kristo (9):
> OMAP: PM debug: do not print out status for meta
> powerdomains (dpll*)
> OMAP: PM debug: Add PRCM register dump support
> OMAP: PM: DMA context save / restore
> OMAP: PM: off-mode support for DMA on EMU/HS devices
> OMAP3: SRAM size fix for HS/EMU devices
> OMAP3 PM: off-mode support for HS/EMU devices
> OMAP3: PM: Enable SDRAM auto-refresh during sleep
> OMAP: SDRC: Add new register definitions for SDRAM controller
> OMAP3: PM: SDRC auto-refresh workaround for off-mode
>
> --
> 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
>
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: new PM branch: pm-20081106
2008-11-10 5:52 ` Rajendra Nayak
@ 2008-11-11 17:21 ` Kevin Hilman
2008-11-12 11:22 ` Högander Jouni
2008-11-19 12:22 ` new PM branch: pm-20081106 Rajendra Nayak
0 siblings, 2 replies; 12+ messages in thread
From: Kevin Hilman @ 2008-11-11 17:21 UTC (permalink / raw)
To: Rajendra Nayak; +Cc: linux-omap
"Rajendra Nayak" <rnayak@ti.com> writes:
> I am seeing a couple of issues on the 3430sdp with this latest pm
> branch. With the omap_3430sdp_min_defconfig I see a system freeze
> after bootup after the debug UART inactivity. Also system wide
> suspend seems to freeze. The system wide suspend freeze is seen
> even with the default (omap_3430sdp_defconfig) config. I ran into
> these issue while validating the DVFS patches and haven't really
> looked further into what might be causing these. I have a ES3.0 GP
> based SDP board.
Rajendra,
I just pushed another patch to pm-20081106 for you to try. This
reverts a commit[1] from linux-omap which is causing problems coming
out of retention.
Could you update your PM branch, and also modify the 'enabled_uarts'
settings in your board-3430sdp.c file so that only the console UART is
enabled. Doing this would help me understand what's working on SDP.
Until I get my SDP, I'll need to rely on you for this testing.
Kevin
[1] 2ac1da8c787f73f067e717408e631501ba60aabc
>> -----Original Message-----
>> From: linux-omap-owner@vger.kernel.org
>> [mailto:linux-omap-owner@vger.kernel.org] On Behalf Of Kevin Hilman
>> Sent: Friday, November 07, 2008 11:00 PM
>> To: linux-omap@vger.kernel.org
>> Subject: new PM branch: pm-20081106
>>
>> For those who want to experiment with the latest PM branch, it is now
>> available in OMAP git as branch pm-20081106
>>
>> The shortlog is below[1], but the significant thing for now is a
>> rework of how UART handles its clocks and allows idle. I also did
>> quite a bit of reordering and some restructuring.
>>
>> I've tested this on Nokia HW and the basic retention-on-idle support
>> on Beagle. I'm still waiting for my SDP to arrive, so haven't tested
>> on SDP.
>>
>> Kevin
>>
>> [1]
>> Amit Kucheria (2):
>> OMAP: PM: Typo fix for clock_allow_idle
>> HSMMC: Make driver support dynamic idle
>>
>> Jouni Hogander (5):
>> OMAP3: PM: Use pwrdm_set_next_pwrst instead of
>> set_pwrdm_state in idle loop
>> OMAP3: Do not set mpu, core, neon states if cpuidle is used
>> OMAP3: PM: Do not set next states sw to control those
>> is available
>> OMAP3: PM: Always return value in pwrdms_setup
>> OMAP3: PM: Fix wrong sequence in suspend.
>>
>> Kalle Jokiniemi (3):
>> OMAP: PM: sysfs interface for enabling voltage off in idle
>> OMAP3: PM: Fix cpu idle init sequencing
>> OMAP: SRF: Fixes to shared resource framework (Ver.3)
>>
>> Kevin Hilman (10):
>> OMAP3: PM: Add wake-up bit defintiions for CONTROL_PADCONF_X
>> OMAP3: PM: Allow UARTs to be unclocked when inactive
>> 8250: Allow platform to register PM hook
>> 8250: when waking, PM hook should be called before
>> accessing port
>> OMAP3: PM: UART: Add 8250 UART PM hook for suspend/resume
>> OMAP3: PM: UART save/restore support for OFF-mode
>> OMAP2/3: HSMMC: Ensure HSMMC is fully reset on boot
>> OMAP3: PM: CPUidle: obey enable_off_mode flag
>> OMAP3: PM: CPUidle: restrict C-states on UART activity
>> OMAP3: PM: decouple PER and CORE context save and restore
>>
>> Paul Walmsley (6):
>> OMAP2/3 PM: create the OMAP PM interface and add a
>> default OMAP PM no-op layer.
>> OMAP2/3 omapdev: add basic omapdev structure
>> OMAP242x omapdev: add OMAP242x omapdev records
>> OMAP243x omapdev: add OMAP243x omapdev records
>> OMAP3xxx omapdev: add OMAP3xxx omapdev records
>> OMAP2/3 omapdev: add code to walk the omapdev records
>>
>> Peter 'p2' De Schrijver (9):
>> OMAP: PM counter infrastructure.
>> OMAP: PM: Hook into PM counters
>> OMAP: PM: Add closures to clkdm_for_each and pwrdm_for_each.
>> OMAP: PM: Add pm-debug counters
>> OMAP: PM debug: make powerdomains use PM-debug counters
>> OMAP: PM: Add definitions for ETK pads and
>> observability registers
>> OMAP: Debug observability and ETK padconf implementation
>> OMAP: Add debug observablity (debobs) Kconfig item
>> OMAP: PM: Implement get_last_off_on_transaction_id()
>>
>> Rajendra Nayak (23):
>> OMAP3: PM: GPMC context save/restore
>> OMAP3: PM: GPIO context save/restore
>> OMAP3: PM: I2C context save/restore
>> OMAP3: PM: INTC context save/restore
>> OMAP3: PM: PRCM context save/restore
>> OMAP3: PM: Populate scratchpad contents
>> OMAP3: PM: SCM context save/restore
>> OMAP3: PM: SRAM restore function
>> OMAP3: PM: handle PER/NEON/CORE in idle
>> OMAP3: PM: Restore MMU table entry
>> OMAP3: PM: MPU off-mode support
>> OMAP3: PM: CORE domain off-mode support
>> OMAP3: PM: allow runtime enable/disable of OFF mode
>> OMAP3: 3430SDP minimal kernel defconfig
>> OMAP3: PM: CPUidle: Basic support for C1-C2
>> OMAP3: PM: CPUidle: Enables state C4
>> OMAP3: PM: CPUidle: Enables C3 and C5
>> OMAP3: PM: CPUidle: Safe-state on bm-activity
>> OMAP3: PM: CPUidle: Enable Kconfig option for OMAP
>> OMAP3 SRF: Generic shared resource f/w
>> OMAP3 SRF: MPU/CORE/PD latency modeling
>> OMAP3 SRF: omap3 srf driver
>> OMAP3 SRF: OMAP PM srf implementation
>>
>> Tero Kristo (9):
>> OMAP: PM debug: do not print out status for meta
>> powerdomains (dpll*)
>> OMAP: PM debug: Add PRCM register dump support
>> OMAP: PM: DMA context save / restore
>> OMAP: PM: off-mode support for DMA on EMU/HS devices
>> OMAP3: SRAM size fix for HS/EMU devices
>> OMAP3 PM: off-mode support for HS/EMU devices
>> OMAP3: PM: Enable SDRAM auto-refresh during sleep
>> OMAP: SDRC: Add new register definitions for SDRAM controller
>> OMAP3: PM: SDRC auto-refresh workaround for off-mode
>>
>> --
>> 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
>>
>>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: new PM branch: pm-20081106
2008-11-11 17:21 ` Kevin Hilman
@ 2008-11-12 11:22 ` Högander Jouni
2008-11-12 11:27 ` [PATCH PM-20081106] OMAP3: UART: Make sure that uart clocks are enabled when needed Jouni Hogander
2008-11-19 12:22 ` new PM branch: pm-20081106 Rajendra Nayak
1 sibling, 1 reply; 12+ messages in thread
From: Högander Jouni @ 2008-11-12 11:22 UTC (permalink / raw)
To: ext Kevin Hilman; +Cc: Rajendra Nayak, linux-omap
"ext Kevin Hilman" <khilman@deeprootsystems.com> writes:
> "Rajendra Nayak" <rnayak@ti.com> writes:
>
>> I am seeing a couple of issues on the 3430sdp with this latest pm
>> branch. With the omap_3430sdp_min_defconfig I see a system freeze
>> after bootup after the debug UART inactivity. Also system wide
>> suspend seems to freeze. The system wide suspend freeze is seen
>> even with the default (omap_3430sdp_defconfig) config. I ran into
>> these issue while validating the DVFS patches and haven't really
>> looked further into what might be causing these. I have a ES3.0 GP
>> based SDP board.
This branch is still broken, I will send a patch soon. The problem is
in uart clock handling. New implementation allows situation where uart
is tried to be used for TX when clocks are disabled.
>
> Rajendra,
>
> I just pushed another patch to pm-20081106 for you to try. This
> reverts a commit[1] from linux-omap which is causing problems coming
> out of retention.
>
> Could you update your PM branch, and also modify the 'enabled_uarts'
> settings in your board-3430sdp.c file so that only the console UART is
> enabled. Doing this would help me understand what's working on SDP.
>
> Until I get my SDP, I'll need to rely on you for this testing.
>
> Kevin
>
> [1] 2ac1da8c787f73f067e717408e631501ba60aabc
>
>>> -----Original Message-----
>>> From: linux-omap-owner@vger.kernel.org
>>> [mailto:linux-omap-owner@vger.kernel.org] On Behalf Of Kevin Hilman
>>> Sent: Friday, November 07, 2008 11:00 PM
>>> To: linux-omap@vger.kernel.org
>>> Subject: new PM branch: pm-20081106
>>>
>>> For those who want to experiment with the latest PM branch, it is now
>>> available in OMAP git as branch pm-20081106
>>>
>>> The shortlog is below[1], but the significant thing for now is a
>>> rework of how UART handles its clocks and allows idle. I also did
>>> quite a bit of reordering and some restructuring.
>>>
>>> I've tested this on Nokia HW and the basic retention-on-idle support
>>> on Beagle. I'm still waiting for my SDP to arrive, so haven't tested
>>> on SDP.
>>>
>>> Kevin
>>>
>>> [1]
>>> Amit Kucheria (2):
>>> OMAP: PM: Typo fix for clock_allow_idle
>>> HSMMC: Make driver support dynamic idle
>>>
>>> Jouni Hogander (5):
>>> OMAP3: PM: Use pwrdm_set_next_pwrst instead of
>>> set_pwrdm_state in idle loop
>>> OMAP3: Do not set mpu, core, neon states if cpuidle is used
>>> OMAP3: PM: Do not set next states sw to control those
>>> is available
>>> OMAP3: PM: Always return value in pwrdms_setup
>>> OMAP3: PM: Fix wrong sequence in suspend.
>>>
>>> Kalle Jokiniemi (3):
>>> OMAP: PM: sysfs interface for enabling voltage off in idle
>>> OMAP3: PM: Fix cpu idle init sequencing
>>> OMAP: SRF: Fixes to shared resource framework (Ver.3)
>>>
>>> Kevin Hilman (10):
>>> OMAP3: PM: Add wake-up bit defintiions for CONTROL_PADCONF_X
>>> OMAP3: PM: Allow UARTs to be unclocked when inactive
>>> 8250: Allow platform to register PM hook
>>> 8250: when waking, PM hook should be called before
>>> accessing port
>>> OMAP3: PM: UART: Add 8250 UART PM hook for suspend/resume
>>> OMAP3: PM: UART save/restore support for OFF-mode
>>> OMAP2/3: HSMMC: Ensure HSMMC is fully reset on boot
>>> OMAP3: PM: CPUidle: obey enable_off_mode flag
>>> OMAP3: PM: CPUidle: restrict C-states on UART activity
>>> OMAP3: PM: decouple PER and CORE context save and restore
>>>
>>> Paul Walmsley (6):
>>> OMAP2/3 PM: create the OMAP PM interface and add a
>>> default OMAP PM no-op layer.
>>> OMAP2/3 omapdev: add basic omapdev structure
>>> OMAP242x omapdev: add OMAP242x omapdev records
>>> OMAP243x omapdev: add OMAP243x omapdev records
>>> OMAP3xxx omapdev: add OMAP3xxx omapdev records
>>> OMAP2/3 omapdev: add code to walk the omapdev records
>>>
>>> Peter 'p2' De Schrijver (9):
>>> OMAP: PM counter infrastructure.
>>> OMAP: PM: Hook into PM counters
>>> OMAP: PM: Add closures to clkdm_for_each and pwrdm_for_each.
>>> OMAP: PM: Add pm-debug counters
>>> OMAP: PM debug: make powerdomains use PM-debug counters
>>> OMAP: PM: Add definitions for ETK pads and
>>> observability registers
>>> OMAP: Debug observability and ETK padconf implementation
>>> OMAP: Add debug observablity (debobs) Kconfig item
>>> OMAP: PM: Implement get_last_off_on_transaction_id()
>>>
>>> Rajendra Nayak (23):
>>> OMAP3: PM: GPMC context save/restore
>>> OMAP3: PM: GPIO context save/restore
>>> OMAP3: PM: I2C context save/restore
>>> OMAP3: PM: INTC context save/restore
>>> OMAP3: PM: PRCM context save/restore
>>> OMAP3: PM: Populate scratchpad contents
>>> OMAP3: PM: SCM context save/restore
>>> OMAP3: PM: SRAM restore function
>>> OMAP3: PM: handle PER/NEON/CORE in idle
>>> OMAP3: PM: Restore MMU table entry
>>> OMAP3: PM: MPU off-mode support
>>> OMAP3: PM: CORE domain off-mode support
>>> OMAP3: PM: allow runtime enable/disable of OFF mode
>>> OMAP3: 3430SDP minimal kernel defconfig
>>> OMAP3: PM: CPUidle: Basic support for C1-C2
>>> OMAP3: PM: CPUidle: Enables state C4
>>> OMAP3: PM: CPUidle: Enables C3 and C5
>>> OMAP3: PM: CPUidle: Safe-state on bm-activity
>>> OMAP3: PM: CPUidle: Enable Kconfig option for OMAP
>>> OMAP3 SRF: Generic shared resource f/w
>>> OMAP3 SRF: MPU/CORE/PD latency modeling
>>> OMAP3 SRF: omap3 srf driver
>>> OMAP3 SRF: OMAP PM srf implementation
>>>
>>> Tero Kristo (9):
>>> OMAP: PM debug: do not print out status for meta
>>> powerdomains (dpll*)
>>> OMAP: PM debug: Add PRCM register dump support
>>> OMAP: PM: DMA context save / restore
>>> OMAP: PM: off-mode support for DMA on EMU/HS devices
>>> OMAP3: SRAM size fix for HS/EMU devices
>>> OMAP3 PM: off-mode support for HS/EMU devices
>>> OMAP3: PM: Enable SDRAM auto-refresh during sleep
>>> OMAP: SDRC: Add new register definitions for SDRAM controller
>>> OMAP3: PM: SDRC auto-refresh workaround for off-mode
>>>
>>> --
>>> 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
>>>
>>>
> --
> 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
--
Jouni Högander
--
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
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH PM-20081106] OMAP3: UART: Make sure that uart clocks are enabled when needed
2008-11-12 11:22 ` Högander Jouni
@ 2008-11-12 11:27 ` Jouni Hogander
2008-11-12 13:13 ` Högander Jouni
2008-11-12 20:55 ` Kevin Hilman
0 siblings, 2 replies; 12+ messages in thread
From: Jouni Hogander @ 2008-11-12 11:27 UTC (permalink / raw)
To: linux-omap
Current implementation makes it possible that printouts are
written into UART while its clocks are disabled. This causes freeze.
This patch contains possible fix for this.
Signed-off-by: Jouni Hogander <jouni.hogander@nokia.com>
---
arch/arm/mach-omap2/pm34xx.c | 6 ++++++
arch/arm/mach-omap2/serial.c | 30 ++++++++++++++++++++++++++++++
arch/arm/plat-omap/include/mach/serial.h | 2 ++
3 files changed, 38 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index d480c39..3838a19 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -320,6 +320,7 @@ void omap_sram_idle(void)
/* PER */
per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
if (per_next_state < PWRDM_POWER_ON) {
+ omap_uart_prepare_idle(2);
omap2_gpio_prepare_for_retention();
if (per_next_state == PWRDM_POWER_OFF)
omap3_per_save_context();
@@ -328,6 +329,8 @@ void omap_sram_idle(void)
/* CORE */
core_next_state = pwrdm_read_next_pwrst(core_pwrdm);
if (core_next_state < PWRDM_POWER_ON) {
+ omap_uart_prepare_idle(0);
+ omap_uart_prepare_idle(1);
if (core_next_state == PWRDM_POWER_OFF) {
prm_set_mod_reg_bits(OMAP3430_AUTO_OFF,
OMAP3430_GR_MOD,
@@ -386,6 +389,8 @@ void omap_sram_idle(void)
prm_clear_mod_reg_bits(OMAP3430_AUTO_OFF,
OMAP3430_GR_MOD,
OMAP3_PRM_VOLTCTRL_OFFSET);
+ omap_uart_resume_idle(0);
+ omap_uart_resume_idle(1);
}
/* PER */
@@ -394,6 +399,7 @@ void omap_sram_idle(void)
if (per_prev_state == PWRDM_POWER_OFF)
omap3_per_restore_context();
omap2_gpio_resume_after_retention();
+ omap_uart_resume_idle(2);
}
/* Enable smartreflex after WFI */
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
index 65cce87..ef30d8d 100644
--- a/arch/arm/mach-omap2/serial.c
+++ b/arch/arm/mach-omap2/serial.c
@@ -249,6 +249,36 @@ static void omap_uart_idle_timer(unsigned long data)
omap_uart_allow_sleep(uart);
}
+void omap_uart_prepare_idle(int num)
+{
+ struct omap_uart_state *uart;
+
+ if (!clocks_off_while_idle)
+ return;
+
+ list_for_each_entry(uart, &uart_list, node) {
+ if (num == uart->num && uart->can_sleep) {
+ omap_uart_disable_clocks(uart);
+ return;
+ }
+ }
+}
+
+void omap_uart_resume_idle(int num)
+{
+ struct omap_uart_state *uart;
+
+ if (!clocks_off_while_idle)
+ return;
+
+ list_for_each_entry(uart, &uart_list, node) {
+ if (num == uart->num) {
+ omap_uart_enable_clocks(uart);
+ return;
+ }
+ }
+}
+
void omap_uart_check_wakeup(void)
{
struct omap_uart_state *uart;
diff --git a/arch/arm/plat-omap/include/mach/serial.h b/arch/arm/plat-omap/include/mach/serial.h
index 11ff540..254a775 100644
--- a/arch/arm/plat-omap/include/mach/serial.h
+++ b/arch/arm/plat-omap/include/mach/serial.h
@@ -44,6 +44,8 @@
extern void omap_serial_init(void);
extern int omap_uart_can_sleep(void);
extern void omap_uart_check_wakeup(void);
+extern void omap_uart_prepare_idle(int num);
+extern void omap_uart_resume_idle(int num);
#endif
#endif
--
1.6.0.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH PM-20081106] OMAP3: UART: Make sure that uart clocks are enabled when needed
2008-11-12 11:27 ` [PATCH PM-20081106] OMAP3: UART: Make sure that uart clocks are enabled when needed Jouni Hogander
@ 2008-11-12 13:13 ` Högander Jouni
2008-11-12 13:25 ` Sriram V
2008-11-12 20:55 ` Kevin Hilman
1 sibling, 1 reply; 12+ messages in thread
From: Högander Jouni @ 2008-11-12 13:13 UTC (permalink / raw)
To: linux-omap
"ext Jouni Hogander" <jouni.hogander@nokia.com> writes:
> Current implementation makes it possible that printouts are
> written into UART while its clocks are disabled. This causes freeze.
Now I got how this new uart clock handling works. Event thought this
fix is not too sensible it actually does what is needed.
So the problem is that uart clocks are enabled in prcm_interrupt. Now
if some other interrupt handler is run before prcm_interrupt_handler
and it tries to printout something to uart -> system freezes.
Kevin, you should ensure some way that uart clocks are enabled right
away after wakeup. This patch presents one possibile
implementation. Another way could be to move uart_check_wakeup to be
run in idle loop rather than in interrupt handler.
>
> This patch contains possible fix for this.
>
> Signed-off-by: Jouni Hogander <jouni.hogander@nokia.com>
> ---
> arch/arm/mach-omap2/pm34xx.c | 6 ++++++
> arch/arm/mach-omap2/serial.c | 30 ++++++++++++++++++++++++++++++
> arch/arm/plat-omap/include/mach/serial.h | 2 ++
> 3 files changed, 38 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
> index d480c39..3838a19 100644
> --- a/arch/arm/mach-omap2/pm34xx.c
> +++ b/arch/arm/mach-omap2/pm34xx.c
> @@ -320,6 +320,7 @@ void omap_sram_idle(void)
> /* PER */
> per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
> if (per_next_state < PWRDM_POWER_ON) {
> + omap_uart_prepare_idle(2);
> omap2_gpio_prepare_for_retention();
> if (per_next_state == PWRDM_POWER_OFF)
> omap3_per_save_context();
> @@ -328,6 +329,8 @@ void omap_sram_idle(void)
> /* CORE */
> core_next_state = pwrdm_read_next_pwrst(core_pwrdm);
> if (core_next_state < PWRDM_POWER_ON) {
> + omap_uart_prepare_idle(0);
> + omap_uart_prepare_idle(1);
> if (core_next_state == PWRDM_POWER_OFF) {
> prm_set_mod_reg_bits(OMAP3430_AUTO_OFF,
> OMAP3430_GR_MOD,
> @@ -386,6 +389,8 @@ void omap_sram_idle(void)
> prm_clear_mod_reg_bits(OMAP3430_AUTO_OFF,
> OMAP3430_GR_MOD,
> OMAP3_PRM_VOLTCTRL_OFFSET);
> + omap_uart_resume_idle(0);
> + omap_uart_resume_idle(1);
> }
>
> /* PER */
> @@ -394,6 +399,7 @@ void omap_sram_idle(void)
> if (per_prev_state == PWRDM_POWER_OFF)
> omap3_per_restore_context();
> omap2_gpio_resume_after_retention();
> + omap_uart_resume_idle(2);
> }
>
> /* Enable smartreflex after WFI */
> diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
> index 65cce87..ef30d8d 100644
> --- a/arch/arm/mach-omap2/serial.c
> +++ b/arch/arm/mach-omap2/serial.c
> @@ -249,6 +249,36 @@ static void omap_uart_idle_timer(unsigned long data)
> omap_uart_allow_sleep(uart);
> }
>
> +void omap_uart_prepare_idle(int num)
> +{
> + struct omap_uart_state *uart;
> +
> + if (!clocks_off_while_idle)
> + return;
> +
> + list_for_each_entry(uart, &uart_list, node) {
> + if (num == uart->num && uart->can_sleep) {
> + omap_uart_disable_clocks(uart);
> + return;
> + }
> + }
> +}
> +
> +void omap_uart_resume_idle(int num)
> +{
> + struct omap_uart_state *uart;
> +
> + if (!clocks_off_while_idle)
> + return;
> +
> + list_for_each_entry(uart, &uart_list, node) {
> + if (num == uart->num) {
> + omap_uart_enable_clocks(uart);
> + return;
> + }
> + }
> +}
> +
> void omap_uart_check_wakeup(void)
> {
> struct omap_uart_state *uart;
> diff --git a/arch/arm/plat-omap/include/mach/serial.h b/arch/arm/plat-omap/include/mach/serial.h
> index 11ff540..254a775 100644
> --- a/arch/arm/plat-omap/include/mach/serial.h
> +++ b/arch/arm/plat-omap/include/mach/serial.h
> @@ -44,6 +44,8 @@
> extern void omap_serial_init(void);
> extern int omap_uart_can_sleep(void);
> extern void omap_uart_check_wakeup(void);
> +extern void omap_uart_prepare_idle(int num);
> +extern void omap_uart_resume_idle(int num);
> #endif
>
> #endif
> --
> 1.6.0.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
--
Jouni Högander
--
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
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH PM-20081106] OMAP3: UART: Make sure that uart clocks are enabled when needed
2008-11-12 13:13 ` Högander Jouni
@ 2008-11-12 13:25 ` Sriram V
2008-11-12 13:35 ` Högander Jouni
0 siblings, 1 reply; 12+ messages in thread
From: Sriram V @ 2008-11-12 13:25 UTC (permalink / raw)
To: Högander Jouni; +Cc: linux-omap
Hi jouni,
Does the branch "PM-20081106" work for you?
When i try to do a "echo mem > /sys/power/state" on omap3evm.
the system hangs. Does Suspend-Resume work on this branch?
[root@OMAP3EVM /proc]# echo mem > /sys/power/state
<6>PM: Syncing filesystems ... PM: Syncing filesystems ... done.
done.
Freezing user space processes ... Freezing user space processes ...
(elapsed 0.00 seconds) (elapsed 0.00 seconds) done.
done.
Freezing remaining freezable tasks ... Freezing remaining freezable
tasks ... (elapsed 0.00 seconds) (elapsed 0.00 seconds) done.done.
Suspending console(s) (use no_console_suspend to debug)
Suspending console(s) (use no_console_suspend to debug)
---- system hangs----
With Regards,
Sriram
On Wed, Nov 12, 2008 at 6:43 PM, Högander Jouni
<jouni.hogander@nokia.com> wrote:
> "ext Jouni Hogander" <jouni.hogander@nokia.com> writes:
>
>> Current implementation makes it possible that printouts are
>> written into UART while its clocks are disabled. This causes freeze.
>
> Now I got how this new uart clock handling works. Event thought this
> fix is not too sensible it actually does what is needed.
>
> So the problem is that uart clocks are enabled in prcm_interrupt. Now
> if some other interrupt handler is run before prcm_interrupt_handler
> and it tries to printout something to uart -> system freezes.
>
> Kevin, you should ensure some way that uart clocks are enabled right
> away after wakeup. This patch presents one possibile
> implementation. Another way could be to move uart_check_wakeup to be
> run in idle loop rather than in interrupt handler.
>
>>
>> This patch contains possible fix for this.
>>
>> Signed-off-by: Jouni Hogander <jouni.hogander@nokia.com>
>> ---
>> arch/arm/mach-omap2/pm34xx.c | 6 ++++++
>> arch/arm/mach-omap2/serial.c | 30 ++++++++++++++++++++++++++++++
>> arch/arm/plat-omap/include/mach/serial.h | 2 ++
>> 3 files changed, 38 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
>> index d480c39..3838a19 100644
>> --- a/arch/arm/mach-omap2/pm34xx.c
>> +++ b/arch/arm/mach-omap2/pm34xx.c
>> @@ -320,6 +320,7 @@ void omap_sram_idle(void)
>> /* PER */
>> per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
>> if (per_next_state < PWRDM_POWER_ON) {
>> + omap_uart_prepare_idle(2);
>> omap2_gpio_prepare_for_retention();
>> if (per_next_state == PWRDM_POWER_OFF)
>> omap3_per_save_context();
>> @@ -328,6 +329,8 @@ void omap_sram_idle(void)
>> /* CORE */
>> core_next_state = pwrdm_read_next_pwrst(core_pwrdm);
>> if (core_next_state < PWRDM_POWER_ON) {
>> + omap_uart_prepare_idle(0);
>> + omap_uart_prepare_idle(1);
>> if (core_next_state == PWRDM_POWER_OFF) {
>> prm_set_mod_reg_bits(OMAP3430_AUTO_OFF,
>> OMAP3430_GR_MOD,
>> @@ -386,6 +389,8 @@ void omap_sram_idle(void)
>> prm_clear_mod_reg_bits(OMAP3430_AUTO_OFF,
>> OMAP3430_GR_MOD,
>> OMAP3_PRM_VOLTCTRL_OFFSET);
>> + omap_uart_resume_idle(0);
>> + omap_uart_resume_idle(1);
>> }
>>
>> /* PER */
>> @@ -394,6 +399,7 @@ void omap_sram_idle(void)
>> if (per_prev_state == PWRDM_POWER_OFF)
>> omap3_per_restore_context();
>> omap2_gpio_resume_after_retention();
>> + omap_uart_resume_idle(2);
>> }
>>
>> /* Enable smartreflex after WFI */
>> diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
>> index 65cce87..ef30d8d 100644
>> --- a/arch/arm/mach-omap2/serial.c
>> +++ b/arch/arm/mach-omap2/serial.c
>> @@ -249,6 +249,36 @@ static void omap_uart_idle_timer(unsigned long data)
>> omap_uart_allow_sleep(uart);
>> }
>>
>> +void omap_uart_prepare_idle(int num)
>> +{
>> + struct omap_uart_state *uart;
>> +
>> + if (!clocks_off_while_idle)
>> + return;
>> +
>> + list_for_each_entry(uart, &uart_list, node) {
>> + if (num == uart->num && uart->can_sleep) {
>> + omap_uart_disable_clocks(uart);
>> + return;
>> + }
>> + }
>> +}
>> +
>> +void omap_uart_resume_idle(int num)
>> +{
>> + struct omap_uart_state *uart;
>> +
>> + if (!clocks_off_while_idle)
>> + return;
>> +
>> + list_for_each_entry(uart, &uart_list, node) {
>> + if (num == uart->num) {
>> + omap_uart_enable_clocks(uart);
>> + return;
>> + }
>> + }
>> +}
>> +
>> void omap_uart_check_wakeup(void)
>> {
>> struct omap_uart_state *uart;
>> diff --git a/arch/arm/plat-omap/include/mach/serial.h b/arch/arm/plat-omap/include/mach/serial.h
>> index 11ff540..254a775 100644
>> --- a/arch/arm/plat-omap/include/mach/serial.h
>> +++ b/arch/arm/plat-omap/include/mach/serial.h
>> @@ -44,6 +44,8 @@
>> extern void omap_serial_init(void);
>> extern int omap_uart_can_sleep(void);
>> extern void omap_uart_check_wakeup(void);
>> +extern void omap_uart_prepare_idle(int num);
>> +extern void omap_uart_resume_idle(int num);
>> #endif
>>
>> #endif
>> --
>> 1.6.0.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
>
> --
> Jouni Högander
>
> --
> 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
>
--
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
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH PM-20081106] OMAP3: UART: Make sure that uart clocks are enabled when needed
2008-11-12 13:25 ` Sriram V
@ 2008-11-12 13:35 ` Högander Jouni
[not found] ` <8bf247760811120540k52fb6132u4b61e28407b799ec@mail.gmail.com>
0 siblings, 1 reply; 12+ messages in thread
From: Högander Jouni @ 2008-11-12 13:35 UTC (permalink / raw)
To: ext Sriram V; +Cc: linux-omap
"ext Sriram V" <vshrirama@gmail.com> writes:
> Hi jouni,
> Does the branch "PM-20081106" work for you?
>
> When i try to do a "echo mem > /sys/power/state" on omap3evm.
>
> the system hangs. Does Suspend-Resume work on this branch?
Yes, but you need to apply this patch (or something similiar). Have
you done it and still seeing problems?
>
>
> [root@OMAP3EVM /proc]# echo mem > /sys/power/state
> <6>PM: Syncing filesystems ... PM: Syncing filesystems ... done.
> done.
> Freezing user space processes ... Freezing user space processes ...
> (elapsed 0.00 seconds) (elapsed 0.00 seconds) done.
> done.
> Freezing remaining freezable tasks ... Freezing remaining freezable
> tasks ... (elapsed 0.00 seconds) (elapsed 0.00 seconds) done.done.
>
> Suspending console(s) (use no_console_suspend to debug)
> Suspending console(s) (use no_console_suspend to debug)
>
> ---- system hangs----
>
>
> With Regards,
> Sriram
>
>
>
> On Wed, Nov 12, 2008 at 6:43 PM, Högander Jouni
> <jouni.hogander@nokia.com> wrote:
>> "ext Jouni Hogander" <jouni.hogander@nokia.com> writes:
>>
>>> Current implementation makes it possible that printouts are
>>> written into UART while its clocks are disabled. This causes freeze.
>>
>> Now I got how this new uart clock handling works. Event thought this
>> fix is not too sensible it actually does what is needed.
>>
>> So the problem is that uart clocks are enabled in prcm_interrupt. Now
>> if some other interrupt handler is run before prcm_interrupt_handler
>> and it tries to printout something to uart -> system freezes.
>>
>> Kevin, you should ensure some way that uart clocks are enabled right
>> away after wakeup. This patch presents one possibile
>> implementation. Another way could be to move uart_check_wakeup to be
>> run in idle loop rather than in interrupt handler.
>>
>>>
>>> This patch contains possible fix for this.
>>>
>>> Signed-off-by: Jouni Hogander <jouni.hogander@nokia.com>
>>> ---
>>> arch/arm/mach-omap2/pm34xx.c | 6 ++++++
>>> arch/arm/mach-omap2/serial.c | 30 ++++++++++++++++++++++++++++++
>>> arch/arm/plat-omap/include/mach/serial.h | 2 ++
>>> 3 files changed, 38 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
>>> index d480c39..3838a19 100644
>>> --- a/arch/arm/mach-omap2/pm34xx.c
>>> +++ b/arch/arm/mach-omap2/pm34xx.c
>>> @@ -320,6 +320,7 @@ void omap_sram_idle(void)
>>> /* PER */
>>> per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
>>> if (per_next_state < PWRDM_POWER_ON) {
>>> + omap_uart_prepare_idle(2);
>>> omap2_gpio_prepare_for_retention();
>>> if (per_next_state == PWRDM_POWER_OFF)
>>> omap3_per_save_context();
>>> @@ -328,6 +329,8 @@ void omap_sram_idle(void)
>>> /* CORE */
>>> core_next_state = pwrdm_read_next_pwrst(core_pwrdm);
>>> if (core_next_state < PWRDM_POWER_ON) {
>>> + omap_uart_prepare_idle(0);
>>> + omap_uart_prepare_idle(1);
>>> if (core_next_state == PWRDM_POWER_OFF) {
>>> prm_set_mod_reg_bits(OMAP3430_AUTO_OFF,
>>> OMAP3430_GR_MOD,
>>> @@ -386,6 +389,8 @@ void omap_sram_idle(void)
>>> prm_clear_mod_reg_bits(OMAP3430_AUTO_OFF,
>>> OMAP3430_GR_MOD,
>>> OMAP3_PRM_VOLTCTRL_OFFSET);
>>> + omap_uart_resume_idle(0);
>>> + omap_uart_resume_idle(1);
>>> }
>>>
>>> /* PER */
>>> @@ -394,6 +399,7 @@ void omap_sram_idle(void)
>>> if (per_prev_state == PWRDM_POWER_OFF)
>>> omap3_per_restore_context();
>>> omap2_gpio_resume_after_retention();
>>> + omap_uart_resume_idle(2);
>>> }
>>>
>>> /* Enable smartreflex after WFI */
>>> diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
>>> index 65cce87..ef30d8d 100644
>>> --- a/arch/arm/mach-omap2/serial.c
>>> +++ b/arch/arm/mach-omap2/serial.c
>>> @@ -249,6 +249,36 @@ static void omap_uart_idle_timer(unsigned long data)
>>> omap_uart_allow_sleep(uart);
>>> }
>>>
>>> +void omap_uart_prepare_idle(int num)
>>> +{
>>> + struct omap_uart_state *uart;
>>> +
>>> + if (!clocks_off_while_idle)
>>> + return;
>>> +
>>> + list_for_each_entry(uart, &uart_list, node) {
>>> + if (num == uart->num && uart->can_sleep) {
>>> + omap_uart_disable_clocks(uart);
>>> + return;
>>> + }
>>> + }
>>> +}
>>> +
>>> +void omap_uart_resume_idle(int num)
>>> +{
>>> + struct omap_uart_state *uart;
>>> +
>>> + if (!clocks_off_while_idle)
>>> + return;
>>> +
>>> + list_for_each_entry(uart, &uart_list, node) {
>>> + if (num == uart->num) {
>>> + omap_uart_enable_clocks(uart);
>>> + return;
>>> + }
>>> + }
>>> +}
>>> +
>>> void omap_uart_check_wakeup(void)
>>> {
>>> struct omap_uart_state *uart;
>>> diff --git a/arch/arm/plat-omap/include/mach/serial.h b/arch/arm/plat-omap/include/mach/serial.h
>>> index 11ff540..254a775 100644
>>> --- a/arch/arm/plat-omap/include/mach/serial.h
>>> +++ b/arch/arm/plat-omap/include/mach/serial.h
>>> @@ -44,6 +44,8 @@
>>> extern void omap_serial_init(void);
>>> extern int omap_uart_can_sleep(void);
>>> extern void omap_uart_check_wakeup(void);
>>> +extern void omap_uart_prepare_idle(int num);
>>> +extern void omap_uart_resume_idle(int num);
>>> #endif
>>>
>>> #endif
>>> --
>>> 1.6.0.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
>>
>> --
>> Jouni Högander
>>
>> --
>> 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
>>
--
Jouni Högander
--
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
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH PM-20081106] OMAP3: UART: Make sure that uart clocks are enabled when needed
[not found] ` <8bf247760811120540k52fb6132u4b61e28407b799ec@mail.gmail.com>
@ 2008-11-12 15:58 ` Sriram V
2008-11-12 17:20 ` Kevin Hilman
0 siblings, 1 reply; 12+ messages in thread
From: Sriram V @ 2008-11-12 15:58 UTC (permalink / raw)
To: linux-omap
Hi,
I just tried to find the source of the problem with PM-20081106 branch.
Am trying to debug this issue now.
I tried to do a check to find which commit caused the problem.
I find that it is something to do with uart pm support.
The patch commit 1e274e917472dba6c216b67c3afb3e7abe6e77e4
OMAP3: PM: Allow UARTs to be unclocked when inactive
introduces this issue.
Regards,
sriram
On Wed, Nov 12, 2008 at 7:10 PM, Sriram V <vshrirama@gmail.com> wrote:
> Hi jouni,
> I have disabled all the drivers except i2c and network also.
> i have applied your patch and still seeing problems.
>
> doing a echo mem > /sys/power/state makes the system to hang.
>
> does this work for you?
>
>
> Regards,
> sriram
>
>
> On Wed, Nov 12, 2008 at 7:05 PM, Högander Jouni
> <jouni.hogander@nokia.com> wrote:
>> "ext Sriram V" <vshrirama@gmail.com> writes:
>>
>>> Hi jouni,
>>> Does the branch "PM-20081106" work for you?
>>>
>>> When i try to do a "echo mem > /sys/power/state" on omap3evm.
>>>
>>> the system hangs. Does Suspend-Resume work on this branch?
>>
>> Yes, but you need to apply this patch (or something similiar). Have
>> you done it and still seeing problems?
>>
>>>
>>>
>>> [root@OMAP3EVM /proc]# echo mem > /sys/power/state
>>> <6>PM: Syncing filesystems ... PM: Syncing filesystems ... done.
>>> done.
>>> Freezing user space processes ... Freezing user space processes ...
>>> (elapsed 0.00 seconds) (elapsed 0.00 seconds) done.
>>> done.
>>> Freezing remaining freezable tasks ... Freezing remaining freezable
>>> tasks ... (elapsed 0.00 seconds) (elapsed 0.00 seconds) done.done.
>>>
>>> Suspending console(s) (use no_console_suspend to debug)
>>> Suspending console(s) (use no_console_suspend to debug)
>>>
>>> ---- system hangs----
>>>
>>>
>>> With Regards,
>>> Sriram
>>>
>>>
>>>
>>> On Wed, Nov 12, 2008 at 6:43 PM, Högander Jouni
>>> <jouni.hogander@nokia.com> wrote:
>>>> "ext Jouni Hogander" <jouni.hogander@nokia.com> writes:
>>>>
>>>>> Current implementation makes it possible that printouts are
>>>>> written into UART while its clocks are disabled. This causes freeze.
>>>>
>>>> Now I got how this new uart clock handling works. Event thought this
>>>> fix is not too sensible it actually does what is needed.
>>>>
>>>> So the problem is that uart clocks are enabled in prcm_interrupt. Now
>>>> if some other interrupt handler is run before prcm_interrupt_handler
>>>> and it tries to printout something to uart -> system freezes.
>>>>
>>>> Kevin, you should ensure some way that uart clocks are enabled right
>>>> away after wakeup. This patch presents one possibile
>>>> implementation. Another way could be to move uart_check_wakeup to be
>>>> run in idle loop rather than in interrupt handler.
>>>>
>>>>>
>>>>> This patch contains possible fix for this.
>>>>>
>>>>> Signed-off-by: Jouni Hogander <jouni.hogander@nokia.com>
>>>>> ---
>>>>> arch/arm/mach-omap2/pm34xx.c | 6 ++++++
>>>>> arch/arm/mach-omap2/serial.c | 30 ++++++++++++++++++++++++++++++
>>>>> arch/arm/plat-omap/include/mach/serial.h | 2 ++
>>>>> 3 files changed, 38 insertions(+), 0 deletions(-)
>>>>>
>>>>> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
>>>>> index d480c39..3838a19 100644
>>>>> --- a/arch/arm/mach-omap2/pm34xx.c
>>>>> +++ b/arch/arm/mach-omap2/pm34xx.c
>>>>> @@ -320,6 +320,7 @@ void omap_sram_idle(void)
>>>>> /* PER */
>>>>> per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
>>>>> if (per_next_state < PWRDM_POWER_ON) {
>>>>> + omap_uart_prepare_idle(2);
>>>>> omap2_gpio_prepare_for_retention();
>>>>> if (per_next_state == PWRDM_POWER_OFF)
>>>>> omap3_per_save_context();
>>>>> @@ -328,6 +329,8 @@ void omap_sram_idle(void)
>>>>> /* CORE */
>>>>> core_next_state = pwrdm_read_next_pwrst(core_pwrdm);
>>>>> if (core_next_state < PWRDM_POWER_ON) {
>>>>> + omap_uart_prepare_idle(0);
>>>>> + omap_uart_prepare_idle(1);
>>>>> if (core_next_state == PWRDM_POWER_OFF) {
>>>>> prm_set_mod_reg_bits(OMAP3430_AUTO_OFF,
>>>>> OMAP3430_GR_MOD,
>>>>> @@ -386,6 +389,8 @@ void omap_sram_idle(void)
>>>>> prm_clear_mod_reg_bits(OMAP3430_AUTO_OFF,
>>>>> OMAP3430_GR_MOD,
>>>>> OMAP3_PRM_VOLTCTRL_OFFSET);
>>>>> + omap_uart_resume_idle(0);
>>>>> + omap_uart_resume_idle(1);
>>>>> }
>>>>>
>>>>> /* PER */
>>>>> @@ -394,6 +399,7 @@ void omap_sram_idle(void)
>>>>> if (per_prev_state == PWRDM_POWER_OFF)
>>>>> omap3_per_restore_context();
>>>>> omap2_gpio_resume_after_retention();
>>>>> + omap_uart_resume_idle(2);
>>>>> }
>>>>>
>>>>> /* Enable smartreflex after WFI */
>>>>> diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
>>>>> index 65cce87..ef30d8d 100644
>>>>> --- a/arch/arm/mach-omap2/serial.c
>>>>> +++ b/arch/arm/mach-omap2/serial.c
>>>>> @@ -249,6 +249,36 @@ static void omap_uart_idle_timer(unsigned long data)
>>>>> omap_uart_allow_sleep(uart);
>>>>> }
>>>>>
>>>>> +void omap_uart_prepare_idle(int num)
>>>>> +{
>>>>> + struct omap_uart_state *uart;
>>>>> +
>>>>> + if (!clocks_off_while_idle)
>>>>> + return;
>>>>> +
>>>>> + list_for_each_entry(uart, &uart_list, node) {
>>>>> + if (num == uart->num && uart->can_sleep) {
>>>>> + omap_uart_disable_clocks(uart);
>>>>> + return;
>>>>> + }
>>>>> + }
>>>>> +}
>>>>> +
>>>>> +void omap_uart_resume_idle(int num)
>>>>> +{
>>>>> + struct omap_uart_state *uart;
>>>>> +
>>>>> + if (!clocks_off_while_idle)
>>>>> + return;
>>>>> +
>>>>> + list_for_each_entry(uart, &uart_list, node) {
>>>>> + if (num == uart->num) {
>>>>> + omap_uart_enable_clocks(uart);
>>>>> + return;
>>>>> + }
>>>>> + }
>>>>> +}
>>>>> +
>>>>> void omap_uart_check_wakeup(void)
>>>>> {
>>>>> struct omap_uart_state *uart;
>>>>> diff --git a/arch/arm/plat-omap/include/mach/serial.h b/arch/arm/plat-omap/include/mach/serial.h
>>>>> index 11ff540..254a775 100644
>>>>> --- a/arch/arm/plat-omap/include/mach/serial.h
>>>>> +++ b/arch/arm/plat-omap/include/mach/serial.h
>>>>> @@ -44,6 +44,8 @@
>>>>> extern void omap_serial_init(void);
>>>>> extern int omap_uart_can_sleep(void);
>>>>> extern void omap_uart_check_wakeup(void);
>>>>> +extern void omap_uart_prepare_idle(int num);
>>>>> +extern void omap_uart_resume_idle(int num);
>>>>> #endif
>>>>>
>>>>> #endif
>>>>> --
>>>>> 1.6.0.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
>>>>
>>>> --
>>>> Jouni Högander
>>>>
>>>> --
>>>> 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
>>>>
>>
>> --
>> Jouni Högander
>>
>>
>
--
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
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH PM-20081106] OMAP3: UART: Make sure that uart clocks are enabled when needed
2008-11-12 15:58 ` Sriram V
@ 2008-11-12 17:20 ` Kevin Hilman
0 siblings, 0 replies; 12+ messages in thread
From: Kevin Hilman @ 2008-11-12 17:20 UTC (permalink / raw)
To: Sriram V; +Cc: linux-omap
"Sriram V" <vshrirama@gmail.com> writes:
> Hi,
> I just tried to find the source of the problem with PM-20081106 branch.
> Am trying to debug this issue now.
>
>
> I tried to do a check to find which commit caused the problem.
> I find that it is something to do with uart pm support.
>
>
> The patch commit 1e274e917472dba6c216b67c3afb3e7abe6e77e4
> OMAP3: PM: Allow UARTs to be unclocked when inactive
> introduces this issue.
>
Sriram,
Can you try Jouni's patch at the beginning of this thread on top of
pm-20081106?
Kevin
>
>
>
>
> On Wed, Nov 12, 2008 at 7:10 PM, Sriram V <vshrirama@gmail.com> wrote:
>> Hi jouni,
>> I have disabled all the drivers except i2c and network also.
>> i have applied your patch and still seeing problems.
>>
>> doing a echo mem > /sys/power/state makes the system to hang.
>>
>> does this work for you?
>>
>>
>> Regards,
>> sriram
>>
>>
>> On Wed, Nov 12, 2008 at 7:05 PM, Högander Jouni
>> <jouni.hogander@nokia.com> wrote:
>>> "ext Sriram V" <vshrirama@gmail.com> writes:
>>>
>>>> Hi jouni,
>>>> Does the branch "PM-20081106" work for you?
>>>>
>>>> When i try to do a "echo mem > /sys/power/state" on omap3evm.
>>>>
>>>> the system hangs. Does Suspend-Resume work on this branch?
>>>
>>> Yes, but you need to apply this patch (or something similiar). Have
>>> you done it and still seeing problems?
>>>
>>>>
>>>>
>>>> [root@OMAP3EVM /proc]# echo mem > /sys/power/state
>>>> <6>PM: Syncing filesystems ... PM: Syncing filesystems ... done.
>>>> done.
>>>> Freezing user space processes ... Freezing user space processes ...
>>>> (elapsed 0.00 seconds) (elapsed 0.00 seconds) done.
>>>> done.
>>>> Freezing remaining freezable tasks ... Freezing remaining freezable
>>>> tasks ... (elapsed 0.00 seconds) (elapsed 0.00 seconds) done.done.
>>>>
>>>> Suspending console(s) (use no_console_suspend to debug)
>>>> Suspending console(s) (use no_console_suspend to debug)
>>>>
>>>> ---- system hangs----
>>>>
>>>>
>>>> With Regards,
>>>> Sriram
>>>>
>>>>
>>>>
>>>> On Wed, Nov 12, 2008 at 6:43 PM, Högander Jouni
>>>> <jouni.hogander@nokia.com> wrote:
>>>>> "ext Jouni Hogander" <jouni.hogander@nokia.com> writes:
>>>>>
>>>>>> Current implementation makes it possible that printouts are
>>>>>> written into UART while its clocks are disabled. This causes freeze.
>>>>>
>>>>> Now I got how this new uart clock handling works. Event thought this
>>>>> fix is not too sensible it actually does what is needed.
>>>>>
>>>>> So the problem is that uart clocks are enabled in prcm_interrupt. Now
>>>>> if some other interrupt handler is run before prcm_interrupt_handler
>>>>> and it tries to printout something to uart -> system freezes.
>>>>>
>>>>> Kevin, you should ensure some way that uart clocks are enabled right
>>>>> away after wakeup. This patch presents one possibile
>>>>> implementation. Another way could be to move uart_check_wakeup to be
>>>>> run in idle loop rather than in interrupt handler.
>>>>>
>>>>>>
>>>>>> This patch contains possible fix for this.
>>>>>>
>>>>>> Signed-off-by: Jouni Hogander <jouni.hogander@nokia.com>
>>>>>> ---
>>>>>> arch/arm/mach-omap2/pm34xx.c | 6 ++++++
>>>>>> arch/arm/mach-omap2/serial.c | 30 ++++++++++++++++++++++++++++++
>>>>>> arch/arm/plat-omap/include/mach/serial.h | 2 ++
>>>>>> 3 files changed, 38 insertions(+), 0 deletions(-)
>>>>>>
>>>>>> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
>>>>>> index d480c39..3838a19 100644
>>>>>> --- a/arch/arm/mach-omap2/pm34xx.c
>>>>>> +++ b/arch/arm/mach-omap2/pm34xx.c
>>>>>> @@ -320,6 +320,7 @@ void omap_sram_idle(void)
>>>>>> /* PER */
>>>>>> per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
>>>>>> if (per_next_state < PWRDM_POWER_ON) {
>>>>>> + omap_uart_prepare_idle(2);
>>>>>> omap2_gpio_prepare_for_retention();
>>>>>> if (per_next_state == PWRDM_POWER_OFF)
>>>>>> omap3_per_save_context();
>>>>>> @@ -328,6 +329,8 @@ void omap_sram_idle(void)
>>>>>> /* CORE */
>>>>>> core_next_state = pwrdm_read_next_pwrst(core_pwrdm);
>>>>>> if (core_next_state < PWRDM_POWER_ON) {
>>>>>> + omap_uart_prepare_idle(0);
>>>>>> + omap_uart_prepare_idle(1);
>>>>>> if (core_next_state == PWRDM_POWER_OFF) {
>>>>>> prm_set_mod_reg_bits(OMAP3430_AUTO_OFF,
>>>>>> OMAP3430_GR_MOD,
>>>>>> @@ -386,6 +389,8 @@ void omap_sram_idle(void)
>>>>>> prm_clear_mod_reg_bits(OMAP3430_AUTO_OFF,
>>>>>> OMAP3430_GR_MOD,
>>>>>> OMAP3_PRM_VOLTCTRL_OFFSET);
>>>>>> + omap_uart_resume_idle(0);
>>>>>> + omap_uart_resume_idle(1);
>>>>>> }
>>>>>>
>>>>>> /* PER */
>>>>>> @@ -394,6 +399,7 @@ void omap_sram_idle(void)
>>>>>> if (per_prev_state == PWRDM_POWER_OFF)
>>>>>> omap3_per_restore_context();
>>>>>> omap2_gpio_resume_after_retention();
>>>>>> + omap_uart_resume_idle(2);
>>>>>> }
>>>>>>
>>>>>> /* Enable smartreflex after WFI */
>>>>>> diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
>>>>>> index 65cce87..ef30d8d 100644
>>>>>> --- a/arch/arm/mach-omap2/serial.c
>>>>>> +++ b/arch/arm/mach-omap2/serial.c
>>>>>> @@ -249,6 +249,36 @@ static void omap_uart_idle_timer(unsigned long data)
>>>>>> omap_uart_allow_sleep(uart);
>>>>>> }
>>>>>>
>>>>>> +void omap_uart_prepare_idle(int num)
>>>>>> +{
>>>>>> + struct omap_uart_state *uart;
>>>>>> +
>>>>>> + if (!clocks_off_while_idle)
>>>>>> + return;
>>>>>> +
>>>>>> + list_for_each_entry(uart, &uart_list, node) {
>>>>>> + if (num == uart->num && uart->can_sleep) {
>>>>>> + omap_uart_disable_clocks(uart);
>>>>>> + return;
>>>>>> + }
>>>>>> + }
>>>>>> +}
>>>>>> +
>>>>>> +void omap_uart_resume_idle(int num)
>>>>>> +{
>>>>>> + struct omap_uart_state *uart;
>>>>>> +
>>>>>> + if (!clocks_off_while_idle)
>>>>>> + return;
>>>>>> +
>>>>>> + list_for_each_entry(uart, &uart_list, node) {
>>>>>> + if (num == uart->num) {
>>>>>> + omap_uart_enable_clocks(uart);
>>>>>> + return;
>>>>>> + }
>>>>>> + }
>>>>>> +}
>>>>>> +
>>>>>> void omap_uart_check_wakeup(void)
>>>>>> {
>>>>>> struct omap_uart_state *uart;
>>>>>> diff --git a/arch/arm/plat-omap/include/mach/serial.h b/arch/arm/plat-omap/include/mach/serial.h
>>>>>> index 11ff540..254a775 100644
>>>>>> --- a/arch/arm/plat-omap/include/mach/serial.h
>>>>>> +++ b/arch/arm/plat-omap/include/mach/serial.h
>>>>>> @@ -44,6 +44,8 @@
>>>>>> extern void omap_serial_init(void);
>>>>>> extern int omap_uart_can_sleep(void);
>>>>>> extern void omap_uart_check_wakeup(void);
>>>>>> +extern void omap_uart_prepare_idle(int num);
>>>>>> +extern void omap_uart_resume_idle(int num);
>>>>>> #endif
>>>>>>
>>>>>> #endif
>>>>>> --
>>>>>> 1.6.0.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
>>>>>
>>>>> --
>>>>> Jouni Högander
>>>>>
>>>>> --
>>>>> 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
>>>>>
>>>
>>> --
>>> Jouni Högander
>>>
>>>
>>
> --
> 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
--
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
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH PM-20081106] OMAP3: UART: Make sure that uart clocks are enabled when needed
2008-11-12 11:27 ` [PATCH PM-20081106] OMAP3: UART: Make sure that uart clocks are enabled when needed Jouni Hogander
2008-11-12 13:13 ` Högander Jouni
@ 2008-11-12 20:55 ` Kevin Hilman
1 sibling, 0 replies; 12+ messages in thread
From: Kevin Hilman @ 2008-11-12 20:55 UTC (permalink / raw)
To: Jouni Hogander; +Cc: linux-omap
Jouni Hogander <jouni.hogander@nokia.com> writes:
> Current implementation makes it possible that printouts are
> written into UART while its clocks are disabled. This causes freeze.
>
> This patch contains possible fix for this.
Thanks, pulling into PM branch until final solution can be found.
Kevin
> Signed-off-by: Jouni Hogander <jouni.hogander@nokia.com>
> ---
> arch/arm/mach-omap2/pm34xx.c | 6 ++++++
> arch/arm/mach-omap2/serial.c | 30 ++++++++++++++++++++++++++++++
> arch/arm/plat-omap/include/mach/serial.h | 2 ++
> 3 files changed, 38 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
> index d480c39..3838a19 100644
> --- a/arch/arm/mach-omap2/pm34xx.c
> +++ b/arch/arm/mach-omap2/pm34xx.c
> @@ -320,6 +320,7 @@ void omap_sram_idle(void)
> /* PER */
> per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
> if (per_next_state < PWRDM_POWER_ON) {
> + omap_uart_prepare_idle(2);
> omap2_gpio_prepare_for_retention();
> if (per_next_state == PWRDM_POWER_OFF)
> omap3_per_save_context();
> @@ -328,6 +329,8 @@ void omap_sram_idle(void)
> /* CORE */
> core_next_state = pwrdm_read_next_pwrst(core_pwrdm);
> if (core_next_state < PWRDM_POWER_ON) {
> + omap_uart_prepare_idle(0);
> + omap_uart_prepare_idle(1);
> if (core_next_state == PWRDM_POWER_OFF) {
> prm_set_mod_reg_bits(OMAP3430_AUTO_OFF,
> OMAP3430_GR_MOD,
> @@ -386,6 +389,8 @@ void omap_sram_idle(void)
> prm_clear_mod_reg_bits(OMAP3430_AUTO_OFF,
> OMAP3430_GR_MOD,
> OMAP3_PRM_VOLTCTRL_OFFSET);
> + omap_uart_resume_idle(0);
> + omap_uart_resume_idle(1);
> }
>
> /* PER */
> @@ -394,6 +399,7 @@ void omap_sram_idle(void)
> if (per_prev_state == PWRDM_POWER_OFF)
> omap3_per_restore_context();
> omap2_gpio_resume_after_retention();
> + omap_uart_resume_idle(2);
> }
>
> /* Enable smartreflex after WFI */
> diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
> index 65cce87..ef30d8d 100644
> --- a/arch/arm/mach-omap2/serial.c
> +++ b/arch/arm/mach-omap2/serial.c
> @@ -249,6 +249,36 @@ static void omap_uart_idle_timer(unsigned long data)
> omap_uart_allow_sleep(uart);
> }
>
> +void omap_uart_prepare_idle(int num)
> +{
> + struct omap_uart_state *uart;
> +
> + if (!clocks_off_while_idle)
> + return;
> +
> + list_for_each_entry(uart, &uart_list, node) {
> + if (num == uart->num && uart->can_sleep) {
> + omap_uart_disable_clocks(uart);
> + return;
> + }
> + }
> +}
> +
> +void omap_uart_resume_idle(int num)
> +{
> + struct omap_uart_state *uart;
> +
> + if (!clocks_off_while_idle)
> + return;
> +
> + list_for_each_entry(uart, &uart_list, node) {
> + if (num == uart->num) {
> + omap_uart_enable_clocks(uart);
> + return;
> + }
> + }
> +}
> +
> void omap_uart_check_wakeup(void)
> {
> struct omap_uart_state *uart;
> diff --git a/arch/arm/plat-omap/include/mach/serial.h b/arch/arm/plat-omap/include/mach/serial.h
> index 11ff540..254a775 100644
> --- a/arch/arm/plat-omap/include/mach/serial.h
> +++ b/arch/arm/plat-omap/include/mach/serial.h
> @@ -44,6 +44,8 @@
> extern void omap_serial_init(void);
> extern int omap_uart_can_sleep(void);
> extern void omap_uart_check_wakeup(void);
> +extern void omap_uart_prepare_idle(int num);
> +extern void omap_uart_resume_idle(int num);
> #endif
>
> #endif
> --
> 1.6.0.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
^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: new PM branch: pm-20081106
2008-11-11 17:21 ` Kevin Hilman
2008-11-12 11:22 ` Högander Jouni
@ 2008-11-19 12:22 ` Rajendra Nayak
1 sibling, 0 replies; 12+ messages in thread
From: Rajendra Nayak @ 2008-11-19 12:22 UTC (permalink / raw)
To: 'Kevin Hilman'; +Cc: linux-omap
> -----Original Message-----
> From: Kevin Hilman [mailto:khilman@deeprootsystems.com]
> Sent: Tuesday, November 11, 2008 10:51 PM
> To: Rajendra Nayak
> Cc: linux-omap@vger.kernel.org
> Subject: Re: new PM branch: pm-20081106
>
> "Rajendra Nayak" <rnayak@ti.com> writes:
>
> > I am seeing a couple of issues on the 3430sdp with this latest pm
> > branch. With the omap_3430sdp_min_defconfig I see a system freeze
> > after bootup after the debug UART inactivity. Also system wide
> > suspend seems to freeze. The system wide suspend freeze is seen
> > even with the default (omap_3430sdp_defconfig) config. I ran into
> > these issue while validating the DVFS patches and haven't really
> > looked further into what might be causing these. I have a ES3.0 GP
> > based SDP board.
>
> Rajendra,
>
> I just pushed another patch to pm-20081106 for you to try. This
> reverts a commit[1] from linux-omap which is causing problems coming
> out of retention.
>
> Could you update your PM branch, and also modify the 'enabled_uarts'
> settings in your board-3430sdp.c file so that only the console UART is
> enabled. Doing this would help me understand what's working on SDP.
>
> Until I get my SDP, I'll need to rely on you for this testing.
>
Hi Kevin,
Sorry for the delay in responding. The latest pm branch does seem
to work fine on my SDP after taking in Jouni's patch
"[PATCH PM-20081106] OMAP3: UART: Make sure that uart clocks are enabled when needed"
and restricting the enabled_uarts to debug console.
I however did not see the VCORE led blink while hitting OFF.
regards,
Rajendra
>
> [1] 2ac1da8c787f73f067e717408e631501ba60aabc
>
> >> -----Original Message-----
> >> From: linux-omap-owner@vger.kernel.org
> >> [mailto:linux-omap-owner@vger.kernel.org] On Behalf Of Kevin Hilman
> >> Sent: Friday, November 07, 2008 11:00 PM
> >> To: linux-omap@vger.kernel.org
> >> Subject: new PM branch: pm-20081106
> >>
> >> For those who want to experiment with the latest PM
> branch, it is now
> >> available in OMAP git as branch pm-20081106
> >>
> >> The shortlog is below[1], but the significant thing for now is a
> >> rework of how UART handles its clocks and allows idle. I also did
> >> quite a bit of reordering and some restructuring.
> >>
> >> I've tested this on Nokia HW and the basic
> retention-on-idle support
> >> on Beagle. I'm still waiting for my SDP to arrive, so
> haven't tested
> >> on SDP.
> >>
> >> Kevin
> >>
> >> [1]
> >> Amit Kucheria (2):
> >> OMAP: PM: Typo fix for clock_allow_idle
> >> HSMMC: Make driver support dynamic idle
> >>
> >> Jouni Hogander (5):
> >> OMAP3: PM: Use pwrdm_set_next_pwrst instead of
> >> set_pwrdm_state in idle loop
> >> OMAP3: Do not set mpu, core, neon states if cpuidle is used
> >> OMAP3: PM: Do not set next states sw to control those
> >> is available
> >> OMAP3: PM: Always return value in pwrdms_setup
> >> OMAP3: PM: Fix wrong sequence in suspend.
> >>
> >> Kalle Jokiniemi (3):
> >> OMAP: PM: sysfs interface for enabling voltage off in idle
> >> OMAP3: PM: Fix cpu idle init sequencing
> >> OMAP: SRF: Fixes to shared resource framework (Ver.3)
> >>
> >> Kevin Hilman (10):
> >> OMAP3: PM: Add wake-up bit defintiions for CONTROL_PADCONF_X
> >> OMAP3: PM: Allow UARTs to be unclocked when inactive
> >> 8250: Allow platform to register PM hook
> >> 8250: when waking, PM hook should be called before
> >> accessing port
> >> OMAP3: PM: UART: Add 8250 UART PM hook for suspend/resume
> >> OMAP3: PM: UART save/restore support for OFF-mode
> >> OMAP2/3: HSMMC: Ensure HSMMC is fully reset on boot
> >> OMAP3: PM: CPUidle: obey enable_off_mode flag
> >> OMAP3: PM: CPUidle: restrict C-states on UART activity
> >> OMAP3: PM: decouple PER and CORE context save and restore
> >>
> >> Paul Walmsley (6):
> >> OMAP2/3 PM: create the OMAP PM interface and add a
> >> default OMAP PM no-op layer.
> >> OMAP2/3 omapdev: add basic omapdev structure
> >> OMAP242x omapdev: add OMAP242x omapdev records
> >> OMAP243x omapdev: add OMAP243x omapdev records
> >> OMAP3xxx omapdev: add OMAP3xxx omapdev records
> >> OMAP2/3 omapdev: add code to walk the omapdev records
> >>
> >> Peter 'p2' De Schrijver (9):
> >> OMAP: PM counter infrastructure.
> >> OMAP: PM: Hook into PM counters
> >> OMAP: PM: Add closures to clkdm_for_each and pwrdm_for_each.
> >> OMAP: PM: Add pm-debug counters
> >> OMAP: PM debug: make powerdomains use PM-debug counters
> >> OMAP: PM: Add definitions for ETK pads and
> >> observability registers
> >> OMAP: Debug observability and ETK padconf implementation
> >> OMAP: Add debug observablity (debobs) Kconfig item
> >> OMAP: PM: Implement get_last_off_on_transaction_id()
> >>
> >> Rajendra Nayak (23):
> >> OMAP3: PM: GPMC context save/restore
> >> OMAP3: PM: GPIO context save/restore
> >> OMAP3: PM: I2C context save/restore
> >> OMAP3: PM: INTC context save/restore
> >> OMAP3: PM: PRCM context save/restore
> >> OMAP3: PM: Populate scratchpad contents
> >> OMAP3: PM: SCM context save/restore
> >> OMAP3: PM: SRAM restore function
> >> OMAP3: PM: handle PER/NEON/CORE in idle
> >> OMAP3: PM: Restore MMU table entry
> >> OMAP3: PM: MPU off-mode support
> >> OMAP3: PM: CORE domain off-mode support
> >> OMAP3: PM: allow runtime enable/disable of OFF mode
> >> OMAP3: 3430SDP minimal kernel defconfig
> >> OMAP3: PM: CPUidle: Basic support for C1-C2
> >> OMAP3: PM: CPUidle: Enables state C4
> >> OMAP3: PM: CPUidle: Enables C3 and C5
> >> OMAP3: PM: CPUidle: Safe-state on bm-activity
> >> OMAP3: PM: CPUidle: Enable Kconfig option for OMAP
> >> OMAP3 SRF: Generic shared resource f/w
> >> OMAP3 SRF: MPU/CORE/PD latency modeling
> >> OMAP3 SRF: omap3 srf driver
> >> OMAP3 SRF: OMAP PM srf implementation
> >>
> >> Tero Kristo (9):
> >> OMAP: PM debug: do not print out status for meta
> >> powerdomains (dpll*)
> >> OMAP: PM debug: Add PRCM register dump support
> >> OMAP: PM: DMA context save / restore
> >> OMAP: PM: off-mode support for DMA on EMU/HS devices
> >> OMAP3: SRAM size fix for HS/EMU devices
> >> OMAP3 PM: off-mode support for HS/EMU devices
> >> OMAP3: PM: Enable SDRAM auto-refresh during sleep
> >> OMAP: SDRC: Add new register definitions for SDRAM controller
> >> OMAP3: PM: SDRC auto-refresh workaround for off-mode
> >>
> >> --
> >> 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
> >>
> >>
>
>
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2008-11-19 12:22 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-07 17:29 new PM branch: pm-20081106 Kevin Hilman
2008-11-10 5:52 ` Rajendra Nayak
2008-11-11 17:21 ` Kevin Hilman
2008-11-12 11:22 ` Högander Jouni
2008-11-12 11:27 ` [PATCH PM-20081106] OMAP3: UART: Make sure that uart clocks are enabled when needed Jouni Hogander
2008-11-12 13:13 ` Högander Jouni
2008-11-12 13:25 ` Sriram V
2008-11-12 13:35 ` Högander Jouni
[not found] ` <8bf247760811120540k52fb6132u4b61e28407b799ec@mail.gmail.com>
2008-11-12 15:58 ` Sriram V
2008-11-12 17:20 ` Kevin Hilman
2008-11-12 20:55 ` Kevin Hilman
2008-11-19 12:22 ` new PM branch: pm-20081106 Rajendra Nayak
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox