diff options
Diffstat (limited to 'extras/recipes-kernel/linux/linux-omap-2.6.39/sakoman/0031-omap-overo-Add-opp-init.patch')
-rw-r--r-- | extras/recipes-kernel/linux/linux-omap-2.6.39/sakoman/0031-omap-overo-Add-opp-init.patch | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/extras/recipes-kernel/linux/linux-omap-2.6.39/sakoman/0031-omap-overo-Add-opp-init.patch b/extras/recipes-kernel/linux/linux-omap-2.6.39/sakoman/0031-omap-overo-Add-opp-init.patch new file mode 100644 index 00000000..07df7634 --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-2.6.39/sakoman/0031-omap-overo-Add-opp-init.patch @@ -0,0 +1,105 @@ +From 530abfee962141f263344b4de3ca48b57e5e514c Mon Sep 17 00:00:00 2001 +From: Steve Sakoman <steve@sakoman.com> +Date: Tue, 24 May 2011 20:36:07 -0700 +Subject: [PATCH 31/32] omap: overo: Add opp init + +omap: overo: Add opp init + +Work in progress + +Signed-off-by: Steve Sakoman <steve@sakoman.com> +--- + arch/arm/mach-omap2/board-overo.c | 49 +++++++++++++++++++++++++++++++++++++ + 1 files changed, 49 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c +index 05dd3eb..8c2d21f 100644 +--- a/arch/arm/mach-omap2/board-overo.c ++++ b/arch/arm/mach-omap2/board-overo.c +@@ -25,6 +25,7 @@ + #include <linux/init.h> + #include <linux/io.h> + #include <linux/kernel.h> ++#include <linux/opp.h> + #include <linux/platform_device.h> + #include <linux/i2c/twl.h> + #include <linux/regulator/machine.h> +@@ -43,6 +44,7 @@ + + #include <plat/board.h> + #include <plat/common.h> ++#include <plat/omap_device.h> + #include <plat/display.h> + #include <plat/panel-generic-dpi.h> + #include <mach/gpio.h> +@@ -54,6 +56,7 @@ + #include <plat/usb.h> + + #include "mux.h" ++#include "pm.h" + #include "sdram-micron-mt46h32m32lf-6.h" + #include "hsmmc.h" + +@@ -755,6 +758,51 @@ static struct omap_musb_board_data musb_board_data = { + .power = 100, + }; + ++static void __init overo_opp_init(void) ++{ ++ int r = 0; ++ ++ /* Initialize the omap3 opp table */ ++ if (omap3_opp_init()) { ++ pr_err("%s: opp default init failed\n", __func__); ++ return; ++ } ++ ++ /* Custom OPP enabled for 36/3730 */ ++ if (cpu_is_omap3630()) { ++ struct omap_hwmod *mh = omap_hwmod_lookup("mpu"); ++ struct omap_hwmod *dh = omap_hwmod_lookup("iva"); ++ struct device *dev; ++ ++ if (!mh || !dh) { ++ pr_err("%s: Aiee.. no mpu/dsp devices? %p %p\n", ++ __func__, mh, dh); ++ return; ++ } ++ /* Enable MPU 1GHz and lower opps */ ++ dev = &mh->od->pdev.dev; ++ r = opp_enable(dev, 1000000000); ++ ++ /* Enable IVA 800MHz and lower opps */ ++ dev = &dh->od->pdev.dev; ++ r |= opp_enable(dev, 800000000); ++ ++ if (r) { ++ pr_err("%s: failed to enable higher opp %d\n", ++ __func__, r); ++ /* ++ * Cleanup - disable the higher freqs - we dont care ++ * about the results ++ */ ++ dev = &mh->od->pdev.dev; ++ opp_disable(dev, 1000000000); ++ dev = &dh->od->pdev.dev; ++ opp_disable(dev, 800000000); ++ } ++ } ++ return; ++} ++ + static void __init overo_init(void) + { + omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); +@@ -770,6 +818,7 @@ static void __init overo_init(void) + overo_display_init(); + overo_init_led(); + overo_init_keys(); ++ overo_opp_init(); + + /* Ensure SDRC pins are mux'd for self-refresh */ + omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT); +-- +1.6.6.1 + |