diff options
author | Koen Kooi <koen@dominion.thruhere.net> | 2011-05-24 13:54:00 +0200 |
---|---|---|
committer | Koen Kooi <koen@dominion.thruhere.net> | 2011-05-24 13:59:32 +0200 |
commit | cf911bc4329a2fada6d8b4ba4b7d8865b41a9f92 (patch) | |
tree | c318b532ce50d5a0101fda381991a4987d770263 | |
parent | 97a3cfbcc7f8e5a5da52dc2fb306e25c29554825 (diff) | |
download | openembedded-core-contrib-cf911bc4329a2fada6d8b4ba4b7d8865b41a9f92.tar.gz |
linux-omap 2.6.39: add cpuidle patchset
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
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 9e81a05708..dd288e24d7 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 CONFIG_USB_SERIAL_ARK3116=m CONFIG_USB_SERIAL_BELKIN=m CONFIG_USB_SERIAL_CH341=m -CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_WHITEHEAT=n CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m # CONFIG_USB_SERIAL_CP210X is not set CONFIG_USB_SERIAL_CYPRESS_M8=m @@ -2681,9 +2681,9 @@ CONFIG_USB_SERIAL_SAMBA=m CONFIG_USB_SERIAL_SIEMENS_MPI=m CONFIG_USB_SERIAL_SIERRAWIRELESS=m # CONFIG_USB_SERIAL_SYMBOL is not set -CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_TI=n CONFIG_USB_SERIAL_CYBERJACK=m -CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_XIRCOM=n # CONFIG_USB_SERIAL_OPTION is not set CONFIG_USB_SERIAL_OMNINET=m 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 0000000000..d030c51968 --- /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 @@ +From d19005cc07645703a61d4645c343ed586919575d Mon Sep 17 00:00:00 2001 +From: Rajendra Nayak <rnayak@ti.com> +Date: Tue, 5 Apr 2011 15:22:31 +0530 +Subject: [PATCH 1/6] OMAP2+: clockdomain: Add an api to read idle mode + +Add a clockdomain api to check if hardware supervised +idle transitions are enabled on a clockdomain. + +Signed-off-by: Rajendra Nayak <rnayak@ti.com> +--- + arch/arm/mach-omap2/clockdomain.c | 21 +++++++++++++++++++++ + arch/arm/mach-omap2/clockdomain.h | 3 +++ + 2 files changed, 24 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-omap2/clockdomain.c b/arch/arm/mach-omap2/clockdomain.c +index 6cb6c03..2ab3686 100644 +--- a/arch/arm/mach-omap2/clockdomain.c ++++ b/arch/arm/mach-omap2/clockdomain.c +@@ -795,6 +795,27 @@ void clkdm_deny_idle(struct clockdomain *clkdm) + arch_clkdm->clkdm_deny_idle(clkdm); + } + ++/** ++ * clkdm_is_idle - Check if the clkdm hwsup/autoidle is enabled ++ * @clkdm: struct clockdomain * ++ * ++ * Returns true if the clockdomain is in hardware-supervised ++ * idle mode, or 0 otherwise. ++ * ++ */ ++int clkdm_is_idle(struct clockdomain *clkdm) ++{ ++ if (!clkdm) ++ return -EINVAL; ++ ++ if (!arch_clkdm || !arch_clkdm->clkdm_is_idle) ++ return -EINVAL; ++ ++ pr_debug("clockdomain: reading idle state for %s\n", clkdm->name); ++ ++ return arch_clkdm->clkdm_is_idle(clkdm); ++} ++ + + /* Clockdomain-to-clock framework interface code */ + +diff --git a/arch/arm/mach-omap2/clockdomain.h b/arch/arm/mach-omap2/clockdomain.h +index 5823584..085ed82 100644 +--- a/arch/arm/mach-omap2/clockdomain.h ++++ b/arch/arm/mach-omap2/clockdomain.h +@@ -138,6 +138,7 @@ struct clockdomain { + * @clkdm_wakeup: Force a clockdomain to wakeup + * @clkdm_allow_idle: Enable hw supervised idle transitions for clock domain + * @clkdm_deny_idle: Disable hw supervised idle transitions for clock domain ++ * @clkdm_is_idle: Check if hw supervised idle transitions are enabled + * @clkdm_clk_enable: Put the clkdm in right state for a clock enable + * @clkdm_clk_disable: Put the clkdm in right state for a clock disable + */ +@@ -154,6 +155,7 @@ struct clkdm_ops { + int (*clkdm_wakeup)(struct clockdomain *clkdm); + void (*clkdm_allow_idle)(struct clockdomain *clkdm); + void (*clkdm_deny_idle)(struct clockdomain *clkdm); ++ int (*clkdm_is_idle)(struct clockdomain *clkdm); + int (*clkdm_clk_enable)(struct clockdomain *clkdm); + int (*clkdm_clk_disable)(struct clockdomain *clkdm); + }; +@@ -177,6 +179,7 @@ int clkdm_clear_all_sleepdeps(struct clockdomain *clkdm); + + void clkdm_allow_idle(struct clockdomain *clkdm); + void clkdm_deny_idle(struct clockdomain *clkdm); ++int clkdm_is_idle(struct clockdomain *clkdm); + + int clkdm_wakeup(struct clockdomain *clkdm); + int clkdm_sleep(struct clockdomain *clkdm); +-- +1.6.6.1 + 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 0000000000..fa79d07418 --- /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 @@ +From 2863828e636c1766c6d2de85c900f6656f4b6675 Mon Sep 17 00:00:00 2001 +From: Rajendra Nayak <rnayak@ti.com> +Date: Tue, 5 Apr 2011 15:22:36 +0530 +Subject: [PATCH 2/6] OMAP2+: clockdomain: Add SoC support for clkdm_is_idle + +Add the SoC specific implemenation for clkdm_is_idle +for OMAP2/3 and OMAP4. + +Signed-off-by: Rajendra Nayak <rnayak@ti.com> +--- + arch/arm/mach-omap2/clockdomain2xxx_3xxx.c | 12 ++++++++++++ + arch/arm/mach-omap2/clockdomain44xx.c | 7 +++++++ + 2 files changed, 19 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c b/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c +index 48d0db7..db49baa 100644 +--- a/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c ++++ b/arch/arm/mach-omap2/clockdomain2xxx_3xxx.c +@@ -13,6 +13,7 @@ + */ + + #include <linux/types.h> ++#include <linux/errno.h> + #include <plat/prcm.h> + #include "prm.h" + #include "prm2xxx_3xxx.h" +@@ -146,6 +147,15 @@ static void omap2_clkdm_deny_idle(struct clockdomain *clkdm) + _clkdm_del_autodeps(clkdm); + } + ++static int omap2_clkdm_is_idle(struct clockdomain *clkdm) ++{ ++ if (!clkdm->clktrctrl_mask) ++ return -1; ++ ++ return omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs, ++ clkdm->clktrctrl_mask); ++} ++ + static void _enable_hwsup(struct clockdomain *clkdm) + { + if (cpu_is_omap24xx()) +@@ -252,6 +262,7 @@ struct clkdm_ops omap2_clkdm_operations = { + .clkdm_wakeup = omap2_clkdm_wakeup, + .clkdm_allow_idle = omap2_clkdm_allow_idle, + .clkdm_deny_idle = omap2_clkdm_deny_idle, ++ .clkdm_is_idle = omap2_clkdm_is_idle, + .clkdm_clk_enable = omap2_clkdm_clk_enable, + .clkdm_clk_disable = omap2_clkdm_clk_disable, + }; +@@ -269,6 +280,7 @@ struct clkdm_ops omap3_clkdm_operations = { + .clkdm_wakeup = omap3_clkdm_wakeup, + .clkdm_allow_idle = omap3_clkdm_allow_idle, + .clkdm_deny_idle = omap3_clkdm_deny_idle, ++ .clkdm_is_idle = omap2_clkdm_is_idle, + .clkdm_clk_enable = omap2_clkdm_clk_enable, + .clkdm_clk_disable = omap2_clkdm_clk_disable, + }; +diff --git a/arch/arm/mach-omap2/clockdomain44xx.c b/arch/arm/mach-omap2/clockdomain44xx.c +index a1a4ecd..4b10727 100644 +--- a/arch/arm/mach-omap2/clockdomain44xx.c ++++ b/arch/arm/mach-omap2/clockdomain44xx.c +@@ -93,6 +93,12 @@ static void omap4_clkdm_deny_idle(struct clockdomain *clkdm) + clkdm->cm_inst, clkdm->clkdm_offs); + } + ++static int omap4_clkdm_is_idle(struct clockdomain *clkdm) ++{ ++ return omap4_cminst_is_clkdm_in_hwsup(clkdm->prcm_partition, ++ clkdm->cm_inst, clkdm->clkdm_offs); ++} ++ + static int omap4_clkdm_clk_enable(struct clockdomain *clkdm) + { + bool hwsup = false; +@@ -132,6 +138,7 @@ struct clkdm_ops omap4_clkdm_operations = { + .clkdm_wakeup = omap4_clkdm_wakeup, + .clkdm_allow_idle = omap4_clkdm_allow_idle, + .clkdm_deny_idle = omap4_clkdm_deny_idle, ++ .clkdm_is_idle = omap4_clkdm_is_idle, + .clkdm_clk_enable = omap4_clkdm_clk_enable, + .clkdm_clk_disable = omap4_clkdm_clk_disable, + }; +-- +1.6.6.1 + 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 0000000000..65a4fcbf6e --- /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 @@ +From dc352655af9c356f5c2db95c88718ed3a996569b Mon Sep 17 00:00:00 2001 +From: Rajendra Nayak <rnayak@ti.com> +Date: Tue, 5 Apr 2011 15:22:41 +0530 +Subject: [PATCH 3/6] OMAP2+: PM: Initialise sleep_switch to a non-valid value + +sleep_switch which is initialised to 0 in omap_set_pwrdm_state +happens to be a valid sleep_switch type (FORCEWAKEUP_SWITCH) +which are defined as +#define FORCEWAKEUP_SWITCH 0 +#define LOWPOWERSTATE_SWITCH 1 + +This causes the function to wrongly program some clock domains +even when the Powerdomain is in ON state. + +Signed-off-by: Rajendra Nayak <rnayak@ti.com> +--- + arch/arm/mach-omap2/pm.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c +index 49486f5..d48813f 100644 +--- a/arch/arm/mach-omap2/pm.c ++++ b/arch/arm/mach-omap2/pm.c +@@ -106,7 +106,7 @@ static void omap2_init_processor_devices(void) + int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state) + { + u32 cur_state; +- int sleep_switch = 0; ++ int sleep_switch = -1; + int ret = 0; + + if (pwrdm == NULL || IS_ERR(pwrdm)) +-- +1.6.6.1 + 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 0000000000..7a94488fde --- /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 @@ +From 59bfd35cfef1c0b9c2c078082a47f957c27fa2fd Mon Sep 17 00:00:00 2001 +From: Rajendra Nayak <rnayak@ti.com> +Date: Tue, 5 Apr 2011 15:22:48 +0530 +Subject: [PATCH 4/6] OMAP2+: PM: idle clkdms only if already in idle + +The omap_set_pwrdm_state function forces clockdomains +to idle, without checking the existing idle state +programmed, instead based solely on the HW capability +of the clockdomain to support idle. +This is wrong and the clockdomains should be idled +post a state_switch *only* if idle transitions on the +clockdomain were already enabled. + +Signed-off-by: Rajendra Nayak <rnayak@ti.com> +--- + arch/arm/mach-omap2/pm.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c +index d48813f..840b0e1 100644 +--- a/arch/arm/mach-omap2/pm.c ++++ b/arch/arm/mach-omap2/pm.c +@@ -108,6 +108,7 @@ int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state) + u32 cur_state; + int sleep_switch = -1; + int ret = 0; ++ int hwsup = 0; + + if (pwrdm == NULL || IS_ERR(pwrdm)) + return -EINVAL; +@@ -127,6 +128,7 @@ int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state) + (pwrdm->flags & PWRDM_HAS_LOWPOWERSTATECHANGE)) { + sleep_switch = LOWPOWERSTATE_SWITCH; + } else { ++ hwsup = clkdm_is_idle(pwrdm->pwrdm_clkdms[0]); + clkdm_wakeup(pwrdm->pwrdm_clkdms[0]); + pwrdm_wait_transition(pwrdm); + sleep_switch = FORCEWAKEUP_SWITCH; +@@ -142,7 +144,7 @@ int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state) + + switch (sleep_switch) { + case FORCEWAKEUP_SWITCH: +- if (pwrdm->pwrdm_clkdms[0]->flags & CLKDM_CAN_ENABLE_AUTO) ++ if (hwsup) + clkdm_allow_idle(pwrdm->pwrdm_clkdms[0]); + else + clkdm_sleep(pwrdm->pwrdm_clkdms[0]); +-- +1.6.6.1 + 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 0000000000..0e9a2ee0f0 --- /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 @@ +From 8bde567522cb85c91f49858a9026d3ec24283331 Mon Sep 17 00:00:00 2001 +From: Rajendra Nayak <rnayak@ti.com> +Date: Tue, 29 Mar 2011 22:37:43 +0530 +Subject: [PATCH 5/6] OMAP2+: hwmod: Follow the recomended PRCM sequence + +Follow the recomended PRCM sequence. +This still does not take care of Optional clocks. + +Signed-off-by: Rajendra Nayak <rnayak@ti.com> +--- + arch/arm/mach-omap2/omap_hwmod.c | 9 ++++++++- + 1 files changed, 8 insertions(+), 1 deletions(-) + +diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c +index e034294..fc0db0c 100644 +--- a/arch/arm/mach-omap2/omap_hwmod.c ++++ b/arch/arm/mach-omap2/omap_hwmod.c +@@ -1223,6 +1223,7 @@ static int _reset(struct omap_hwmod *oh) + static int _enable(struct omap_hwmod *oh) + { + int r; ++ int hwsup = 0; + + if (oh->_state != _HWMOD_STATE_INITIALIZED && + oh->_state != _HWMOD_STATE_IDLE && +@@ -1250,10 +1251,16 @@ static int _enable(struct omap_hwmod *oh) + omap_hwmod_mux(oh->mux, _HWMOD_STATE_ENABLED); + + _add_initiator_dep(oh, mpu_oh); ++ if (oh->_clk && oh->_clk->clkdm) { ++ hwsup = clkdm_is_idle(oh->_clk->clkdm); ++ clkdm_wakeup(oh->_clk->clkdm); ++ } + _enable_clocks(oh); +- + r = _wait_target_ready(oh); + if (!r) { ++ if (oh->_clk && oh->_clk->clkdm && hwsup) ++ clkdm_allow_idle(oh->_clk->clkdm); ++ + oh->_state = _HWMOD_STATE_ENABLED; + + /* Access the sysconfig only if the target is ready */ +-- +1.6.6.1 + 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 0000000000..8c9025752a --- /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 @@ +From 06ef3c33307622a7c4ab0f7cbfaf0163a1be5a81 Mon Sep 17 00:00:00 2001 +From: Rajendra Nayak <rnayak@ti.com> +Date: Tue, 2 Mar 2010 17:25:30 +0530 +Subject: [PATCH 6/6] OMAP: Serial: Check wk_st only if present + +Uart on the resume path tries to read wk_st registers, even +on architectures were its not present/populated. +This patch fixes the issue. + +Signed-off-by: Rajendra Nayak <rnayak@ti.com> +--- + arch/arm/mach-omap2/serial.c | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c +index 1ac361b..a0046ce 100644 +--- a/arch/arm/mach-omap2/serial.c ++++ b/arch/arm/mach-omap2/serial.c +@@ -418,8 +418,9 @@ void omap_uart_resume_idle(int num) + } + + /* Check for normal UART wakeup */ +- if (__raw_readl(uart->wk_st) & uart->wk_mask) +- omap_uart_block_sleep(uart); ++ if (uart->wk_st && uart->wk_mask) ++ if (__raw_readl(uart->wk_st) & uart->wk_mask) ++ omap_uart_block_sleep(uart); + return; + } + } +-- +1.6.6.1 + diff --git a/recipes-kernel/linux/linux-omap_2.6.39.bb b/recipes-kernel/linux/linux-omap_2.6.39.bb index 23b1e3975e..94899fae30 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)" # The main PR is now using MACHINE_KERNEL_PR, for omap3 see conf/machine/include/omap3.inc SRCREV_pn-${PN} = "v2.6.39" -MACHINE_KERNEL_PR_append = "b" +MACHINE_KERNEL_PR_append = "c" FILESPATHPKG_prepend = "linux-omap-2.6.39:" @@ -81,6 +81,13 @@ SRC_URI_append = " \ file://pm/linux-omap-2.6.39-ti-pm-wip-cpufreq-fixes/0004-OMAP2-cpufreq-use-clk_init_cpufreq_table-if-OPPs-not.patch \ file://pm/linux-omap-2.6.39-ti-pm-wip-cpufreq-fixes/0005-OMAP2-cpufreq-use-cpufreq_frequency_table_target.patch \ file://pm/linux-omap-2.6.39-ti-pm-wip-cpufreq-fixes/0006-OMAP2-cpufreq-fix-freq_table-leak.patch \ + \ + file://pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0001-OMAP2-clockdomain-Add-an-api-to-read-idle-mode.patch \ + file://pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0002-OMAP2-clockdomain-Add-SoC-support-for-clkdm_is_idle.patch \ + file://pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0003-OMAP2-PM-Initialise-sleep_switch-to-a-non-valid-valu.patch \ + file://pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0004-OMAP2-PM-idle-clkdms-only-if-already-in-idle.patch \ + file://pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0005-OMAP2-hwmod-Follow-the-recomended-PRCM-sequence.patch \ + file://pm/linux-omap-2.6.39-ti-pm-wip-cpuidle/0006-OMAP-Serial-Check-wk_st-only-if-present.patch \ " SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \ |