diff options
Diffstat (limited to 'recipes-kernel')
8 files changed, 338 insertions, 4 deletions
diff --git a/recipes-kernel/linux/linux-omap-2.6.39/beagleboard/configs/stock b/recipes-kernel/linux/linux-omap-2.6.39/beagleboard/configs/stock index 9e81a057..dd288e24 100644 --- a/recipes-kernel/linux/linux-omap-2.6.39/beagleboard/configs/stock +++ b/recipes-kernel/linux/linux-omap-2.6.39/beagleboard/configs/stock | |||
@@ -2633,7 +2633,7 @@ CONFIG_USB_SERIAL_AIRCABLE=m | |||
2633 | CONFIG_USB_SERIAL_ARK3116=m | 2633 | CONFIG_USB_SERIAL_ARK3116=m |
2634 | CONFIG_USB_SERIAL_BELKIN=m | 2634 | CONFIG_USB_SERIAL_BELKIN=m |
2635 | CONFIG_USB_SERIAL_CH341=m | 2635 | CONFIG_USB_SERIAL_CH341=m |
2636 | CONFIG_USB_SERIAL_WHITEHEAT=m | 2636 | CONFIG_USB_SERIAL_WHITEHEAT=n |
2637 | CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m | 2637 | CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m |
2638 | # CONFIG_USB_SERIAL_CP210X is not set | 2638 | # CONFIG_USB_SERIAL_CP210X is not set |
2639 | CONFIG_USB_SERIAL_CYPRESS_M8=m | 2639 | CONFIG_USB_SERIAL_CYPRESS_M8=m |
@@ -2681,9 +2681,9 @@ CONFIG_USB_SERIAL_SAMBA=m | |||
2681 | CONFIG_USB_SERIAL_SIEMENS_MPI=m | 2681 | CONFIG_USB_SERIAL_SIEMENS_MPI=m |
2682 | CONFIG_USB_SERIAL_SIERRAWIRELESS=m | 2682 | CONFIG_USB_SERIAL_SIERRAWIRELESS=m |
2683 | # CONFIG_USB_SERIAL_SYMBOL is not set | 2683 | # CONFIG_USB_SERIAL_SYMBOL is not set |
2684 | CONFIG_USB_SERIAL_TI=m | 2684 | CONFIG_USB_SERIAL_TI=n |
2685 | CONFIG_USB_SERIAL_CYBERJACK=m | 2685 | CONFIG_USB_SERIAL_CYBERJACK=m |
2686 | CONFIG_USB_SERIAL_XIRCOM=m | 2686 | CONFIG_USB_SERIAL_XIRCOM=n |
2687 | # CONFIG_USB_SERIAL_OPTION is not set | 2687 | # CONFIG_USB_SERIAL_OPTION is not set |
2688 | CONFIG_USB_SERIAL_OMNINET=m | 2688 | CONFIG_USB_SERIAL_OMNINET=m |
2689 | CONFIG_USB_SERIAL_OPTICON=m | 2689 | CONFIG_USB_SERIAL_OPTICON=m |
diff --git a/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0001-OMAP2-clockdomain-Add-an-api-to-read-idle-mode.patch b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0001-OMAP2-clockdomain-Add-an-api-to-read-idle-mode.patch new file mode 100644 index 00000000..d030c519 --- /dev/null +++ b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0001-OMAP2-clockdomain-Add-an-api-to-read-idle-mode.patch | |||
@@ -0,0 +1,77 @@ | |||
1 | From d19005cc07645703a61d4645c343ed586919575d Mon Sep 17 00:00:00 2001 | ||
2 | From: Rajendra Nayak <rnayak@ti.com> | ||
3 | Date: Tue, 5 Apr 2011 15:22:31 +0530 | ||
4 | Subject: [PATCH 1/6] OMAP2+: clockdomain: Add an api to read idle mode | ||
5 | |||
6 | Add a clockdomain api to check if hardware supervised | ||
7 | idle transitions are enabled on a clockdomain. | ||
8 | |||
9 | Signed-off-by: Rajendra Nayak <rnayak@ti.com> | ||
10 | --- | ||
11 | arch/arm/mach-omap2/clockdomain.c | 21 +++++++++++++++++++++ | ||
12 | arch/arm/mach-omap2/clockdomain.h | 3 +++ | ||
13 | 2 files changed, 24 insertions(+), 0 deletions(-) | ||
14 | |||
15 | diff --git a/arch/arm/mach-omap2/clockdomain.c b/arch/arm/mach-omap2/clockdomain.c | ||
16 | index 6cb6c03..2ab3686 100644 | ||
17 | --- a/arch/arm/mach-omap2/clockdomain.c | ||
18 | +++ b/arch/arm/mach-omap2/clockdomain.c | ||
19 | @@ -795,6 +795,27 @@ void clkdm_deny_idle(struct clockdomain *clkdm) | ||
20 | arch_clkdm->clkdm_deny_idle(clkdm); | ||
21 | } | ||
22 | |||
23 | +/** | ||
24 | + * clkdm_is_idle - Check if the clkdm hwsup/autoidle is enabled | ||
25 | + * @clkdm: struct clockdomain * | ||
26 | + * | ||
27 | + * Returns true if the clockdomain is in hardware-supervised | ||
28 | + * idle mode, or 0 otherwise. | ||
29 | + * | ||
30 | + */ | ||
31 | +int clkdm_is_idle(struct clockdomain *clkdm) | ||
32 | +{ | ||
33 | + if (!clkdm) | ||
34 | + return -EINVAL; | ||
35 | + | ||
36 | + if (!arch_clkdm || !arch_clkdm->clkdm_is_idle) | ||
37 | + return -EINVAL; | ||
38 | + | ||
39 | + pr_debug("clockdomain: reading idle state for %s\n", clkdm->name); | ||
40 | + | ||
41 | + return arch_clkdm->clkdm_is_idle(clkdm); | ||
42 | +} | ||
43 | + | ||
44 | |||
45 | /* Clockdomain-to-clock framework interface code */ | ||
46 | |||
47 | diff --git a/arch/arm/mach-omap2/clockdomain.h b/arch/arm/mach-omap2/clockdomain.h | ||
48 | index 5823584..085ed82 100644 | ||
49 | --- a/arch/arm/mach-omap2/clockdomain.h | ||
50 | +++ b/arch/arm/mach-omap2/clockdomain.h | ||
51 | @@ -138,6 +138,7 @@ struct clockdomain { | ||
52 | * @clkdm_wakeup: Force a clockdomain to wakeup | ||
53 | * @clkdm_allow_idle: Enable hw supervised idle transitions for clock domain | ||
54 | * @clkdm_deny_idle: Disable hw supervised idle transitions for clock domain | ||
55 | + * @clkdm_is_idle: Check if hw supervised idle transitions are enabled | ||
56 | * @clkdm_clk_enable: Put the clkdm in right state for a clock enable | ||
57 | * @clkdm_clk_disable: Put the clkdm in right state for a clock disable | ||
58 | */ | ||
59 | @@ -154,6 +155,7 @@ struct clkdm_ops { | ||
60 | int (*clkdm_wakeup)(struct clockdomain *clkdm); | ||
61 | void (*clkdm_allow_idle)(struct clockdomain *clkdm); | ||
62 | void (*clkdm_deny_idle)(struct clockdomain *clkdm); | ||
63 | + int (*clkdm_is_idle)(struct clockdomain *clkdm); | ||
64 | int (*clkdm_clk_enable)(struct clockdomain *clkdm); | ||
65 | int (*clkdm_clk_disable)(struct clockdomain *clkdm); | ||
66 | }; | ||
67 | @@ -177,6 +179,7 @@ int clkdm_clear_all_sleepdeps(struct clockdomain *clkdm); | ||
68 | |||
69 | void clkdm_allow_idle(struct clockdomain *clkdm); | ||
70 | void clkdm_deny_idle(struct clockdomain *clkdm); | ||
71 | +int clkdm_is_idle(struct clockdomain *clkdm); | ||
72 | |||
73 | int clkdm_wakeup(struct clockdomain *clkdm); | ||
74 | int clkdm_sleep(struct clockdomain *clkdm); | ||
75 | -- | ||
76 | 1.6.6.1 | ||
77 | |||
diff --git a/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0002-OMAP2-clockdomain-Add-SoC-support-for-clkdm_is_idle.patch b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0002-OMAP2-clockdomain-Add-SoC-support-for-clkdm_is_idle.patch new file mode 100644 index 00000000..fa79d074 --- /dev/null +++ b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0002-OMAP2-clockdomain-Add-SoC-support-for-clkdm_is_idle.patch | |||
@@ -0,0 +1,86 @@ | |||
1 | From 2863828e636c1766c6d2de85c900f6656f4b6675 Mon Sep 17 00:00:00 2001 | ||
2 | From: Rajendra Nayak <rnayak@ti.com> | ||
3 | Date: Tue, 5 Apr 2011 15:22:36 +0530 | ||
4 | Subject: [PATCH 2/6] OMAP2+: clockdomain: Add SoC support for clkdm_is_idle | ||
5 | |||
6 | Add the SoC specific implemenation for clkdm_is_idle | ||
7 | for OMAP2/3 and OMAP4. | ||
8 | |||
9 | Signed-off-by: Rajendra Nayak <rnayak@ti.com> | ||
10 | --- | ||
11 | arch/arm/mach-omap2/clockdomain2xxx_3xxx.c | 12 ++++++++++++ | ||
12 | arch/arm/mach-omap2/clockdomain44xx.c | 7 +++++++ | ||
13 | 2 files changed, 19 insertions(+), 0 deletions(-) | ||
14 | |||
15 | diff --git a/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c b/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c | ||
16 | index 48d0db7..db49baa 100644 | ||
17 | --- a/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c | ||
18 | +++ b/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c | ||
19 | @@ -13,6 +13,7 @@ | ||
20 | */ | ||
21 | |||
22 | #include <linux/types.h> | ||
23 | +#include <linux/errno.h> | ||
24 | #include <plat/prcm.h> | ||
25 | #include "prm.h" | ||
26 | #include "prm2xxx_3xxx.h" | ||
27 | @@ -146,6 +147,15 @@ static void omap2_clkdm_deny_idle(struct clockdomain *clkdm) | ||
28 | _clkdm_del_autodeps(clkdm); | ||
29 | } | ||
30 | |||
31 | +static int omap2_clkdm_is_idle(struct clockdomain *clkdm) | ||
32 | +{ | ||
33 | + if (!clkdm->clktrctrl_mask) | ||
34 | + return -1; | ||
35 | + | ||
36 | + return omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, | ||
37 | + clkdm->clktrctrl_mask); | ||
38 | +} | ||
39 | + | ||
40 | static void _enable_hwsup(struct clockdomain *clkdm) | ||
41 | { | ||
42 | if (cpu_is_omap24xx()) | ||
43 | @@ -252,6 +262,7 @@ struct clkdm_ops omap2_clkdm_operations = { | ||
44 | .clkdm_wakeup = omap2_clkdm_wakeup, | ||
45 | .clkdm_allow_idle = omap2_clkdm_allow_idle, | ||
46 | .clkdm_deny_idle = omap2_clkdm_deny_idle, | ||
47 | + .clkdm_is_idle = omap2_clkdm_is_idle, | ||
48 | .clkdm_clk_enable = omap2_clkdm_clk_enable, | ||
49 | .clkdm_clk_disable = omap2_clkdm_clk_disable, | ||
50 | }; | ||
51 | @@ -269,6 +280,7 @@ struct clkdm_ops omap3_clkdm_operations = { | ||
52 | .clkdm_wakeup = omap3_clkdm_wakeup, | ||
53 | .clkdm_allow_idle = omap3_clkdm_allow_idle, | ||
54 | .clkdm_deny_idle = omap3_clkdm_deny_idle, | ||
55 | + .clkdm_is_idle = omap2_clkdm_is_idle, | ||
56 | .clkdm_clk_enable = omap2_clkdm_clk_enable, | ||
57 | .clkdm_clk_disable = omap2_clkdm_clk_disable, | ||
58 | }; | ||
59 | diff --git a/arch/arm/mach-omap2/clockdomain44xx.c b/arch/arm/mach-omap2/clockdomain44xx.c | ||
60 | index a1a4ecd..4b10727 100644 | ||
61 | --- a/arch/arm/mach-omap2/clockdomain44xx.c | ||
62 | +++ b/arch/arm/mach-omap2/clockdomain44xx.c | ||
63 | @@ -93,6 +93,12 @@ static void omap4_clkdm_deny_idle(struct clockdomain *clkdm) | ||
64 | clkdm->cm_inst, clkdm->clkdm_offs); | ||
65 | } | ||
66 | |||
67 | +static int omap4_clkdm_is_idle(struct clockdomain *clkdm) | ||
68 | +{ | ||
69 | + return omap4_cminst_is_clkdm_in_hwsup(clkdm->prcm_partition, | ||
70 | + clkdm->cm_inst, clkdm->clkdm_offs); | ||
71 | +} | ||
72 | + | ||
73 | static int omap4_clkdm_clk_enable(struct clockdomain *clkdm) | ||
74 | { | ||
75 | bool hwsup = false; | ||
76 | @@ -132,6 +138,7 @@ struct clkdm_ops omap4_clkdm_operations = { | ||
77 | .clkdm_wakeup = omap4_clkdm_wakeup, | ||
78 | .clkdm_allow_idle = omap4_clkdm_allow_idle, | ||
79 | .clkdm_deny_idle = omap4_clkdm_deny_idle, | ||
80 | + .clkdm_is_idle = omap4_clkdm_is_idle, | ||
81 | .clkdm_clk_enable = omap4_clkdm_clk_enable, | ||
82 | .clkdm_clk_disable = omap4_clkdm_clk_disable, | ||
83 | }; | ||
84 | -- | ||
85 | 1.6.6.1 | ||
86 | |||
diff --git a/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0003-OMAP2-PM-Initialise-sleep_switch-to-a-non-valid-valu.patch b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0003-OMAP2-PM-Initialise-sleep_switch-to-a-non-valid-valu.patch new file mode 100644 index 00000000..65a4fcbf --- /dev/null +++ b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0003-OMAP2-PM-Initialise-sleep_switch-to-a-non-valid-valu.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | From dc352655af9c356f5c2db95c88718ed3a996569b Mon Sep 17 00:00:00 2001 | ||
2 | From: Rajendra Nayak <rnayak@ti.com> | ||
3 | Date: Tue, 5 Apr 2011 15:22:41 +0530 | ||
4 | Subject: [PATCH 3/6] OMAP2+: PM: Initialise sleep_switch to a non-valid value | ||
5 | |||
6 | sleep_switch which is initialised to 0 in omap_set_pwrdm_state | ||
7 | happens to be a valid sleep_switch type (FORCEWAKEUP_SWITCH) | ||
8 | which are defined as | ||
9 | #define FORCEWAKEUP_SWITCH 0 | ||
10 | #define LOWPOWERSTATE_SWITCH 1 | ||
11 | |||
12 | This causes the function to wrongly program some clock domains | ||
13 | even when the Powerdomain is in ON state. | ||
14 | |||
15 | Signed-off-by: Rajendra Nayak <rnayak@ti.com> | ||
16 | --- | ||
17 | arch/arm/mach-omap2/pm.c | 2 +- | ||
18 | 1 files changed, 1 insertions(+), 1 deletions(-) | ||
19 | |||
20 | diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c | ||
21 | index 49486f5..d48813f 100644 | ||
22 | --- a/arch/arm/mach-omap2/pm.c | ||
23 | +++ b/arch/arm/mach-omap2/pm.c | ||
24 | @@ -106,7 +106,7 @@ static void omap2_init_processor_devices(void) | ||
25 | int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state) | ||
26 | { | ||
27 | u32 cur_state; | ||
28 | - int sleep_switch = 0; | ||
29 | + int sleep_switch = -1; | ||
30 | int ret = 0; | ||
31 | |||
32 | if (pwrdm == NULL || IS_ERR(pwrdm)) | ||
33 | -- | ||
34 | 1.6.6.1 | ||
35 | |||
diff --git a/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0004-OMAP2-PM-idle-clkdms-only-if-already-in-idle.patch b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0004-OMAP2-PM-idle-clkdms-only-if-already-in-idle.patch new file mode 100644 index 00000000..7a94488f --- /dev/null +++ b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0004-OMAP2-PM-idle-clkdms-only-if-already-in-idle.patch | |||
@@ -0,0 +1,50 @@ | |||
1 | From 59bfd35cfef1c0b9c2c078082a47f957c27fa2fd Mon Sep 17 00:00:00 2001 | ||
2 | From: Rajendra Nayak <rnayak@ti.com> | ||
3 | Date: Tue, 5 Apr 2011 15:22:48 +0530 | ||
4 | Subject: [PATCH 4/6] OMAP2+: PM: idle clkdms only if already in idle | ||
5 | |||
6 | The omap_set_pwrdm_state function forces clockdomains | ||
7 | to idle, without checking the existing idle state | ||
8 | programmed, instead based solely on the HW capability | ||
9 | of the clockdomain to support idle. | ||
10 | This is wrong and the clockdomains should be idled | ||
11 | post a state_switch *only* if idle transitions on the | ||
12 | clockdomain were already enabled. | ||
13 | |||
14 | Signed-off-by: Rajendra Nayak <rnayak@ti.com> | ||
15 | --- | ||
16 | arch/arm/mach-omap2/pm.c | 4 +++- | ||
17 | 1 files changed, 3 insertions(+), 1 deletions(-) | ||
18 | |||
19 | diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c | ||
20 | index d48813f..840b0e1 100644 | ||
21 | --- a/arch/arm/mach-omap2/pm.c | ||
22 | +++ b/arch/arm/mach-omap2/pm.c | ||
23 | @@ -108,6 +108,7 @@ int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state) | ||
24 | u32 cur_state; | ||
25 | int sleep_switch = -1; | ||
26 | int ret = 0; | ||
27 | + int hwsup = 0; | ||
28 | |||
29 | if (pwrdm == NULL || IS_ERR(pwrdm)) | ||
30 | return -EINVAL; | ||
31 | @@ -127,6 +128,7 @@ int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state) | ||
32 | (pwrdm->flags & PWRDM_HAS_LOWPOWERSTATECHANGE)) { | ||
33 | sleep_switch = LOWPOWERSTATE_SWITCH; | ||
34 | } else { | ||
35 | + hwsup = clkdm_is_idle(pwrdm->pwrdm_clkdms[0]); | ||
36 | clkdm_wakeup(pwrdm->pwrdm_clkdms[0]); | ||
37 | pwrdm_wait_transition(pwrdm); | ||
38 | sleep_switch = FORCEWAKEUP_SWITCH; | ||
39 | @@ -142,7 +144,7 @@ int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state) | ||
40 | |||
41 | switch (sleep_switch) { | ||
42 | case FORCEWAKEUP_SWITCH: | ||
43 | - if (pwrdm->pwrdm_clkdms[0]->flags & CLKDM_CAN_ENABLE_AUTO) | ||
44 | + if (hwsup) | ||
45 | clkdm_allow_idle(pwrdm->pwrdm_clkdms[0]); | ||
46 | else | ||
47 | clkdm_sleep(pwrdm->pwrdm_clkdms[0]); | ||
48 | -- | ||
49 | 1.6.6.1 | ||
50 | |||
diff --git a/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0005-OMAP2-hwmod-Follow-the-recomended-PRCM-sequence.patch b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0005-OMAP2-hwmod-Follow-the-recomended-PRCM-sequence.patch new file mode 100644 index 00000000..0e9a2ee0 --- /dev/null +++ b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0005-OMAP2-hwmod-Follow-the-recomended-PRCM-sequence.patch | |||
@@ -0,0 +1,46 @@ | |||
1 | From 8bde567522cb85c91f49858a9026d3ec24283331 Mon Sep 17 00:00:00 2001 | ||
2 | From: Rajendra Nayak <rnayak@ti.com> | ||
3 | Date: Tue, 29 Mar 2011 22:37:43 +0530 | ||
4 | Subject: [PATCH 5/6] OMAP2+: hwmod: Follow the recomended PRCM sequence | ||
5 | |||
6 | Follow the recomended PRCM sequence. | ||
7 | This still does not take care of Optional clocks. | ||
8 | |||
9 | Signed-off-by: Rajendra Nayak <rnayak@ti.com> | ||
10 | --- | ||
11 | arch/arm/mach-omap2/omap_hwmod.c | 9 ++++++++- | ||
12 | 1 files changed, 8 insertions(+), 1 deletions(-) | ||
13 | |||
14 | diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c | ||
15 | index e034294..fc0db0c 100644 | ||
16 | --- a/arch/arm/mach-omap2/omap_hwmod.c | ||
17 | +++ b/arch/arm/mach-omap2/omap_hwmod.c | ||
18 | @@ -1223,6 +1223,7 @@ static int _reset(struct omap_hwmod *oh) | ||
19 | static int _enable(struct omap_hwmod *oh) | ||
20 | { | ||
21 | int r; | ||
22 | + int hwsup = 0; | ||
23 | |||
24 | if (oh->_state != _HWMOD_STATE_INITIALIZED && | ||
25 | oh->_state != _HWMOD_STATE_IDLE && | ||
26 | @@ -1250,10 +1251,16 @@ static int _enable(struct omap_hwmod *oh) | ||
27 | omap_hwmod_mux(oh->mux, _HWMOD_STATE_ENABLED); | ||
28 | |||
29 | _add_initiator_dep(oh, mpu_oh); | ||
30 | + if (oh->_clk && oh->_clk->clkdm) { | ||
31 | + hwsup = clkdm_is_idle(oh->_clk->clkdm); | ||
32 | + clkdm_wakeup(oh->_clk->clkdm); | ||
33 | + } | ||
34 | _enable_clocks(oh); | ||
35 | - | ||
36 | r = _wait_target_ready(oh); | ||
37 | if (!r) { | ||
38 | + if (oh->_clk && oh->_clk->clkdm && hwsup) | ||
39 | + clkdm_allow_idle(oh->_clk->clkdm); | ||
40 | + | ||
41 | oh->_state = _HWMOD_STATE_ENABLED; | ||
42 | |||
43 | /* Access the sysconfig only if the target is ready */ | ||
44 | -- | ||
45 | 1.6.6.1 | ||
46 | |||
diff --git a/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0006-OMAP-Serial-Check-wk_st-only-if-present.patch b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0006-OMAP-Serial-Check-wk_st-only-if-present.patch new file mode 100644 index 00000000..8c902575 --- /dev/null +++ b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0006-OMAP-Serial-Check-wk_st-only-if-present.patch | |||
@@ -0,0 +1,33 @@ | |||
1 | From 06ef3c33307622a7c4ab0f7cbfaf0163a1be5a81 Mon Sep 17 00:00:00 2001 | ||
2 | From: Rajendra Nayak <rnayak@ti.com> | ||
3 | Date: Tue, 2 Mar 2010 17:25:30 +0530 | ||
4 | Subject: [PATCH 6/6] OMAP: Serial: Check wk_st only if present | ||
5 | |||
6 | Uart on the resume path tries to read wk_st registers, even | ||
7 | on architectures were its not present/populated. | ||
8 | This patch fixes the issue. | ||
9 | |||
10 | Signed-off-by: Rajendra Nayak <rnayak@ti.com> | ||
11 | --- | ||
12 | arch/arm/mach-omap2/serial.c | 5 +++-- | ||
13 | 1 files changed, 3 insertions(+), 2 deletions(-) | ||
14 | |||
15 | diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c | ||
16 | index 1ac361b..a0046ce 100644 | ||
17 | --- a/arch/arm/mach-omap2/serial.c | ||
18 | +++ b/arch/arm/mach-omap2/serial.c | ||
19 | @@ -418,8 +418,9 @@ void omap_uart_resume_idle(int num) | ||
20 | } | ||
21 | |||
22 | /* Check for normal UART wakeup */ | ||
23 | - if (__raw_readl(uart->wk_st) & uart->wk_mask) | ||
24 | - omap_uart_block_sleep(uart); | ||
25 | + if (uart->wk_st && uart->wk_mask) | ||
26 | + if (__raw_readl(uart->wk_st) & uart->wk_mask) | ||
27 | + omap_uart_block_sleep(uart); | ||
28 | return; | ||
29 | } | ||
30 | } | ||
31 | -- | ||
32 | 1.6.6.1 | ||
33 | |||
diff --git a/recipes-kernel/linux/linux-omap_2.6.39.bb b/recipes-kernel/linux/linux-omap_2.6.39.bb index 23b1e397..94899fae 100644 --- a/recipes-kernel/linux/linux-omap_2.6.39.bb +++ b/recipes-kernel/linux/linux-omap_2.6.39.bb | |||
@@ -7,7 +7,7 @@ COMPATIBLE_MACHINE = "(beagleboard)" | |||
7 | 7 | ||
8 | # The main PR is now using MACHINE_KERNEL_PR, for omap3 see conf/machine/include/omap3.inc | 8 | # The main PR is now using MACHINE_KERNEL_PR, for omap3 see conf/machine/include/omap3.inc |
9 | SRCREV_pn-${PN} = "v2.6.39" | 9 | SRCREV_pn-${PN} = "v2.6.39" |
10 | MACHINE_KERNEL_PR_append = "b" | 10 | MACHINE_KERNEL_PR_append = "c" |
11 | 11 | ||
12 | FILESPATHPKG_prepend = "linux-omap-2.6.39:" | 12 | FILESPATHPKG_prepend = "linux-omap-2.6.39:" |
13 | 13 | ||
@@ -81,6 +81,13 @@ SRC_URI_append = " \ | |||
81 | file://pm/linux-omap-2.6.39-ti-pm-wip-cpufreq-fixes/0004-OMAP2-cpufreq-use-clk_init_cpufreq_table-if-OPPs-not.patch \ | 81 | file://pm/linux-omap-2.6.39-ti-pm-wip-cpufreq-fixes/0004-OMAP2-cpufreq-use-clk_init_cpufreq_table-if-OPPs-not.patch \ |
82 | file://pm/linux-omap-2.6.39-ti-pm-wip-cpufreq-fixes/0005-OMAP2-cpufreq-use-cpufreq_frequency_table_target.patch \ | 82 | file://pm/linux-omap-2.6.39-ti-pm-wip-cpufreq-fixes/0005-OMAP2-cpufreq-use-cpufreq_frequency_table_target.patch \ |
83 | file://pm/linux-omap-2.6.39-ti-pm-wip-cpufreq-fixes/0006-OMAP2-cpufreq-fix-freq_table-leak.patch \ | 83 | file://pm/linux-omap-2.6.39-ti-pm-wip-cpufreq-fixes/0006-OMAP2-cpufreq-fix-freq_table-leak.patch \ |
84 | \ | ||
85 | file://pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0001-OMAP2-clockdomain-Add-an-api-to-read-idle-mode.patch \ | ||
86 | file://pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0002-OMAP2-clockdomain-Add-SoC-support-for-clkdm_is_idle.patch \ | ||
87 | file://pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0003-OMAP2-PM-Initialise-sleep_switch-to-a-non-valid-valu.patch \ | ||
88 | file://pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0004-OMAP2-PM-idle-clkdms-only-if-already-in-idle.patch \ | ||
89 | file://pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0005-OMAP2-hwmod-Follow-the-recomended-PRCM-sequence.patch \ | ||
90 | file://pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0006-OMAP-Serial-Check-wk_st-only-if-present.patch \ | ||
84 | " | 91 | " |
85 | 92 | ||
86 | SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \ | 93 | SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \ |