From cdd0d121a3d1b714bcc4db9bc3cc76cccf0fe487 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Tue, 24 May 2011 10:22:12 +0200 Subject: linux-omap 2.6.39: add base PM set back in Signed-off-by: Koen Kooi --- ...age-remove-spurious-pr_notice-for-debugfs.patch | 30 ++++++++++ ...OMAP4-PM-remove-redundant-ifdef-CONFIG_PM.patch | 41 ++++++++++++++ ...reflex-fix-sr_late_init-error-path-in-pro.patch | 30 ++++++++++ ...AP3-smartreflex-request-the-memory-region.patch | 36 ++++++++++++ ...artreflex-fix-ioremap-leak-on-probe-error.patch | 66 ++++++++++++++++++++++ ...reflex-delete-instance-from-sr_list-on-pr.patch | 29 ++++++++++ ...reflex-delete-debugfs-entries-on-probe-er.patch | 48 ++++++++++++++++ ...uidle-remove-useless-SDP-specific-timings.patch | 57 +++++++++++++++++++ ...OMAP3-SR-make-notify-independent-of-class.patch | 48 ++++++++++++++++ ...010-OMAP3-SR-disable-interrupt-by-default.patch | 37 ++++++++++++ ...1-OMAP3-SR-enable-disable-SR-only-on-need.patch | 41 ++++++++++++++ .../0012-OMAP3-SR-fix-cosmetic-indentation.patch | 49 ++++++++++++++++ recipes-kernel/linux/linux-omap_2.6.39.bb | 15 ++++- 13 files changed, 526 insertions(+), 1 deletion(-) create mode 100644 recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0001-OMAP3-voltage-remove-spurious-pr_notice-for-debugfs.patch create mode 100644 recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0002-OMAP4-PM-remove-redundant-ifdef-CONFIG_PM.patch create mode 100644 recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0003-OMAP3-smartreflex-fix-sr_late_init-error-path-in-pro.patch create mode 100644 recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0004-OMAP3-smartreflex-request-the-memory-region.patch create mode 100644 recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0005-OMAP3-smartreflex-fix-ioremap-leak-on-probe-error.patch create mode 100644 recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0006-OMAP3-smartreflex-delete-instance-from-sr_list-on-pr.patch create mode 100644 recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0007-OMAP3-smartreflex-delete-debugfs-entries-on-probe-er.patch create mode 100644 recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0008-OMAP3-cpuidle-remove-useless-SDP-specific-timings.patch create mode 100644 recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0009-OMAP3-SR-make-notify-independent-of-class.patch create mode 100644 recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0010-OMAP3-SR-disable-interrupt-by-default.patch create mode 100644 recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0011-OMAP3-SR-enable-disable-SR-only-on-need.patch create mode 100644 recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0012-OMAP3-SR-fix-cosmetic-indentation.patch diff --git a/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0001-OMAP3-voltage-remove-spurious-pr_notice-for-debugfs.patch b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0001-OMAP3-voltage-remove-spurious-pr_notice-for-debugfs.patch new file mode 100644 index 0000000000..f1a5bbbc90 --- /dev/null +++ b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0001-OMAP3-voltage-remove-spurious-pr_notice-for-debugfs.patch @@ -0,0 +1,30 @@ +From 26d1f5966161349845884ae3c8f558d2580f1eb9 Mon Sep 17 00:00:00 2001 +From: Nishanth Menon +Date: Sat, 12 Feb 2011 17:27:14 +0530 +Subject: [PATCH 01/12] OMAP3+: voltage: remove spurious pr_notice for debugfs + +cat of debugfs entry for vp_volt provides voltage. The additional pr_notice +is just spam on console and provides no additional information. + +Signed-off-by: Nishanth Menon +Signed-off-by: Kevin Hilman +Signed-off-by: Koen Kooi +--- + arch/arm/mach-omap2/voltage.c | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +diff --git a/arch/arm/mach-omap2/voltage.c b/arch/arm/mach-omap2/voltage.c +index 0c1552d..9ef3789 100644 +--- a/arch/arm/mach-omap2/voltage.c ++++ b/arch/arm/mach-omap2/voltage.c +@@ -148,7 +148,6 @@ static int vp_volt_debug_get(void *data, u64 *val) + } + + vsel = vdd->read_reg(prm_mod_offs, vdd->vp_data->voltage); +- pr_notice("curr_vsel = %x\n", vsel); + + if (!vdd->pmic_info->vsel_to_uv) { + pr_warning("PMIC function to convert vsel to voltage" +-- +1.6.6.1 + diff --git a/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0002-OMAP4-PM-remove-redundant-ifdef-CONFIG_PM.patch b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0002-OMAP4-PM-remove-redundant-ifdef-CONFIG_PM.patch new file mode 100644 index 0000000000..186c6846aa --- /dev/null +++ b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0002-OMAP4-PM-remove-redundant-ifdef-CONFIG_PM.patch @@ -0,0 +1,41 @@ +From f9e0aa8fa5538ddd92e12c5a062e78b0ae5e47e9 Mon Sep 17 00:00:00 2001 +From: Nishanth Menon +Date: Sun, 13 Mar 2011 09:07:23 +0530 +Subject: [PATCH 02/12] OMAP4: PM: remove redundant #ifdef CONFIG_PM + +pm44xx.c is built only when CONFIG_PM is setup, +remove redundant CONFIG_PM check. + +This also fixes: +https://bugzilla.kernel.org/show_bug.cgi?id=25022 + +Reported-by: Martin Etti + +Signed-off-by: Nishanth Menon +Signed-off-by: Kevin Hilman +Signed-off-by: Koen Kooi +--- + arch/arm/mach-omap2/pm44xx.c | 2 -- + 1 files changed, 0 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/mach-omap2/pm44xx.c b/arch/arm/mach-omap2/pm44xx.c +index 76cfff2..59a870b 100644 +--- a/arch/arm/mach-omap2/pm44xx.c ++++ b/arch/arm/mach-omap2/pm44xx.c +@@ -105,13 +105,11 @@ static int __init omap4_pm_init(void) + + pr_err("Power Management for TI OMAP4.\n"); + +-#ifdef CONFIG_PM + ret = pwrdm_for_each(pwrdms_setup, NULL); + if (ret) { + pr_err("Failed to setup powerdomains\n"); + goto err2; + } +-#endif + + #ifdef CONFIG_SUSPEND + suspend_set_ops(&omap_pm_ops); +-- +1.6.6.1 + diff --git a/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0003-OMAP3-smartreflex-fix-sr_late_init-error-path-in-pro.patch b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0003-OMAP3-smartreflex-fix-sr_late_init-error-path-in-pro.patch new file mode 100644 index 0000000000..8e6a11bb39 --- /dev/null +++ b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0003-OMAP3-smartreflex-fix-sr_late_init-error-path-in-pro.patch @@ -0,0 +1,30 @@ +From c57f8521c772b2a934dc090d68d7ca3b33c99a46 Mon Sep 17 00:00:00 2001 +From: Aaro Koskinen +Date: Thu, 24 Mar 2011 18:35:31 +0200 +Subject: [PATCH 03/12] OMAP3+: smartreflex: fix sr_late_init() error path in probe + +sr_late_init() will take care of freeing the resources. + +Signed-off-by: Aaro Koskinen +Signed-off-by: Kevin Hilman +Signed-off-by: Koen Kooi +--- + arch/arm/mach-omap2/smartreflex.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c +index 13e24f9..dbc4b6f 100644 +--- a/arch/arm/mach-omap2/smartreflex.c ++++ b/arch/arm/mach-omap2/smartreflex.c +@@ -883,7 +883,7 @@ static int __init omap_sr_probe(struct platform_device *pdev) + ret = sr_late_init(sr_info); + if (ret) { + pr_warning("%s: Error in SR late init\n", __func__); +- goto err_release_region; ++ return ret; + } + } + +-- +1.6.6.1 + diff --git a/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0004-OMAP3-smartreflex-request-the-memory-region.patch b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0004-OMAP3-smartreflex-request-the-memory-region.patch new file mode 100644 index 0000000000..335f092a62 --- /dev/null +++ b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0004-OMAP3-smartreflex-request-the-memory-region.patch @@ -0,0 +1,36 @@ +From e09d0dd5be3f582aaf4626b3be0eeba42ca598bd Mon Sep 17 00:00:00 2001 +From: Aaro Koskinen +Date: Thu, 24 Mar 2011 18:35:32 +0200 +Subject: [PATCH 04/12] OMAP3+: smartreflex: request the memory region + +We are releasing the memory region, but never actually request it. + +Signed-off-by: Aaro Koskinen +Signed-off-by: Kevin Hilman +Signed-off-by: Koen Kooi +--- + arch/arm/mach-omap2/smartreflex.c | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c +index dbc4b6f..703143a 100644 +--- a/arch/arm/mach-omap2/smartreflex.c ++++ b/arch/arm/mach-omap2/smartreflex.c +@@ -847,6 +847,14 @@ static int __init omap_sr_probe(struct platform_device *pdev) + goto err_free_devinfo; + } + ++ mem = request_mem_region(mem->start, resource_size(mem), ++ dev_name(&pdev->dev)); ++ if (!mem) { ++ dev_err(&pdev->dev, "%s: no mem region\n", __func__); ++ ret = -EBUSY; ++ goto err_free_devinfo; ++ } ++ + irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); + + pm_runtime_enable(&pdev->dev); +-- +1.6.6.1 + diff --git a/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0005-OMAP3-smartreflex-fix-ioremap-leak-on-probe-error.patch b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0005-OMAP3-smartreflex-fix-ioremap-leak-on-probe-error.patch new file mode 100644 index 0000000000..7783da7c81 --- /dev/null +++ b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0005-OMAP3-smartreflex-fix-ioremap-leak-on-probe-error.patch @@ -0,0 +1,66 @@ +From ca7c837b7f6c37c86d0646774a60d82848557411 Mon Sep 17 00:00:00 2001 +From: Aaro Koskinen +Date: Thu, 24 Mar 2011 18:35:33 +0200 +Subject: [PATCH 05/12] OMAP3+: smartreflex: fix ioremap leak on probe error + +Add missing iounmap() to error paths. + +Signed-off-by: Aaro Koskinen +Signed-off-by: Kevin Hilman +Signed-off-by: Koen Kooi +--- + arch/arm/mach-omap2/smartreflex.c | 10 ++++++---- + 1 files changed, 6 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c +index 703143a..156807e 100644 +--- a/arch/arm/mach-omap2/smartreflex.c ++++ b/arch/arm/mach-omap2/smartreflex.c +@@ -904,7 +904,7 @@ static int __init omap_sr_probe(struct platform_device *pdev) + vdd_dbg_dir = omap_voltage_get_dbgdir(sr_info->voltdm); + if (!vdd_dbg_dir) { + ret = -EINVAL; +- goto err_release_region; ++ goto err_iounmap; + } + + sr_info->dbg_dir = debugfs_create_dir("smartreflex", vdd_dbg_dir); +@@ -912,7 +912,7 @@ static int __init omap_sr_probe(struct platform_device *pdev) + dev_err(&pdev->dev, "%s: Unable to create debugfs directory\n", + __func__); + ret = PTR_ERR(sr_info->dbg_dir); +- goto err_release_region; ++ goto err_iounmap; + } + + (void) debugfs_create_file("autocomp", S_IRUGO | S_IWUSR, +@@ -929,7 +929,7 @@ static int __init omap_sr_probe(struct platform_device *pdev) + dev_err(&pdev->dev, "%s: Unable to create debugfs directory" + "for n-values\n", __func__); + ret = PTR_ERR(nvalue_dir); +- goto err_release_region; ++ goto err_iounmap; + } + + omap_voltage_get_volttable(sr_info->voltdm, &volt_data); +@@ -939,7 +939,7 @@ static int __init omap_sr_probe(struct platform_device *pdev) + "entries for n-values\n", + __func__, sr_info->voltdm->name); + ret = -ENODATA; +- goto err_release_region; ++ goto err_iounmap; + } + + for (i = 0; i < sr_info->nvalue_count; i++) { +@@ -953,6 +953,8 @@ static int __init omap_sr_probe(struct platform_device *pdev) + + return ret; + ++err_iounmap: ++ iounmap(sr_info->base); + err_release_region: + release_mem_region(mem->start, resource_size(mem)); + err_free_devinfo: +-- +1.6.6.1 + diff --git a/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0006-OMAP3-smartreflex-delete-instance-from-sr_list-on-pr.patch b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0006-OMAP3-smartreflex-delete-instance-from-sr_list-on-pr.patch new file mode 100644 index 0000000000..8c5fe19d79 --- /dev/null +++ b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0006-OMAP3-smartreflex-delete-instance-from-sr_list-on-pr.patch @@ -0,0 +1,29 @@ +From 11af4217e7e6c2c21d1fe9e5f317a5baabf9a361 Mon Sep 17 00:00:00 2001 +From: Aaro Koskinen +Date: Thu, 24 Mar 2011 18:35:34 +0200 +Subject: [PATCH 06/12] OMAP3+: smartreflex: delete instance from sr_list on probe error + +If the probe fails, the node should be deleted from sr_list. + +Signed-off-by: Aaro Koskinen +Signed-off-by: Kevin Hilman +Signed-off-by: Koen Kooi +--- + arch/arm/mach-omap2/smartreflex.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c +index 156807e..f0a488a 100644 +--- a/arch/arm/mach-omap2/smartreflex.c ++++ b/arch/arm/mach-omap2/smartreflex.c +@@ -954,6 +954,7 @@ static int __init omap_sr_probe(struct platform_device *pdev) + return ret; + + err_iounmap: ++ list_del(&sr_info->node); + iounmap(sr_info->base); + err_release_region: + release_mem_region(mem->start, resource_size(mem)); +-- +1.6.6.1 + diff --git a/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0007-OMAP3-smartreflex-delete-debugfs-entries-on-probe-er.patch b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0007-OMAP3-smartreflex-delete-debugfs-entries-on-probe-er.patch new file mode 100644 index 0000000000..1f4d43c847 --- /dev/null +++ b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0007-OMAP3-smartreflex-delete-debugfs-entries-on-probe-er.patch @@ -0,0 +1,48 @@ +From d4ead89805d1146f79a3204467eecb19dcdc442a Mon Sep 17 00:00:00 2001 +From: Aaro Koskinen +Date: Thu, 24 Mar 2011 18:35:35 +0200 +Subject: [PATCH 07/12] OMAP3+: smartreflex: delete debugfs entries on probe error + +Delete created debugfs entries if probe fails. + +Signed-off-by: Aaro Koskinen +Signed-off-by: Kevin Hilman +Signed-off-by: Koen Kooi +--- + arch/arm/mach-omap2/smartreflex.c | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c +index f0a488a..fb7dc52 100644 +--- a/arch/arm/mach-omap2/smartreflex.c ++++ b/arch/arm/mach-omap2/smartreflex.c +@@ -929,7 +929,7 @@ static int __init omap_sr_probe(struct platform_device *pdev) + dev_err(&pdev->dev, "%s: Unable to create debugfs directory" + "for n-values\n", __func__); + ret = PTR_ERR(nvalue_dir); +- goto err_iounmap; ++ goto err_debugfs; + } + + omap_voltage_get_volttable(sr_info->voltdm, &volt_data); +@@ -939,7 +939,7 @@ static int __init omap_sr_probe(struct platform_device *pdev) + "entries for n-values\n", + __func__, sr_info->voltdm->name); + ret = -ENODATA; +- goto err_iounmap; ++ goto err_debugfs; + } + + for (i = 0; i < sr_info->nvalue_count; i++) { +@@ -953,6 +953,8 @@ static int __init omap_sr_probe(struct platform_device *pdev) + + return ret; + ++err_debugfs: ++ debugfs_remove_recursive(sr_info->dbg_dir); + err_iounmap: + list_del(&sr_info->node); + iounmap(sr_info->base); +-- +1.6.6.1 + diff --git a/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0008-OMAP3-cpuidle-remove-useless-SDP-specific-timings.patch b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0008-OMAP3-cpuidle-remove-useless-SDP-specific-timings.patch new file mode 100644 index 0000000000..185454e336 --- /dev/null +++ b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0008-OMAP3-cpuidle-remove-useless-SDP-specific-timings.patch @@ -0,0 +1,57 @@ +From 9f4d8f56ce3268ee3e2efc9489d50d66d361f32d Mon Sep 17 00:00:00 2001 +From: Jean Pihet +Date: Fri, 29 Apr 2011 11:26:22 +0200 +Subject: [PATCH 08/12] OMAP3 cpuidle: remove useless SDP specific timings + +The cpuidle states settings can be overriden by some board- +specific settings, by calling omap3_pm_init_cpuidle. +Remove the 3430SDP specific states settings registration +since the figures are identical to the default ones (in cpuidle34xx.c). + +Signed-off-by: Jean Pihet +Signed-off-by: Kevin Hilman +Signed-off-by: Koen Kooi +--- + arch/arm/mach-omap2/board-3430sdp.c | 19 ------------------- + 1 files changed, 0 insertions(+), 19 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c +index 9afd087..7ffad7b 100644 +--- a/arch/arm/mach-omap2/board-3430sdp.c ++++ b/arch/arm/mach-omap2/board-3430sdp.c +@@ -59,24 +59,6 @@ + + #define TWL4030_MSECURE_GPIO 22 + +-/* FIXME: These values need to be updated based on more profiling on 3430sdp*/ +-static struct cpuidle_params omap3_cpuidle_params_table[] = { +- /* C1 */ +- {1, 2, 2, 5}, +- /* C2 */ +- {1, 10, 10, 30}, +- /* C3 */ +- {1, 50, 50, 300}, +- /* C4 */ +- {1, 1500, 1800, 4000}, +- /* C5 */ +- {1, 2500, 7500, 12000}, +- /* C6 */ +- {1, 3000, 8500, 15000}, +- /* C7 */ +- {1, 10000, 30000, 300000}, +-}; +- + static uint32_t board_keymap[] = { + KEY(0, 0, KEY_LEFT), + KEY(0, 1, KEY_RIGHT), +@@ -883,7 +865,6 @@ static void __init omap_3430sdp_init(void) + omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); + omap_board_config = sdp3430_config; + omap_board_config_size = ARRAY_SIZE(sdp3430_config); +- omap3_pm_init_cpuidle(omap3_cpuidle_params_table); + omap3430_i2c_init(); + omap_display_init(&sdp3430_dss_data); + if (omap_rev() > OMAP3430_REV_ES1_0) +-- +1.6.6.1 + diff --git a/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0009-OMAP3-SR-make-notify-independent-of-class.patch b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0009-OMAP3-SR-make-notify-independent-of-class.patch new file mode 100644 index 0000000000..88a45ba32b --- /dev/null +++ b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0009-OMAP3-SR-make-notify-independent-of-class.patch @@ -0,0 +1,48 @@ +From 62629e3664ff1e3c9b34b94b81eafa153671e1ed Mon Sep 17 00:00:00 2001 +From: Nishanth Menon +Date: Mon, 14 Feb 2011 12:16:36 +0530 +Subject: [PATCH 09/12] OMAP3+: SR: make notify independent of class + +Interrupt notification mechanism of SmartReflex can be used by the +choice of implementation of the class driver. For example, Class 2 and +Class 1.5 of SmartReflex can both use the interrupt notification to +identify the transition of voltage or other events. + +Hence, the actual class does not matter for notifier. Let the class +driver's handling decide how it should be used. SmartReflex driver +should provide just the primitives. + +Signed-off-by: Nishanth Menon +Signed-off-by: Kevin Hilman +Signed-off-by: Koen Kooi +--- + arch/arm/mach-omap2/smartreflex.c | 6 ++---- + 1 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c +index fb7dc52..3ee7261 100644 +--- a/arch/arm/mach-omap2/smartreflex.c ++++ b/arch/arm/mach-omap2/smartreflex.c +@@ -143,7 +143,7 @@ static irqreturn_t sr_interrupt(int irq, void *data) + sr_write_reg(sr_info, IRQSTATUS, status); + } + +- if (sr_class->class_type == SR_CLASS2 && sr_class->notify) ++ if (sr_class->notify) + sr_class->notify(sr_info->voltdm, status); + + return IRQ_HANDLED; +@@ -258,9 +258,7 @@ static int sr_late_init(struct omap_sr *sr_info) + struct resource *mem; + int ret = 0; + +- if (sr_class->class_type == SR_CLASS2 && +- sr_class->notify_flags && sr_info->irq) { +- ++ if (sr_class->notify && sr_class->notify_flags && sr_info->irq) { + name = kasprintf(GFP_KERNEL, "sr_%s", sr_info->voltdm->name); + if (name == NULL) { + ret = -ENOMEM; +-- +1.6.6.1 + diff --git a/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0010-OMAP3-SR-disable-interrupt-by-default.patch b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0010-OMAP3-SR-disable-interrupt-by-default.patch new file mode 100644 index 0000000000..da171b021a --- /dev/null +++ b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0010-OMAP3-SR-disable-interrupt-by-default.patch @@ -0,0 +1,37 @@ +From 4aa0f416a44a7053d223f80a8e4be9d0ebdd31ae Mon Sep 17 00:00:00 2001 +From: Nishanth Menon +Date: Mon, 14 Feb 2011 12:41:10 +0530 +Subject: [PATCH 10/12] OMAP3+: SR: disable interrupt by default + +We will enable and disable interrupt on a need basis in the class +driver. We need to keep the IRQ disabled by default else the +forceupdate or vcbypass events could trigger events that we don't +need/expect to handle. + +This is a preparation for SmartReflex AVS class drivers such as +class 2 and class 1.5 which would need to use interrupts. Existing +SmartReflex AVS class 3 driver does not require to use interrupts +and is not impacted by this change. + +Signed-off-by: Nishanth Menon +Signed-off-by: Kevin Hilman +Signed-off-by: Koen Kooi +--- + arch/arm/mach-omap2/smartreflex.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c +index 3ee7261..616ef62 100644 +--- a/arch/arm/mach-omap2/smartreflex.c ++++ b/arch/arm/mach-omap2/smartreflex.c +@@ -268,6 +268,7 @@ static int sr_late_init(struct omap_sr *sr_info) + 0, name, (void *)sr_info); + if (ret) + goto error; ++ disable_irq(sr_info->irq); + } + + if (pdata && pdata->enable_on_init) +-- +1.6.6.1 + diff --git a/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0011-OMAP3-SR-enable-disable-SR-only-on-need.patch b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0011-OMAP3-SR-enable-disable-SR-only-on-need.patch new file mode 100644 index 0000000000..925beddcf5 --- /dev/null +++ b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0011-OMAP3-SR-enable-disable-SR-only-on-need.patch @@ -0,0 +1,41 @@ +From aa44b466398b8b104c07ff1b7209509300fc4f47 Mon Sep 17 00:00:00 2001 +From: Nishanth Menon +Date: Mon, 14 Feb 2011 21:14:17 +0530 +Subject: [PATCH 11/12] OMAP3+: SR: enable/disable SR only on need + +Since we already know the state of the autocomp enablement, we can +see if the requested state is different from the current state and +enable/disable SR only on the need basis. + +Signed-off-by: Nishanth Menon +Signed-off-by: Kevin Hilman +Signed-off-by: Koen Kooi +--- + arch/arm/mach-omap2/smartreflex.c | 11 +++++++---- + 1 files changed, 7 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c +index 616ef62..3bd9fac 100644 +--- a/arch/arm/mach-omap2/smartreflex.c ++++ b/arch/arm/mach-omap2/smartreflex.c +@@ -807,10 +807,13 @@ static int omap_sr_autocomp_store(void *data, u64 val) + return -EINVAL; + } + +- if (!val) +- sr_stop_vddautocomp(sr_info); +- else +- sr_start_vddautocomp(sr_info); ++ /* control enable/disable only if there is a delta in value */ ++ if (sr_info->autocomp_active != val) { ++ if (!val) ++ sr_stop_vddautocomp(sr_info); ++ else ++ sr_start_vddautocomp(sr_info); ++ } + + return 0; + } +-- +1.6.6.1 + diff --git a/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0012-OMAP3-SR-fix-cosmetic-indentation.patch b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0012-OMAP3-SR-fix-cosmetic-indentation.patch new file mode 100644 index 0000000000..7241112e13 --- /dev/null +++ b/recipes-kernel/linux/linux-omap-2.6.39/pm/linux-omap-2.6.39-ti-pm/0012-OMAP3-SR-fix-cosmetic-indentation.patch @@ -0,0 +1,49 @@ +From 0ea922a6c65ea07b685ec05085dd5d3ec4ac87e2 Mon Sep 17 00:00:00 2001 +From: Nishanth Menon +Date: Mon, 14 Feb 2011 12:33:13 +0530 +Subject: [PATCH 12/12] OMAP3+: SR: fix cosmetic indentation + +Error label case seems to have a 2 tab indentation when just 1 is +necessary. + +Signed-off-by: Nishanth Menon +Signed-off-by: Kevin Hilman +Signed-off-by: Koen Kooi +--- + arch/arm/mach-omap2/smartreflex.c | 20 ++++++++++---------- + 1 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/arch/arm/mach-omap2/smartreflex.c b/arch/arm/mach-omap2/smartreflex.c +index 3bd9fac..2ce2fb7 100644 +--- a/arch/arm/mach-omap2/smartreflex.c ++++ b/arch/arm/mach-omap2/smartreflex.c +@@ -277,16 +277,16 @@ static int sr_late_init(struct omap_sr *sr_info) + return ret; + + error: +- iounmap(sr_info->base); +- mem = platform_get_resource(sr_info->pdev, IORESOURCE_MEM, 0); +- release_mem_region(mem->start, resource_size(mem)); +- list_del(&sr_info->node); +- dev_err(&sr_info->pdev->dev, "%s: ERROR in registering" +- "interrupt handler. Smartreflex will" +- "not function as desired\n", __func__); +- kfree(name); +- kfree(sr_info); +- return ret; ++ iounmap(sr_info->base); ++ mem = platform_get_resource(sr_info->pdev, IORESOURCE_MEM, 0); ++ release_mem_region(mem->start, resource_size(mem)); ++ list_del(&sr_info->node); ++ dev_err(&sr_info->pdev->dev, "%s: ERROR in registering" ++ "interrupt handler. Smartreflex will" ++ "not function as desired\n", __func__); ++ kfree(name); ++ kfree(sr_info); ++ return ret; + } + + static void sr_v1_disable(struct omap_sr *sr) +-- +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 64ddd4abe4..23b1e3975e 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 = "a" +MACHINE_KERNEL_PR_append = "b" FILESPATHPKG_prepend = "linux-omap-2.6.39:" @@ -50,6 +50,19 @@ SRC_URI_append = " \ file://beagle/0002-OMAP3-beagle-add-support-for-expansionboards.patch \ file://beagle/0003-OMAP3-beagle-add-MADC-support.patch \ \ + file://pm/linux-omap-2.6.39-ti-pm/0001-OMAP3-voltage-remove-spurious-pr_notice-for-debugfs.patch \ + file://pm/linux-omap-2.6.39-ti-pm/0002-OMAP4-PM-remove-redundant-ifdef-CONFIG_PM.patch \ + file://pm/linux-omap-2.6.39-ti-pm/0003-OMAP3-smartreflex-fix-sr_late_init-error-path-in-pro.patch \ + file://pm/linux-omap-2.6.39-ti-pm/0004-OMAP3-smartreflex-request-the-memory-region.patch \ + file://pm/linux-omap-2.6.39-ti-pm/0005-OMAP3-smartreflex-fix-ioremap-leak-on-probe-error.patch \ + file://pm/linux-omap-2.6.39-ti-pm/0006-OMAP3-smartreflex-delete-instance-from-sr_list-on-pr.patch \ + file://pm/linux-omap-2.6.39-ti-pm/0007-OMAP3-smartreflex-delete-debugfs-entries-on-probe-er.patch \ + file://pm/linux-omap-2.6.39-ti-pm/0008-OMAP3-cpuidle-remove-useless-SDP-specific-timings.patch \ + file://pm/linux-omap-2.6.39-ti-pm/0009-OMAP3-SR-make-notify-independent-of-class.patch \ + file://pm/linux-omap-2.6.39-ti-pm/0010-OMAP3-SR-disable-interrupt-by-default.patch \ + file://pm/linux-omap-2.6.39-ti-pm/0011-OMAP3-SR-enable-disable-SR-only-on-need.patch \ + file://pm/linux-omap-2.6.39-ti-pm/0012-OMAP3-SR-fix-cosmetic-indentation.patch \ + \ file://pm/linux-omap-2.6.39-ti-pm-wip-cpufreq/0001-OMAP-CPUfreq-ensure-driver-initializes-after-cpufreq.patch \ file://pm/linux-omap-2.6.39-ti-pm-wip-cpufreq/0002-OMAP-CPUfreq-ensure-policy-is-fully-initialized.patch \ file://pm/linux-omap-2.6.39-ti-pm-wip-cpufreq/0003-OMAP3-PM-CPUFreq-driver-for-OMAP3.patch \ -- cgit 1.2.3-korg