* [PATCH 0/3] Update CPU idle parameter passing
@ 2009-10-29 8:30 Kalle Jokiniemi
2009-10-29 8:30 ` [PATCH 1/3] OMAP:PM: Fix non-cpu idle builds using omap3_pm_init_cpuidle Kalle Jokiniemi
2009-11-12 0:28 ` [PATCH 0/3] Update CPU idle parameter passing Kevin Hilman
0 siblings, 2 replies; 5+ messages in thread
From: Kalle Jokiniemi @ 2009-10-29 8:30 UTC (permalink / raw)
To: khilman; +Cc: linux-omap, rnayak, jouni.hogander
Hi Kevin,
Made some patches to enable setting RX-51 cpu idle parameters
as we use them. Added "valid" field passing to cpuidle_params
in the process.
Tested on RX-51. Applies on top of linux-omap/pm branch.
Kalle Jokiniemi (3):
OMAP:PM: Fix non-cpu idle builds using omap3_pm_init_cpuidle
OMAP3: Add valid field into C-state parameter passing
OMAP: RX-51: Pass cpu idle parameters
kajokini@ubuntu:~/work/linux-open/linux-omap$ git diff --stat HEAD~3..HEAD
arch/arm/mach-omap2/board-3430sdp.c | 14 ++++++------
arch/arm/mach-omap2/board-rx51.c | 18 +++++++++++++++++
arch/arm/mach-omap2/cpuidle34xx.c | 37 +++++++++++++++++++++-------------
arch/arm/mach-omap2/pm.h | 8 +++++++
4 files changed, 56 insertions(+), 21 deletions(-)
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH 1/3] OMAP:PM: Fix non-cpu idle builds using omap3_pm_init_cpuidle 2009-10-29 8:30 [PATCH 0/3] Update CPU idle parameter passing Kalle Jokiniemi @ 2009-10-29 8:30 ` Kalle Jokiniemi 2009-10-29 8:30 ` [PATCH 2/3] OMAP3: Add valid field into C-state parameter passing Kalle Jokiniemi 2009-11-12 0:28 ` [PATCH 0/3] Update CPU idle parameter passing Kevin Hilman 1 sibling, 1 reply; 5+ messages in thread From: Kalle Jokiniemi @ 2009-10-29 8:30 UTC (permalink / raw) To: khilman; +Cc: linux-omap, rnayak, jouni.hogander, Kalle Jokiniemi Building without CONFIG_CPU_IDLE causes build to fail if cpu idle parameters are tried to pass using omap3_pm_init_cpuidle function. Fixed by defining a dummy function for non-cpu idle builds. Signed-off-by: Kalle Jokiniemi <kalle.jokiniemi@digia.com> --- arch/arm/mach-omap2/pm.h | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h index b576424..b9421e8 100644 --- a/arch/arm/mach-omap2/pm.h +++ b/arch/arm/mach-omap2/pm.h @@ -49,7 +49,14 @@ struct cpuidle_params { }; extern void omap3_pm_init_vc(struct prm_setup_vc *setup_vc); +#ifdef CONFIG_CPU_IDLE extern void omap3_pm_init_cpuidle(struct cpuidle_params *cpuidle_board_params); +#else +static inline void omap3_pm_init_cpuidle( + struct cpuidle_params *cpuidle_board_params) +{ +} +#endif extern int resource_set_opp_level(int res, u32 target_level, int flags); extern int resource_access_opp_lock(int res, int delta); -- 1.5.4.3 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/3] OMAP3: Add valid field into C-state parameter passing 2009-10-29 8:30 ` [PATCH 1/3] OMAP:PM: Fix non-cpu idle builds using omap3_pm_init_cpuidle Kalle Jokiniemi @ 2009-10-29 8:30 ` Kalle Jokiniemi 2009-10-29 8:30 ` [PATCH 3/3] OMAP: RX-51: Pass cpu idle parameters Kalle Jokiniemi 0 siblings, 1 reply; 5+ messages in thread From: Kalle Jokiniemi @ 2009-10-29 8:30 UTC (permalink / raw) To: khilman; +Cc: linux-omap, rnayak, jouni.hogander, Kalle Jokiniemi Different boards benefit differently from the available seven C-states for cpu idle. In most cases, only few, properly spaced (in terms of consumption and latency) C-states are required to make the power management optimal. Hence we need a possibility to pass which C-states are actually used for each board. So added the valid field to cpuidle_params and added support to 3430sdp, which uses the paramenter passing. Signed-off-by: Kalle Jokiniemi <kalle.jokiniemi@digia.com> --- arch/arm/mach-omap2/board-3430sdp.c | 14 ++++++------ arch/arm/mach-omap2/cpuidle34xx.c | 37 +++++++++++++++++++++------------- arch/arm/mach-omap2/pm.h | 1 + 3 files changed, 31 insertions(+), 21 deletions(-) diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c index 11f0dc5..74c20ee 100644 --- a/arch/arm/mach-omap2/board-3430sdp.c +++ b/arch/arm/mach-omap2/board-3430sdp.c @@ -76,19 +76,19 @@ static struct prm_setup_vc omap3_setuptime_table = { /* FIXME: These values need to be updated based on more profiling on 3430sdp*/ static struct cpuidle_params omap3_cpuidle_params_table[] = { /* C1 */ - {2, 2, 5}, + {1, 2, 2, 5}, /* C2 */ - {10, 10, 30}, + {1, 10, 10, 30}, /* C3 */ - {50, 50, 300}, + {1, 50, 50, 300}, /* C4 */ - {1500, 1800, 4000}, + {1, 1500, 1800, 4000}, /* C5 */ - {2500, 7500, 12000}, + {1, 2500, 7500, 12000}, /* C6 */ - {3000, 8500, 15000}, + {1, 3000, 8500, 15000}, /* C7 */ - {10000, 30000, 300000}, + {1, 10000, 30000, 300000}, }; static int board_keymap[] = { diff --git a/arch/arm/mach-omap2/cpuidle34xx.c b/arch/arm/mach-omap2/cpuidle34xx.c index fdfa1d5..9c9474a 100644 --- a/arch/arm/mach-omap2/cpuidle34xx.c +++ b/arch/arm/mach-omap2/cpuidle34xx.c @@ -69,19 +69,19 @@ struct powerdomain *mpu_pd, *core_pd; */ static struct cpuidle_params cpuidle_params_table[] = { /* C1 */ - {2, 2, 5}, + {1, 2, 2, 5}, /* C2 */ - {10, 10, 30}, + {1, 10, 10, 30}, /* C3 */ - {50, 50, 300}, + {1, 50, 50, 300}, /* C4 */ - {1500, 1800, 4000}, + {1, 1500, 1800, 4000}, /* C5 */ - {2500, 7500, 12000}, + {1, 2500, 7500, 12000}, /* C6 */ - {3000, 8500, 15000}, + {1, 3000, 8500, 15000}, /* C7 */ - {10000, 30000, 300000}, + {1, 10000, 30000, 300000}, }; static int omap3_idle_bm_check(void) @@ -197,6 +197,8 @@ void omap3_pm_init_cpuidle(struct cpuidle_params *cpuidle_board_params) return; for (i = OMAP3_STATE_C1; i < OMAP3_MAX_STATES; i++) { + cpuidle_params_table[i].valid = + cpuidle_board_params[i].valid; cpuidle_params_table[i].sleep_latency = cpuidle_board_params[i].sleep_latency; cpuidle_params_table[i].wake_latency = @@ -221,7 +223,8 @@ void omap3_pm_init_cpuidle(struct cpuidle_params *cpuidle_board_params) void omap_init_power_states(void) { /* C1 . MPU WFI + Core active */ - omap3_power_states[OMAP3_STATE_C1].valid = 1; + omap3_power_states[OMAP3_STATE_C1].valid = + cpuidle_params_table[OMAP3_STATE_C1].valid; omap3_power_states[OMAP3_STATE_C1].type = OMAP3_STATE_C1; omap3_power_states[OMAP3_STATE_C1].sleep_latency = cpuidle_params_table[OMAP3_STATE_C1].sleep_latency; @@ -234,7 +237,8 @@ void omap_init_power_states(void) omap3_power_states[OMAP3_STATE_C1].flags = CPUIDLE_FLAG_TIME_VALID; /* C2 . MPU WFI + Core inactive */ - omap3_power_states[OMAP3_STATE_C2].valid = 1; + omap3_power_states[OMAP3_STATE_C2].valid = + cpuidle_params_table[OMAP3_STATE_C2].valid; omap3_power_states[OMAP3_STATE_C2].type = OMAP3_STATE_C2; omap3_power_states[OMAP3_STATE_C2].sleep_latency = cpuidle_params_table[OMAP3_STATE_C2].sleep_latency; @@ -247,7 +251,8 @@ void omap_init_power_states(void) omap3_power_states[OMAP3_STATE_C2].flags = CPUIDLE_FLAG_TIME_VALID; /* C3 . MPU CSWR + Core inactive */ - omap3_power_states[OMAP3_STATE_C3].valid = 1; + omap3_power_states[OMAP3_STATE_C3].valid = + cpuidle_params_table[OMAP3_STATE_C3].valid; omap3_power_states[OMAP3_STATE_C3].type = OMAP3_STATE_C3; omap3_power_states[OMAP3_STATE_C3].sleep_latency = cpuidle_params_table[OMAP3_STATE_C3].sleep_latency; @@ -261,7 +266,8 @@ void omap_init_power_states(void) CPUIDLE_FLAG_CHECK_BM; /* C4 . MPU OFF + Core inactive */ - omap3_power_states[OMAP3_STATE_C4].valid = 1; + omap3_power_states[OMAP3_STATE_C4].valid = + cpuidle_params_table[OMAP3_STATE_C4].valid; omap3_power_states[OMAP3_STATE_C4].type = OMAP3_STATE_C4; omap3_power_states[OMAP3_STATE_C4].sleep_latency = cpuidle_params_table[OMAP3_STATE_C4].sleep_latency; @@ -275,7 +281,8 @@ void omap_init_power_states(void) CPUIDLE_FLAG_CHECK_BM; /* C5 . MPU CSWR + Core CSWR*/ - omap3_power_states[OMAP3_STATE_C5].valid = 1; + omap3_power_states[OMAP3_STATE_C5].valid = + cpuidle_params_table[OMAP3_STATE_C5].valid; omap3_power_states[OMAP3_STATE_C5].type = OMAP3_STATE_C5; omap3_power_states[OMAP3_STATE_C5].sleep_latency = cpuidle_params_table[OMAP3_STATE_C5].sleep_latency; @@ -289,7 +296,8 @@ void omap_init_power_states(void) CPUIDLE_FLAG_CHECK_BM; /* C6 . MPU OFF + Core CSWR */ - omap3_power_states[OMAP3_STATE_C6].valid = 1; + omap3_power_states[OMAP3_STATE_C6].valid = + cpuidle_params_table[OMAP3_STATE_C6].valid; omap3_power_states[OMAP3_STATE_C6].type = OMAP3_STATE_C6; omap3_power_states[OMAP3_STATE_C6].sleep_latency = cpuidle_params_table[OMAP3_STATE_C6].sleep_latency; @@ -303,7 +311,8 @@ void omap_init_power_states(void) CPUIDLE_FLAG_CHECK_BM; /* C7 . MPU OFF + Core OFF */ - omap3_power_states[OMAP3_STATE_C7].valid = 1; + omap3_power_states[OMAP3_STATE_C7].valid = + cpuidle_params_table[OMAP3_STATE_C7].valid; omap3_power_states[OMAP3_STATE_C7].type = OMAP3_STATE_C7; omap3_power_states[OMAP3_STATE_C7].sleep_latency = cpuidle_params_table[OMAP3_STATE_C7].sleep_latency; diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h index b9421e8..c195b14 100644 --- a/arch/arm/mach-omap2/pm.h +++ b/arch/arm/mach-omap2/pm.h @@ -43,6 +43,7 @@ struct prm_setup_vc { }; struct cpuidle_params { + u8 valid; u32 sleep_latency; u32 wake_latency; u32 threshold; -- 1.5.4.3 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/3] OMAP: RX-51: Pass cpu idle parameters 2009-10-29 8:30 ` [PATCH 2/3] OMAP3: Add valid field into C-state parameter passing Kalle Jokiniemi @ 2009-10-29 8:30 ` Kalle Jokiniemi 0 siblings, 0 replies; 5+ messages in thread From: Kalle Jokiniemi @ 2009-10-29 8:30 UTC (permalink / raw) To: khilman; +Cc: linux-omap, rnayak, jouni.hogander, Kalle Jokiniemi Pass cpuidle parameters for RX-51. Numbers based on measurements made in October 2009 for PM optimized kernel with CPU freq enabled. Assumes OPP2 (main idle OPP, and worst case latencies). Signed-off-by: Kalle Jokiniemi <kalle.jokiniemi@digia.com> --- arch/arm/mach-omap2/board-rx51.c | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c index 527f0c6..02fb33b 100644 --- a/arch/arm/mach-omap2/board-rx51.c +++ b/arch/arm/mach-omap2/board-rx51.c @@ -32,11 +32,28 @@ #include <plat/usb.h> #include "omap3-opp.h" +#include "pm.h" #define RX51_GPIO_SLEEP_IND 162 struct omap_sdrc_params *rx51_get_sdram_timings(void); +static struct cpuidle_params rx51_cpuidle_params[] = { + /* C1 */ + {1, 110, 162, 5}, + /* C2 */ + {1, 106, 180, 309}, + /* C3 */ + {0, 107, 410, 46057}, + /* C4 */ + {0, 121, 3374, 46057}, + /* C5 */ + {1, 855, 1146, 46057}, + /* C6 */ + {0, 7580, 4134, 484329}, + /* C7 */ + {1, 7505, 15274, 484329}, +}; static struct gpio_led gpio_leds[] = { { .name = "sleep_ind", @@ -84,6 +101,7 @@ static void __init rx51_init_irq(void) { omap_board_config = rx51_config; omap_board_config_size = ARRAY_SIZE(rx51_config); + omap3_pm_init_cpuidle(rx51_cpuidle_params); omap2_init_common_hw(rx51_get_sdram_timings(), rx51_get_sdram_timings(), omap3_mpu_rate_table, omap3_dsp_rate_table, omap3_l3_rate_table); -- 1.5.4.3 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 0/3] Update CPU idle parameter passing 2009-10-29 8:30 [PATCH 0/3] Update CPU idle parameter passing Kalle Jokiniemi 2009-10-29 8:30 ` [PATCH 1/3] OMAP:PM: Fix non-cpu idle builds using omap3_pm_init_cpuidle Kalle Jokiniemi @ 2009-11-12 0:28 ` Kevin Hilman 1 sibling, 0 replies; 5+ messages in thread From: Kevin Hilman @ 2009-11-12 0:28 UTC (permalink / raw) To: Kalle Jokiniemi; +Cc: linux-omap, rnayak, jouni.hogander Kalle Jokiniemi <kalle.jokiniemi@digia.com> writes: > Hi Kevin, > > Made some patches to enable setting RX-51 cpu idle parameters > as we use them. Added "valid" field passing to cpuidle_params > in the process. > > Tested on RX-51. Applies on top of linux-omap/pm branch. > > Kalle Jokiniemi (3): > OMAP:PM: Fix non-cpu idle builds using omap3_pm_init_cpuidle > OMAP3: Add valid field into C-state parameter passing > OMAP: RX-51: Pass cpu idle parameters Thanks, applying this series to PM branch. Kevin > kajokini@ubuntu:~/work/linux-open/linux-omap$ git diff --stat HEAD~3..HEAD > arch/arm/mach-omap2/board-3430sdp.c | 14 ++++++------ > arch/arm/mach-omap2/board-rx51.c | 18 +++++++++++++++++ > arch/arm/mach-omap2/cpuidle34xx.c | 37 +++++++++++++++++++++------------- > arch/arm/mach-omap2/pm.h | 8 +++++++ > 4 files changed, 56 insertions(+), 21 deletions(-) ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2009-11-12 0:28 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-10-29 8:30 [PATCH 0/3] Update CPU idle parameter passing Kalle Jokiniemi 2009-10-29 8:30 ` [PATCH 1/3] OMAP:PM: Fix non-cpu idle builds using omap3_pm_init_cpuidle Kalle Jokiniemi 2009-10-29 8:30 ` [PATCH 2/3] OMAP3: Add valid field into C-state parameter passing Kalle Jokiniemi 2009-10-29 8:30 ` [PATCH 3/3] OMAP: RX-51: Pass cpu idle parameters Kalle Jokiniemi 2009-11-12 0:28 ` [PATCH 0/3] Update CPU idle parameter passing Kevin Hilman
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.