summaryrefslogtreecommitdiff
path: root/packages/linux/linux-omap
diff options
context:
space:
mode:
authorKoen Kooi <koen@openembedded.org>2008-09-16 09:13:06 +0000
committerKoen Kooi <koen@openembedded.org>2008-09-16 09:13:06 +0000
commit19c3e7433301c85c65b48080f6929eda0cca8818 (patch)
tree7e82b4efe6b9b4b09632a4078646d294b140a7a9 /packages/linux/linux-omap
parent8ba68cd0307c3029df332f01116e2e9b1b06a759 (diff)
linux-omap git: refresh patchset
Diffstat (limited to 'packages/linux/linux-omap')
-rw-r--r--packages/linux/linux-omap/000-mru-make-video-mode-selcatable.diff155
-rw-r--r--packages/linux/linux-omap/002-mru-set-default-800x600.diff61
-rw-r--r--packages/linux/linux-omap/004-mru-export-omapfb-register-panel.diff25
-rw-r--r--packages/linux/linux-omap/005-mru-add-omapfb-unregister-panel.diff67
-rw-r--r--packages/linux/linux-omap/006-mru-lcd-as-modules.diff174
-rw-r--r--packages/linux/linux-omap/007-mru-omapfb-as-module.diff50
-rw-r--r--packages/linux/linux-omap/008-mru-lcd-omap3beagle-license.diff22
-rw-r--r--packages/linux/linux-omap/009-mru-unregister-beagle-lcd.diff24
-rw-r--r--packages/linux/linux-omap/03-enable-overlay-opt.diff27
-rw-r--r--packages/linux/linux-omap/06-ensure-fclk.diff31
-rw-r--r--packages/linux/linux-omap/07-set-burst-size.diff21
-rw-r--r--packages/linux/linux-omap/beagleboard/defconfig2
-rw-r--r--packages/linux/linux-omap/mru-add-clk-get-parent.diff (renamed from packages/linux/linux-omap/mru-clocks2.diff)24
-rw-r--r--packages/linux/linux-omap/mru-enable-overlay-optimalization.diff (renamed from packages/linux/linux-omap/001-mru-enable-overlay.diff)22
-rw-r--r--packages/linux/linux-omap/mru-fix-display-panning.diff (renamed from packages/linux/linux-omap/05-fix-display-panning.diff)22
-rw-r--r--packages/linux/linux-omap/mru-fix-timings.diff (renamed from packages/linux/linux-omap/01-fix-timing-print.diff)17
-rw-r--r--packages/linux/linux-omap/mru-improve-pixclock-config.diff (renamed from packages/linux/linux-omap/mru-clocks3.diff)23
-rw-r--r--packages/linux/linux-omap/mru-make-dpll4-m4-ck-programmable.diff (renamed from packages/linux/linux-omap/mru-clocks1.diff)16
-rw-r--r--packages/linux/linux-omap/mru-make-video-timings-selectable.diff (renamed from packages/linux/linux-omap/003-mru-omapfb-more-video-modes.diff)217
-rw-r--r--packages/linux/linux-omap/no-cortex-deadlock.patch68
-rw-r--r--packages/linux/linux-omap/omap3evm/defconfig24
-rw-r--r--packages/linux/linux-omap/strongly-ordered-memory.diff18
22 files changed, 240 insertions, 870 deletions
diff --git a/packages/linux/linux-omap/000-mru-make-video-mode-selcatable.diff b/packages/linux/linux-omap/000-mru-make-video-mode-selcatable.diff
deleted file mode 100644
index e36aeb5cff..0000000000
--- a/packages/linux/linux-omap/000-mru-make-video-mode-selcatable.diff
+++ /dev/null
@@ -1,155 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Mon, 18 Aug 2008 22:55:09 +0000 (+0100)
-Subject: OMAP: Make video mode commandline-selectable from pre-defined list
-X-Git-Tag: beagle-9
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=c76a61167997a1dc680c421b1cdb753dfd492b0a
-
-OMAP: Make video mode commandline-selectable from pre-defined list
-
-This adds a (small) list of video modes and allows one to be
-selected with video=omapfb:mode:name on the command line,
-overriding the defaults from lcd_*.c.
-
-Signed-off-by: Mans Rullgard <mans@mansr.com>
----
-
-diff --git a/arch/arm/plat-omap/include/mach/omapfb.h b/arch/arm/plat-omap/include/mach/omapfb.h
-index a4a84f3..92e9ffd 100644
---- a/arch/arm/plat-omap/include/mach/omapfb.h
-+++ b/arch/arm/plat-omap/include/mach/omapfb.h
-@@ -192,6 +192,20 @@ enum omapfb_update_mode {
-
- struct omapfb_device;
-
-+struct video_mode {
-+ const char *name;
-+ int x_res, y_res;
-+ int pixel_clock; /* In kHz */
-+ int hsw; /* Horizontal synchronization
-+ pulse width */
-+ int hfp; /* Horizontal front porch */
-+ int hbp; /* Horizontal back porch */
-+ int vsw; /* Vertical synchronization
-+ pulse width */
-+ int vfp; /* Vertical front porch */
-+ int vbp; /* Vertical back porch */
-+};
-+
- struct lcd_panel {
- const char *name;
- int config; /* TFT/STN, signal inversion */
-diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c
-index 24242b9..f2229b1 100644
---- a/drivers/video/omap/omapfb_main.c
-+++ b/drivers/video/omap/omapfb_main.c
-@@ -40,6 +40,7 @@ static unsigned long def_vxres;
- static unsigned long def_vyres;
- static unsigned int def_rotate;
- static unsigned int def_mirror;
-+static int def_mode = -1;
-
- #ifdef CONFIG_FB_OMAP_MANUAL_UPDATE
- static int manual_update = 1;
-@@ -80,6 +81,57 @@ static struct caps_table_struct color_caps[] = {
- { 1 << OMAPFB_COLOR_YUY422, "YUY422", },
- };
-
-+static const struct video_mode video_modes[] = {
-+ {
-+ .name = "1280x720@50",
-+ .x_res = 1280,
-+ .y_res = 720,
-+ .hfp = 440,
-+ .hsw = 40,
-+ .hbp = 220,
-+ .vfp = 20,
-+ .vsw = 5,
-+ .vbp = 5,
-+ .pixel_clock = 74250,
-+ },
-+ {
-+ .name = "1280x720@60",
-+ .x_res = 1280,
-+ .y_res = 720,
-+ .hfp = 110,
-+ .hsw = 40,
-+ .hbp = 220,
-+ .vfp = 20,
-+ .vsw = 5,
-+ .vbp = 5,
-+ .pixel_clock = 74250,
-+ },
-+ {
-+ .name = "1920x1080@24",
-+ .x_res = 1920,
-+ .y_res = 1080,
-+ .hfp = 148,
-+ .hsw = 44,
-+ .hbp = 638,
-+ .vfp = 36,
-+ .vsw = 5,
-+ .vbp = 4,
-+ .pixel_clock = 74160,
-+ },
-+ {
-+ .name = "1920x1080@25",
-+ .x_res = 1920,
-+ .y_res = 1080,
-+ .hfp = 148,
-+ .hsw = 44,
-+ .hbp = 528,
-+ .vfp = 36,
-+ .vsw = 5,
-+ .vbp = 4,
-+ .pixel_clock = 74250,
-+ }
-+};
-+
- /*
- * ---------------------------------------------------------------------------
- * LCD panel
-@@ -1711,6 +1763,18 @@ static int omapfb_do_probe(struct platform_device *pdev,
- goto cleanup;
- }
-
-+ if (def_mode != -1) {
-+ fbdev->panel->x_res = video_modes[def_mode].x_res;
-+ fbdev->panel->y_res = video_modes[def_mode].y_res;
-+ fbdev->panel->pixel_clock = video_modes[def_mode].pixel_clock;
-+ fbdev->panel->hsw = video_modes[def_mode].hsw;
-+ fbdev->panel->hfp = video_modes[def_mode].hfp;
-+ fbdev->panel->hbp = video_modes[def_mode].hbp;
-+ fbdev->panel->vsw = video_modes[def_mode].vsw;
-+ fbdev->panel->vfp = video_modes[def_mode].vfp;
-+ fbdev->panel->vbp = video_modes[def_mode].vbp;
-+ }
-+
- r = fbdev->panel->init(fbdev->panel, fbdev);
- if (r)
- goto cleanup;
-@@ -1867,6 +1931,16 @@ static struct platform_driver omapfb_driver = {
- },
- };
-
-+static int __init omapfb_find_mode(char *mode)
-+{
-+ int i;
-+
-+ for (i = 0; i < sizeof(video_modes)/sizeof(video_modes[0]); i++)
-+ if (!strcmp(mode, video_modes[i].name))
-+ return i;
-+ return -1;
-+}
-+
- #ifndef MODULE
-
- /* Process kernel command line parameters */
-@@ -1915,6 +1989,8 @@ static int __init omapfb_setup(char *options)
- def_mirror = (simple_strtoul(this_opt + 7, NULL, 0));
- else if (!strncmp(this_opt, "manual_update", 13))
- manual_update = 1;
-+ else if (!strncmp(this_opt, "mode:", 5))
-+ def_mode = omapfb_find_mode(this_opt + 5);
- else {
- pr_debug("omapfb: invalid option\n");
- r = -1;
diff --git a/packages/linux/linux-omap/002-mru-set-default-800x600.diff b/packages/linux/linux-omap/002-mru-set-default-800x600.diff
deleted file mode 100644
index b45f849ba4..0000000000
--- a/packages/linux/linux-omap/002-mru-set-default-800x600.diff
+++ /dev/null
@@ -1,61 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Fri, 29 Aug 2008 00:42:02 +0000 (+0100)
-Subject: OMAP: Set Beagleboard default video mode to 800x600 60Hz
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=17b546e6d65aee124a2b691727cdb2c1dcadaec5
-
-OMAP: Set Beagleboard default video mode to 800x600 60Hz
-
-This sets the default video mode on the Beagleboard to
-800x600 60Hz VESA CVT 0.48M3-R, 16bpp. This is compatible
-with a wider range of monitors than the old default values.
-
-Signed-off-by: Mans Rullgard <mans@mansr.com>
----
-
-diff --git a/drivers/video/omap/lcd_omap3beagle.c b/drivers/video/omap/lcd_omap3beagle.c
-index 9637735..f2861ec 100644
---- a/drivers/video/omap/lcd_omap3beagle.c
-+++ b/drivers/video/omap/lcd_omap3beagle.c
-@@ -31,10 +31,6 @@
-
- #define LCD_PANEL_ENABLE_GPIO 170
-
--#define LCD_XRES 1024
--#define LCD_YRES 768
--#define LCD_PIXCLOCK 64000 /* in kHz */
--
- static int omap3beagle_panel_init(struct lcd_panel *panel,
- struct omapfb_device *fbdev)
- {
-@@ -65,19 +61,19 @@ static unsigned long omap3beagle_panel_get_caps(struct lcd_panel *panel)
- struct lcd_panel omap3beagle_panel = {
- .name = "omap3beagle",
- .config = OMAP_LCDC_PANEL_TFT,
--
-- .bpp = 24,
-+ .bpp = 16,
- .data_lines = 24,
-- .x_res = LCD_XRES,
-- .y_res = LCD_YRES,
-- .hsw = 3, /* hsync_len (4) - 1 */
-- .hfp = 3, /* right_margin (4) - 1 */
-- .hbp = 39, /* left_margin (40) - 1 */
-- .vsw = 1, /* vsync_len (2) - 1 */
-- .vfp = 2, /* lower_margin */
-- .vbp = 7, /* upper_margin (8) - 1 */
--
-- .pixel_clock = LCD_PIXCLOCK,
-+
-+ /* 800 x 600 @ 60 Hz Reduced blanking VESA CVT 0.48M3-R */
-+ .x_res = 800,
-+ .y_res = 600,
-+ .hfp = 48,
-+ .hsw = 32,
-+ .hbp = 80,
-+ .vfp = 3,
-+ .vsw = 4,
-+ .vbp = 11,
-+ .pixel_clock = 35500,
-
- .init = omap3beagle_panel_init,
- .cleanup = omap3beagle_panel_cleanup,
diff --git a/packages/linux/linux-omap/004-mru-export-omapfb-register-panel.diff b/packages/linux/linux-omap/004-mru-export-omapfb-register-panel.diff
deleted file mode 100644
index 24ebcdea52..0000000000
--- a/packages/linux/linux-omap/004-mru-export-omapfb-register-panel.diff
+++ /dev/null
@@ -1,25 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Wed, 3 Sep 2008 20:56:03 +0000 (+0100)
-Subject: OMAP: Export omapfb_register_panel()
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=44811584aded9e47a83d69ad31002a6bb94730dc
-
-OMAP: Export omapfb_register_panel()
-
-This exports omapfb_register_panel() for use by LCD drivers built
-as modules.
-
-Signed-off-by: Mans Rullgard <mans@mansr.com>
----
-
-diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c
-index 2e53d8f..912cb0c 100644
---- a/drivers/video/omap/omapfb_main.c
-+++ b/drivers/video/omap/omapfb_main.c
-@@ -1997,6 +1997,7 @@ void omapfb_register_panel(struct lcd_panel *panel)
- if (fbdev_pdev != NULL)
- omapfb_do_probe(fbdev_pdev, fbdev_panel);
- }
-+EXPORT_SYMBOL(omapfb_register_panel);
-
- /* Called when the device is being detached from the driver */
- static int omapfb_remove(struct platform_device *pdev)
diff --git a/packages/linux/linux-omap/005-mru-add-omapfb-unregister-panel.diff b/packages/linux/linux-omap/005-mru-add-omapfb-unregister-panel.diff
deleted file mode 100644
index faee384e74..0000000000
--- a/packages/linux/linux-omap/005-mru-add-omapfb-unregister-panel.diff
+++ /dev/null
@@ -1,67 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Wed, 3 Sep 2008 20:57:59 +0000 (+0100)
-Subject: OMAP: Add omapfb_unregister_panel() function
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=85b5d3ba7221193cb2315256b69e97f34d2ae3b7
-
-OMAP: Add omapfb_unregister_panel() function
-
-This adds the function omapfb_unregister_panel() for use by LCD
-drivers built as modules.
-
-Signed-off-by: Mans Rullgard <mans@mansr.com>
----
-
-diff --git a/arch/arm/plat-omap/include/mach/omapfb.h b/arch/arm/plat-omap/include/mach/omapfb.h
-index a4a84f3..3ccb076 100644
---- a/arch/arm/plat-omap/include/mach/omapfb.h
-+++ b/arch/arm/plat-omap/include/mach/omapfb.h
-@@ -378,6 +378,7 @@ extern struct lcd_ctrl omap2_disp_ctrl;
-
- extern void omapfb_reserve_sdram(void);
- extern void omapfb_register_panel(struct lcd_panel *panel);
-+extern void omapfb_unregister_panel(struct lcd_panel *panel);
- extern void omapfb_write_first_pixel(struct omapfb_device *fbdev, u16 pixval);
- extern void omapfb_notify_clients(struct omapfb_device *fbdev,
- unsigned long event);
-diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c
-index 912cb0c..6d09e03 100644
---- a/drivers/video/omap/omapfb_main.c
-+++ b/drivers/video/omap/omapfb_main.c
-@@ -1736,7 +1736,8 @@ static void omapfb_free_resources(struct omapfb_device *fbdev, int state)
- case 7:
- omapfb_unregister_sysfs(fbdev);
- case 6:
-- fbdev->panel->disable(fbdev->panel);
-+ if (fbdev->panel)
-+ fbdev->panel->disable(fbdev->panel);
- case 5:
- omapfb_set_update_mode(fbdev, OMAPFB_UPDATE_DISABLED);
- case 4:
-@@ -1744,7 +1745,8 @@ static void omapfb_free_resources(struct omapfb_device *fbdev, int state)
- case 3:
- ctrl_cleanup(fbdev);
- case 2:
-- fbdev->panel->cleanup(fbdev->panel);
-+ if (fbdev->panel)
-+ fbdev->panel->cleanup(fbdev->panel);
- case 1:
- dev_set_drvdata(fbdev->dev, NULL);
- kfree(fbdev);
-@@ -1999,6 +2001,17 @@ void omapfb_register_panel(struct lcd_panel *panel)
- }
- EXPORT_SYMBOL(omapfb_register_panel);
-
-+void omapfb_unregister_panel(struct lcd_panel *panel)
-+{
-+ BUG_ON(fbdev_panel != panel);
-+
-+ panel->disable(panel);
-+
-+ omapfb_dev->panel = NULL;
-+ fbdev_panel = NULL;
-+}
-+EXPORT_SYMBOL(omapfb_unregister_panel);
-+
- /* Called when the device is being detached from the driver */
- static int omapfb_remove(struct platform_device *pdev)
- {
diff --git a/packages/linux/linux-omap/006-mru-lcd-as-modules.diff b/packages/linux/linux-omap/006-mru-lcd-as-modules.diff
deleted file mode 100644
index e522b3f7bf..0000000000
--- a/packages/linux/linux-omap/006-mru-lcd-as-modules.diff
+++ /dev/null
@@ -1,174 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Wed, 3 Sep 2008 23:05:33 +0000 (+0100)
-Subject: OMAP: Build LCD drivers as separate modules
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=127dc3100fe9d25ed2b6c0a056e4160cc05db653
-
-OMAP: Build LCD drivers as separate modules
-
-This enables building the various LCD drivers as modules separate
-from omapfb.
-
-Signed-off-by: Mans Rullgard <mans@mansr.com>
----
-
-diff --git a/drivers/video/omap/Kconfig b/drivers/video/omap/Kconfig
-index 9977e80..93cd760 100644
---- a/drivers/video/omap/Kconfig
-+++ b/drivers/video/omap/Kconfig
-@@ -53,6 +53,70 @@ config FB_OMAP_LCD_MIPID
- the Mobile Industry Processor Interface DBI-C/DCS
- specification. (Supported LCDs: Philips LPH8923, Sharp LS041Y3)
-
-+config OMAP_FB_LCD_AMS_DELTA
-+ tristate "AMS DELTA LCD support"
-+ depends on FB_OMAP && MACH_AMS_DELTA
-+
-+config OMAP_FB_LCD_H2
-+ tristate "H2 LCD support"
-+ depends on FB_OMAP && MACH_OMAP_H2
-+
-+config OMAP_FB_LCD_H3
-+ tristate "H3 LCD support"
-+ depends on FB_OMAP && MACH_OMAP_H3
-+
-+config OMAP_FB_LCD_H4
-+ tristate "OMAP 2420 H4 LCD support"
-+ depends on FB_OMAP && MACH_OMAP_H4
-+
-+config OMAP_FB_LCD_PALMTE
-+ tristate "PALMTE LCD support"
-+ depends on FB_OMAP && MACH_OMAP_PALMTE
-+
-+config OMAP_FB_LCD_PALMTT
-+ tristate "PALMTT LCD support"
-+ depends on FB_OMAP && MACH_OMAP_PALMTT
-+
-+config OMAP_FB_LCD_PALMZ71
-+ tristate "PALMZ71 LCD support"
-+ depends on FB_OMAP && MACH_OMAP_PALMZ71
-+
-+config OMAP_FB_LCD_INN1610
-+ tristate "INN1610 LCD support"
-+ depends on FB_OMAP && ARCH_OMAP16XX && MACH_OMAP_INNOVATOR
-+
-+config OMAP_FB_LCD_INN1510
-+ tristate "INN1510 LCD support"
-+ depends on FB_OMAP && ARCH_OMAP15XX && MACH_OMAP_INNOVATOR
-+
-+config OMAP_FB_LCD_OSK
-+ tristate "OSK LCD support"
-+ depends on FB_OMAP && MACH_OMAP_OSK
-+
-+config OMAP_FB_LCD_SX1
-+ tristate "SX1 LCD support"
-+ depends on FB_OMAP && MACH_SX1
-+
-+config OMAP_FB_LCD_APOLLON
-+ tristate "OMAP 2420 Apollon LCD support"
-+ depends on FB_OMAP && MACH_OMAP_APOLLON
-+
-+config OMAP_FB_LCD_2430SDP
-+ tristate "OMAP 2430/3430 SDP LCD support"
-+ depends on FB_OMAP && (MACH_OMAP_2430SDP || MACH_OMAP_3430SDP)
-+
-+config OMAP_FB_LCD_OMAP2EVM
-+ tristate "OMAP 2530 EVM LCD support"
-+ depends on FB_OMAP && MACH_OMAP2EVM
-+
-+config OMAP_FB_LCD_OMAP3EVM
-+ tristate "OMAP 3530 EVM LCD support"
-+ depends on FB_OMAP && MACH_OMAP3EVM
-+
-+config OMAP_FB_LCD_OMAP3BEAGLE
-+ tristate "Beagle board DVI port support"
-+ depends on FB_OMAP && MACH_OMAP3_BEAGLE
-+
- config FB_OMAP_BOOTLOADER_INIT
- bool "Check bootloader initialization"
- depends on FB_OMAP
-diff --git a/drivers/video/omap/Makefile b/drivers/video/omap/Makefile
-dissimilarity index 64%
-index f9b5cd4..dbdcd67 100644
---- a/drivers/video/omap/Makefile
-+++ b/drivers/video/omap/Makefile
-@@ -1,40 +1,40 @@
--#
--# Makefile for the new OMAP framebuffer device driver
--#
--
--obj-$(CONFIG_FB_OMAP) += omapfb.o
--
--objs-yy := omapfb_main.o
--
--objs-y$(CONFIG_ARCH_OMAP1) += lcdc.o
--objs-y$(CONFIG_ARCH_OMAP2) += dispc.o
--objs-y$(CONFIG_ARCH_OMAP3) += dispc.o
--
--objs-$(CONFIG_ARCH_OMAP1)$(CONFIG_FB_OMAP_LCDC_EXTERNAL) += sossi.o
--objs-$(CONFIG_ARCH_OMAP2)$(CONFIG_FB_OMAP_LCDC_EXTERNAL) += rfbi.o
--
--objs-y$(CONFIG_FB_OMAP_LCDC_HWA742) += hwa742.o
--objs-y$(CONFIG_FB_OMAP_LCDC_BLIZZARD) += blizzard.o
--
--objs-y$(CONFIG_MACH_AMS_DELTA) += lcd_ams_delta.o
--objs-y$(CONFIG_MACH_OMAP_H4) += lcd_h4.o
--objs-y$(CONFIG_MACH_OMAP_H3) += lcd_h3.o
--objs-y$(CONFIG_MACH_OMAP_H2) += lcd_h2.o
--objs-y$(CONFIG_MACH_OMAP_PALMTE) += lcd_palmte.o
--objs-y$(CONFIG_MACH_OMAP_PALMTT) += lcd_palmtt.o
--objs-y$(CONFIG_MACH_OMAP_PALMZ71) += lcd_palmz71.o
--objs-$(CONFIG_ARCH_OMAP16XX)$(CONFIG_MACH_OMAP_INNOVATOR) += lcd_inn1610.o
--objs-$(CONFIG_ARCH_OMAP15XX)$(CONFIG_MACH_OMAP_INNOVATOR) += lcd_inn1510.o
--objs-y$(CONFIG_MACH_OMAP_OSK) += lcd_osk.o
--objs-y$(CONFIG_MACH_SX1) += lcd_sx1.o
--
--objs-y$(CONFIG_MACH_OMAP_APOLLON) += lcd_apollon.o
--objs-y$(CONFIG_MACH_OMAP_2430SDP) += lcd_2430sdp.o
--objs-y$(CONFIG_MACH_OMAP_3430SDP) += lcd_2430sdp.o
--objs-y$(CONFIG_MACH_OMAP2EVM) += lcd_omap2evm.o
--objs-y$(CONFIG_MACH_OMAP3EVM) += lcd_omap3evm.o
--objs-y$(CONFIG_MACH_OMAP3_BEAGLE) += lcd_omap3beagle.o
--objs-y$(CONFIG_FB_OMAP_LCD_MIPID) += lcd_mipid.o
--
--omapfb-objs := $(objs-yy)
--
-+#
-+# Makefile for the new OMAP framebuffer device driver
-+#
-+
-+obj-$(CONFIG_FB_OMAP) += omapfb.o
-+
-+objs-yy := omapfb_main.o
-+
-+objs-y$(CONFIG_ARCH_OMAP1) += lcdc.o
-+objs-y$(CONFIG_ARCH_OMAP2) += dispc.o
-+objs-y$(CONFIG_ARCH_OMAP3) += dispc.o
-+
-+objs-$(CONFIG_ARCH_OMAP1)$(CONFIG_FB_OMAP_LCDC_EXTERNAL) += sossi.o
-+objs-$(CONFIG_ARCH_OMAP2)$(CONFIG_FB_OMAP_LCDC_EXTERNAL) += rfbi.o
-+
-+objs-y$(CONFIG_FB_OMAP_LCDC_HWA742) += hwa742.o
-+objs-y$(CONFIG_FB_OMAP_LCDC_BLIZZARD) += blizzard.o
-+
-+obj-$(CONFIG_OMAP_FB_LCD_AMS_DELTA) += lcd_ams_delta.o
-+obj-$(CONFIG_OMAP_FB_LCD_H4) += lcd_h4.o
-+obj-$(CONFIG_OMAP_FB_LCD_H3) += lcd_h3.o
-+obj-$(CONFIG_OMAP_FB_LCD_H2) += lcd_h2.o
-+obj-$(CONFIG_OMAP_FB_LCD_PALMTE) += lcd_palmte.o
-+obj-$(CONFIG_OMAP_FB_LCD_PALMTT) += lcd_palmtt.o
-+obj-$(CONFIG_OMAP_FB_LCD_PALMZ71) += lcd_palmz71.o
-+obj-$(CONFIG_OMAP_FB_LCD_INN1610) += lcd_inn1610.o
-+obj-$(CONFIG_OMAP_FB_LCD_INN1510) += lcd_inn1510.o
-+obj-$(CONFIG_OMAP_FB_LCD_OSK) += lcd_osk.o
-+obj-$(CONFIG_OMAP_FB_LCD_SX1) += lcd_sx1.o
-+
-+obj-$(CONFIG_OMAP_FB_LCD_APOLLON) += lcd_apollon.o
-+obj-$(CONFIG_OMAP_FB_LCD_2430SDP) += lcd_2430sdp.o
-+obj-$(CONFIG_OMAP_FB_LCD_2430SDP) += lcd_2430sdp.o
-+obj-$(CONFIG_OMAP_FB_LCD_OMAP2EVM) += lcd_omap2evm.o
-+obj-$(CONFIG_OMAP_FB_LCD_OMAP3EVM) += lcd_omap3evm.o
-+obj-$(CONFIG_OMAP_FB_LCD_OMAP3BEAGLE) += lcd_omap3beagle.o
-+obj-$(CONFIG_OMAP_FB_LCD_MIPID) += lcd_mipid.o
-+
-+omapfb-objs := $(objs-yy)
-+
diff --git a/packages/linux/linux-omap/007-mru-omapfb-as-module.diff b/packages/linux/linux-omap/007-mru-omapfb-as-module.diff
deleted file mode 100644
index e1eed0d154..0000000000
--- a/packages/linux/linux-omap/007-mru-omapfb-as-module.diff
+++ /dev/null
@@ -1,50 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Wed, 3 Sep 2008 23:10:08 +0000 (+0100)
-Subject: OMAP: Fix omapfb built as module
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=ae65001ce247e510121bcda21775263bb4c42e05
-
-OMAP: Fix omapfb built as module
-
-This makes it possible to build omapfb as a module.
-
-Signed-off-by: Mans Rullgard <mans@mansr.com>
----
-
-diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
-index 6187e8f..4213c4f 100644
---- a/drivers/video/omap/dispc.c
-+++ b/drivers/video/omap/dispc.c
-@@ -1073,7 +1073,8 @@ static int mmap_kern(struct omapfb_mem_region *region)
- pgprot_t pgprot;
- unsigned long vaddr;
-
-- kvma = get_vm_area(region->size, VM_IOREMAP);
-+ kvma = __get_vm_area(region->size, VM_IOREMAP,
-+ VMALLOC_START, VMALLOC_END);
- if (kvma == NULL) {
- dev_err(dispc.fbdev->dev, "can't get kernel vm area\n");
- return -ENOMEM;
-diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c
-index 6d09e03..19a1a83 100644
---- a/drivers/video/omap/omapfb_main.c
-+++ b/drivers/video/omap/omapfb_main.c
-@@ -2016,12 +2016,15 @@ EXPORT_SYMBOL(omapfb_unregister_panel);
- static int omapfb_remove(struct platform_device *pdev)
- {
- struct omapfb_device *fbdev = platform_get_drvdata(pdev);
-- enum omapfb_state saved_state = fbdev->state;
-
-- /* FIXME: wait till completion of pending events */
-+ if (fbdev) {
-+ enum omapfb_state saved_state = fbdev->state;
-
-- fbdev->state = OMAPFB_DISABLED;
-- omapfb_free_resources(fbdev, saved_state);
-+ /* FIXME: wait till completion of pending events */
-+
-+ fbdev->state = OMAPFB_DISABLED;
-+ omapfb_free_resources(fbdev, saved_state);
-+ }
-
- return 0;
- }
diff --git a/packages/linux/linux-omap/008-mru-lcd-omap3beagle-license.diff b/packages/linux/linux-omap/008-mru-lcd-omap3beagle-license.diff
deleted file mode 100644
index 4f69dd971a..0000000000
--- a/packages/linux/linux-omap/008-mru-lcd-omap3beagle-license.diff
+++ /dev/null
@@ -1,22 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Wed, 3 Sep 2008 23:12:03 +0000 (+0100)
-Subject: OMAP: Add missing MODULE_LICENSE in lcd_omap3beagle
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=368ba31e3e7dccdcea790c559ad3d3b4a20d924f
-
-OMAP: Add missing MODULE_LICENSE in lcd_omap3beagle
-
-This adds a missing MODULE_LICENSE("GPL") in lcd_omap3beagle.
-
-Signed-off-by: Mans Rullgard <mans@mansr.com>
----
-
-diff --git a/drivers/video/omap/lcd_omap3beagle.c b/drivers/video/omap/lcd_omap3beagle.c
-index f2861ec..7b63db9 100644
---- a/drivers/video/omap/lcd_omap3beagle.c
-+++ b/drivers/video/omap/lcd_omap3beagle.c
-@@ -127,3 +127,5 @@ static void __exit omap3beagle_panel_drv_exit(void)
-
- module_init(omap3beagle_panel_drv_init);
- module_exit(omap3beagle_panel_drv_exit);
-+
-+MODULE_LICENSE("GPL");
diff --git a/packages/linux/linux-omap/009-mru-unregister-beagle-lcd.diff b/packages/linux/linux-omap/009-mru-unregister-beagle-lcd.diff
deleted file mode 100644
index c7e94bf3a4..0000000000
--- a/packages/linux/linux-omap/009-mru-unregister-beagle-lcd.diff
+++ /dev/null
@@ -1,24 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Wed, 3 Sep 2008 23:17:06 +0000 (+0100)
-Subject: OMAP: Fix unloading lcd_omap3beagle module
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=6db3a4c28c6819047362fc8ac460cf8c124c6074
-
-OMAP: Fix unloading lcd_omap3beagle module
-
-Unregister the panel when unloading the lcd_omap3beagle module.
-
-Signed-off-by: Mans Rullgard <mans@mansr.com>
----
-
-diff --git a/drivers/video/omap/lcd_omap3beagle.c b/drivers/video/omap/lcd_omap3beagle.c
-index 7b63db9..32bd988 100644
---- a/drivers/video/omap/lcd_omap3beagle.c
-+++ b/drivers/video/omap/lcd_omap3beagle.c
-@@ -90,6 +90,7 @@ static int omap3beagle_panel_probe(struct platform_device *pdev)
-
- static int omap3beagle_panel_remove(struct platform_device *pdev)
- {
-+ omapfb_unregister_panel(&omap3beagle_panel);
- return 0;
- }
-
diff --git a/packages/linux/linux-omap/03-enable-overlay-opt.diff b/packages/linux/linux-omap/03-enable-overlay-opt.diff
deleted file mode 100644
index 9fa749f5fc..0000000000
--- a/packages/linux/linux-omap/03-enable-overlay-opt.diff
+++ /dev/null
@@ -1,27 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Sun, 6 Jul 2008 13:15:36 +0000 (+0100)
-Subject: omapfb: enable overlay optimisation when possible
-X-Git-Tag: beagle-5~1
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=a63ac3abdf6781f863112321260fe7a5da757802
-
-omapfb: enable overlay optimisation when possible
----
-
-diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
-index 6aff476..3b36227 100644
---- a/drivers/video/omap/dispc.c
-+++ b/drivers/video/omap/dispc.c
-@@ -582,11 +582,13 @@ static int omap_dispc_enable_plane(int plane, int enable)
- const u32 at_reg[] = { DISPC_GFX_ATTRIBUTES,
- DISPC_VID1_BASE + DISPC_VID_ATTRIBUTES,
- DISPC_VID2_BASE + DISPC_VID_ATTRIBUTES };
-+ unsigned overlay_opt = plane & !!enable & !dispc.color_key.key_type;
- if ((unsigned int)plane > dispc.mem_desc.region_cnt)
- return -EINVAL;
-
- enable_lcd_clocks(1);
- MOD_REG_FLD(at_reg[plane], 1, enable ? 1 : 0);
-+ MOD_REG_FLD(DISPC_CONTROL, 1<<12 | 1<<5, overlay_opt<<12 | 1<<5);
- enable_lcd_clocks(0);
-
- return 0;
diff --git a/packages/linux/linux-omap/06-ensure-fclk.diff b/packages/linux/linux-omap/06-ensure-fclk.diff
deleted file mode 100644
index 79871a7208..0000000000
--- a/packages/linux/linux-omap/06-ensure-fclk.diff
+++ /dev/null
@@ -1,31 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Mon, 7 Jul 2008 23:59:08 +0000 (+0100)
-Subject: omapfb: ensure fck/lcd < 173MHz
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=0523ece1bad659c48c66aea364d83f7490e7e5ae
-
-omapfb: ensure fck/lcd < 173MHz
----
-
-diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
-index c17371c..85d6cad 100644
---- a/drivers/video/omap/dispc.c
-+++ b/drivers/video/omap/dispc.c
-@@ -738,14 +738,16 @@ static void setup_color_conv_coef(void)
- MOD_REG_FLD(at2_reg, (1 << 11), ct->full_range);
- }
-
-+#define MAX_FCK_LCD 173000000
-+
- static void calc_ck_div(int is_tft, int pck, int *lck_div, int *pck_div)
- {
- unsigned long fck, lck;
-
-- *lck_div = 1;
- pck = max(1, pck);
- fck = clk_get_rate(dispc.dss1_fck);
-- lck = fck;
-+ *lck_div = (fck + MAX_FCK_LCD - 1) / MAX_FCK_LCD;
-+ lck = fck / *lck_div;
- *pck_div = (lck + pck - 1) / pck;
- if (is_tft)
- *pck_div = max(2, *pck_div);
diff --git a/packages/linux/linux-omap/07-set-burst-size.diff b/packages/linux/linux-omap/07-set-burst-size.diff
deleted file mode 100644
index 99bd80eae0..0000000000
--- a/packages/linux/linux-omap/07-set-burst-size.diff
+++ /dev/null
@@ -1,21 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Tue, 8 Jul 2008 18:26:43 +0000 (+0100)
-Subject: omapfb: set graphics burst size to 16x32
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=4f9e415dfcd5613a8de973f6c9878cab959c5869
-
-omapfb: set graphics burst size to 16x32
----
-
-diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
-index 85d6cad..fd06ca2 100644
---- a/drivers/video/omap/dispc.c
-+++ b/drivers/video/omap/dispc.c
-@@ -409,7 +409,7 @@ static inline int _setup_plane(int plane, int channel_out,
- l |= cconv_en << 9;
-
- l &= ~(0x03 << burst_shift);
-- l |= DISPC_BURST_8x32 << burst_shift;
-+ l |= DISPC_BURST_16x32 << burst_shift;
-
- l &= ~(1 << chout_shift);
- l |= chout_val << chout_shift;
diff --git a/packages/linux/linux-omap/beagleboard/defconfig b/packages/linux/linux-omap/beagleboard/defconfig
index ad2869fd63..7de6a0aa90 100644
--- a/packages/linux/linux-omap/beagleboard/defconfig
+++ b/packages/linux/linux-omap/beagleboard/defconfig
@@ -329,7 +329,7 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
CONFIG_VFP=y
CONFIG_VFPv3=y
CONFIG_NEON=y
-CONFIG_NEON_CACHE_BUG=y
+CONFIG_ARM_ERRATUM_451034=y
#
# Userspace binary formats
diff --git a/packages/linux/linux-omap/mru-clocks2.diff b/packages/linux/linux-omap/mru-add-clk-get-parent.diff
index c8b370da03..64944a5e47 100644
--- a/packages/linux/linux-omap/mru-clocks2.diff
+++ b/packages/linux/linux-omap/mru-add-clk-get-parent.diff
@@ -1,18 +1,20 @@
From: Mans Rullgard <mans@mansr.com>
-Date: Tue, 22 Jul 2008 00:58:18 +0000 (+0100)
-Subject: ARM: OMAP: add clk_get_parent() for OMAP2/3
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=e2de5e5578fbaa9b4b75074796da0608fc93e6ae
+Date: Fri, 29 Aug 2008 01:51:36 +0000 (+0100)
+Subject: OMAP: Add clk_get_parent() for OMAP2/3
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=08d1f1947a5a970b2fe6e4dfeeb70286b9379056
-ARM: OMAP: add clk_get_parent() for OMAP2/3
+OMAP: Add clk_get_parent() for OMAP2/3
+
+This makes clk_get_parent() work on OMAP2/3.
Signed-off-by: Mans Rullgard <mans@mansr.com>
---
diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c
-index 577be44..28aec36 100644
+index 5f48e14..aae0d2e 100644
--- a/arch/arm/mach-omap2/clock.c
+++ b/arch/arm/mach-omap2/clock.c
-@@ -824,6 +824,11 @@ int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent)
+@@ -831,6 +831,11 @@ int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent)
return 0;
}
@@ -25,7 +27,7 @@ index 577be44..28aec36 100644
/**
diff --git a/arch/arm/mach-omap2/clock.h b/arch/arm/mach-omap2/clock.h
-index 49245f7..4aa69d5 100644
+index 3fa2e26..2916879 100644
--- a/arch/arm/mach-omap2/clock.h
+++ b/arch/arm/mach-omap2/clock.h
@@ -29,6 +29,7 @@ int omap2_clk_set_rate(struct clk *clk, unsigned long rate);
@@ -37,10 +39,10 @@ index 49245f7..4aa69d5 100644
#ifdef CONFIG_OMAP_RESET_CLOCKS
void omap2_clk_disable_unused(struct clk *clk);
diff --git a/arch/arm/mach-omap2/clock24xx.c b/arch/arm/mach-omap2/clock24xx.c
-index 54cc6e1..ed7af21 100644
+index c26d9d8..f91bd57 100644
--- a/arch/arm/mach-omap2/clock24xx.c
+++ b/arch/arm/mach-omap2/clock24xx.c
-@@ -422,6 +422,7 @@ static struct clk_functions omap2_clk_functions = {
+@@ -423,6 +423,7 @@ static struct clk_functions omap2_clk_functions = {
.clk_round_rate = omap2_clk_round_rate,
.clk_set_rate = omap2_clk_set_rate,
.clk_set_parent = omap2_clk_set_parent,
@@ -49,10 +51,10 @@ index 54cc6e1..ed7af21 100644
#ifdef CONFIG_CPU_FREQ
.clk_init_cpufreq_table = omap2_clk_init_cpufreq_table,
diff --git a/arch/arm/mach-omap2/clock34xx.c b/arch/arm/mach-omap2/clock34xx.c
-index 04dedec..08c8c46 100644
+index 152d095..2196edd 100644
--- a/arch/arm/mach-omap2/clock34xx.c
+++ b/arch/arm/mach-omap2/clock34xx.c
-@@ -541,6 +541,7 @@ static struct clk_functions omap2_clk_functions = {
+@@ -606,6 +606,7 @@ static struct clk_functions omap2_clk_functions = {
.clk_round_rate = omap2_clk_round_rate,
.clk_set_rate = omap2_clk_set_rate,
.clk_set_parent = omap2_clk_set_parent,
diff --git a/packages/linux/linux-omap/001-mru-enable-overlay.diff b/packages/linux/linux-omap/mru-enable-overlay-optimalization.diff
index 8666c4ac9a..d027c53d6b 100644
--- a/packages/linux/linux-omap/001-mru-enable-overlay.diff
+++ b/packages/linux/linux-omap/mru-enable-overlay-optimalization.diff
@@ -1,13 +1,19 @@
From: Mans Rullgard <mans@mansr.com>
-Date: Thu, 28 Aug 2008 21:20:39 +0000 (+0100)
-Subject: OMAP: Enable overlay optimisation when possible
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=5a7378bb691e76ce247f39f79e1a928166f1aed9
+Date: Fri, 29 Aug 2008 01:45:26 +0000 (+0100)
+Subject: OMAP: Enable overlay optimisation
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=7e052af7e4c73dc450412486ad37eb529e725dc7
-OMAP: Enable overlay optimisation when possible
+OMAP: Enable overlay optimisation
+
+This enables the overlay optimisation feature when the video
+overlay is active. This reduces memory bandwidth used by the
+display subsystem, improving overall performance.
+
+Signed-off-by: Mans Rullgard <mans@mansr.com>
---
diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
-index 7c525f5..1d56ee0 100644
+index 888d2c2..0f0b2e5 100644
--- a/drivers/video/omap/dispc.c
+++ b/drivers/video/omap/dispc.c
@@ -315,6 +315,60 @@ void omap_dispc_enable_digit_out(int enable)
@@ -81,11 +87,10 @@ index 7c525f5..1d56ee0 100644
MOD_REG_FLD(DISPC_CONTROL, 1<<5, 1<<5);
return height * screen_width * bpp / 8;
-@@ -586,13 +643,19 @@ static int omap_dispc_enable_plane(int plane, int enable)
+@@ -585,11 +642,19 @@ static int omap_dispc_enable_plane(int plane, int enable)
const u32 at_reg[] = { DISPC_GFX_ATTRIBUTES,
DISPC_VID1_BASE + DISPC_VID_ATTRIBUTES,
DISPC_VID2_BASE + DISPC_VID_ATTRIBUTES };
-- unsigned overlay_opt = plane & !!enable & !dispc.color_key.key_type;
+ struct omapfb_plane_struct *pi;
+
if ((unsigned int)plane > dispc.mem_desc.region_cnt)
@@ -96,14 +101,13 @@ index 7c525f5..1d56ee0 100644
+
enable_lcd_clocks(1);
MOD_REG_FLD(at_reg[plane], 1, enable ? 1 : 0);
-- MOD_REG_FLD(DISPC_CONTROL, 1<<12 | 1<<5, overlay_opt<<12 | 1<<5);
+ if (plane < 2)
+ setup_overlay_opt();
+ MOD_REG_FLD(DISPC_CONTROL, 1<<5, 1<<5);
enable_lcd_clocks(0);
return 0;
-@@ -636,6 +699,7 @@ static int omap_dispc_set_color_key(struct omapfb_color_key *ck)
+@@ -633,6 +698,7 @@ static int omap_dispc_set_color_key(struct omapfb_color_key *ck)
if (val != 0)
dispc_write_reg(tr_reg, ck->trans_key);
dispc_write_reg(df_reg, ck->background);
diff --git a/packages/linux/linux-omap/05-fix-display-panning.diff b/packages/linux/linux-omap/mru-fix-display-panning.diff
index d3c9fffcda..a4ba3d29f4 100644
--- a/packages/linux/linux-omap/05-fix-display-panning.diff
+++ b/packages/linux/linux-omap/mru-fix-display-panning.diff
@@ -1,16 +1,20 @@
From: Mans Rullgard <mans@mansr.com>
-Date: Mon, 7 Jul 2008 00:13:00 +0000 (+0100)
-Subject: omapfb: fix display panning
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=9fec252c96b0e69bcef0afd9cb9dd72b7179c239
+Date: Fri, 29 Aug 2008 01:18:48 +0000 (+0100)
+Subject: OMAP: Fix omapfb display panning
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=2ea46e9f28ff57a32d87bc380457a584c913fe78
-omapfb: fix display panning
+OMAP: Fix omapfb display panning
+
+This makes the FBIOPAN_DISPLAY ioctl work with omapfb.
+
+Signed-off-by: Mans Rullgard <mans@mansr.com>
---
diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
-index 4e1a8e3..c17371c 100644
+index ce4c4de..64bf333 100644
--- a/drivers/video/omap/dispc.c
+++ b/drivers/video/omap/dispc.c
-@@ -435,6 +435,8 @@ static inline int _setup_plane(int plane, int channel_out,
+@@ -436,6 +436,8 @@ static inline int _setup_plane(int plane, int channel_out,
dispc_write_reg(ri_reg[plane], (screen_width - width) * bpp / 8 + 1);
@@ -20,10 +24,10 @@ index 4e1a8e3..c17371c 100644
}
diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c
-index 1166a01..3e4959e 100644
+index e7f3462..e9ffb92 100644
--- a/drivers/video/omap/omapfb_main.c
+++ b/drivers/video/omap/omapfb_main.c
-@@ -206,8 +206,8 @@ static int ctrl_change_mode(struct fb_info *fbi)
+@@ -207,8 +207,8 @@ static int ctrl_change_mode(struct fb_info *fbi)
struct omapfb_device *fbdev = plane->fbdev;
struct fb_var_screeninfo *var = &fbi->var;
@@ -34,7 +38,7 @@ index 1166a01..3e4959e 100644
if (fbdev->ctrl->sync)
fbdev->ctrl->sync();
-@@ -423,6 +423,8 @@ static void set_fb_fix(struct fb_info *fbi)
+@@ -426,6 +426,8 @@ static void set_fb_fix(struct fb_info *fbi)
}
fix->accel = FB_ACCEL_OMAP1610;
fix->line_length = var->xres_virtual * bpp / 8;
diff --git a/packages/linux/linux-omap/01-fix-timing-print.diff b/packages/linux/linux-omap/mru-fix-timings.diff
index 89fbe3a836..37ca7d33ac 100644
--- a/packages/linux/linux-omap/01-fix-timing-print.diff
+++ b/packages/linux/linux-omap/mru-fix-timings.diff
@@ -1,17 +1,20 @@
From: Mans Rullgard <mans@mansr.com>
-Date: Sat, 5 Jul 2008 20:31:56 +0000 (+0100)
-Subject: omapfb: fix video timings message
-X-Git-Tag: beagle-5~3
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=2929b75035ebe8702ba2ff2c81b654c487701f64
+Date: Fri, 29 Aug 2008 01:16:14 +0000 (+0100)
+Subject: OMAP: Fix video timings info message
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=3a8bdf0967ae2c4eb3cebb97118ef0392f709c1c
-omapfb: fix video timings message
+OMAP: Fix video timings info message
+
+This fixes the hsync frequency value printed on startup.
+
+Signed-off-by: Mans Rullgard <mans@mansr.com>
---
diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c
-index 418ed9f..1166a01 100644
+index d176a2c..e7f3462 100644
--- a/drivers/video/omap/omapfb_main.c
+++ b/drivers/video/omap/omapfb_main.c
-@@ -1789,7 +1789,8 @@ static int omapfb_do_probe(struct platform_device *pdev,
+@@ -1792,7 +1792,8 @@ static int omapfb_do_probe(struct platform_device *pdev,
vram, fbdev->mem_desc.region_cnt);
pr_info("omapfb: Pixclock %lu kHz hfreq %lu.%lu kHz "
"vfreq %lu.%lu Hz\n",
diff --git a/packages/linux/linux-omap/mru-clocks3.diff b/packages/linux/linux-omap/mru-improve-pixclock-config.diff
index f8407fc2d5..5a702128f2 100644
--- a/packages/linux/linux-omap/mru-clocks3.diff
+++ b/packages/linux/linux-omap/mru-improve-pixclock-config.diff
@@ -1,9 +1,9 @@
From: Mans Rullgard <mans@mansr.com>
-Date: Wed, 23 Jul 2008 08:40:07 +0000 (+0100)
-Subject: ARM: OMAP: Set DSS1_ALWON_FCLK to a multiple of the pixel clock
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=01ee28c50701caa94739e764c3dae9298edd8216
+Date: Fri, 29 Aug 2008 01:34:39 +0000 (+0100)
+Subject: OMAP: Improve pixel clock configuration
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=01c2d720e59c291de9eb21eb65225f2f215fef84
-ARM: OMAP: Set DSS1_ALWON_FCLK to a multiple of the pixel clock
+OMAP: Improve pixel clock configuration
This sets the DSS1_ALWON_FCLK clock as close as possible to a
multiple of the requested pixel clock, while keeping it below
@@ -16,10 +16,10 @@ Signed-off-by: Mans Rullgard <mans@mansr.com>
---
diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
-index fd06ca2..e0e8528 100644
+index 64bf333..888d2c2 100644
--- a/drivers/video/omap/dispc.c
+++ b/drivers/video/omap/dispc.c
-@@ -176,6 +176,7 @@ static struct {
+@@ -177,6 +177,7 @@ static struct {
struct clk *dss_ick, *dss1_fck;
struct clk *dss_54m_fck;
@@ -27,13 +27,12 @@ index fd06ca2..e0e8528 100644
enum omapfb_update_mode update_mode;
struct omapfb_device *fbdev;
-@@ -738,21 +739,34 @@ static void setup_color_conv_coef(void)
+@@ -736,19 +737,34 @@ static void setup_color_conv_coef(void)
MOD_REG_FLD(at2_reg, (1 << 11), ct->full_range);
}
--#define MAX_FCK_LCD 173000000
+#define MAX_FCK 173000000
-
++
static void calc_ck_div(int is_tft, int pck, int *lck_div, int *pck_div)
{
+ unsigned long prate = clk_get_rate(clk_get_parent(dispc.dpll4_m4_ck));
@@ -41,6 +40,7 @@ index fd06ca2..e0e8528 100644
+ unsigned long fck_div;
unsigned long fck, lck;
+- *lck_div = 1;
pck = max(1, pck);
+
+ if (pck * pcd_min > MAX_FCK) {
@@ -57,8 +57,7 @@ index fd06ca2..e0e8528 100644
+ fck_div = 1;
+ clk_set_rate(dispc.dpll4_m4_ck, prate / fck_div);
fck = clk_get_rate(dispc.dss1_fck);
-- *lck_div = (fck + MAX_FCK_LCD - 1) / MAX_FCK_LCD;
-- lck = fck / *lck_div;
+- lck = fck;
- *pck_div = (lck + pck - 1) / pck;
- if (is_tft)
- *pck_div = max(2, *pck_div);
@@ -70,7 +69,7 @@ index fd06ca2..e0e8528 100644
if (*pck_div > 255) {
*pck_div = 255;
lck = pck * *pck_div;
-@@ -914,11 +928,21 @@ static int get_dss_clocks(void)
+@@ -909,11 +925,21 @@ static int get_dss_clocks(void)
return PTR_ERR(dispc.dss_54m_fck);
}
diff --git a/packages/linux/linux-omap/mru-clocks1.diff b/packages/linux/linux-omap/mru-make-dpll4-m4-ck-programmable.diff
index d7dadbc85e..0a535c5d52 100644
--- a/packages/linux/linux-omap/mru-clocks1.diff
+++ b/packages/linux/linux-omap/mru-make-dpll4-m4-ck-programmable.diff
@@ -1,22 +1,24 @@
From: Mans Rullgard <mans@mansr.com>
-Date: Tue, 22 Jul 2008 00:31:11 +0000 (+0100)
-Subject: ARM: OMAP: make dpll4_m4_ck programmable with clk_set_rate()
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=2b7b958dc79e51127d7a4ecf88ce12dbc6c31426
+Date: Fri, 29 Aug 2008 01:52:42 +0000 (+0100)
+Subject: OMAP: Make dpll4_m4_ck programmable with clk_set_rate()
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=feab5b628c06619196044c15d9d2a113df173eee
-ARM: OMAP: make dpll4_m4_ck programmable with clk_set_rate()
+OMAP: Make dpll4_m4_ck programmable with clk_set_rate()
Filling the set_rate and round_rate fields of dpll4_m4_ck makes
this clock programmable through clk_set_rate(). This is needed
to give omapfb control over the dss1_alwon_fck rate.
+
+Signed-off-by: Mans Rullgard <mans@mansr.com>
---
diff --git a/arch/arm/mach-omap2/clock34xx.h b/arch/arm/mach-omap2/clock34xx.h
-index 161da12..876eb13 100644
+index 41f91f8..9c8e0c8 100644
--- a/arch/arm/mach-omap2/clock34xx.h
+++ b/arch/arm/mach-omap2/clock34xx.h
-@@ -815,6 +815,8 @@ static struct clk dpll4_m4_ck = {
- .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
+@@ -877,6 +877,8 @@ static struct clk dpll4_m4_ck = {
PARENT_CONTROLS_CLOCK,
+ .clkdm = { .name = "dpll4_clkdm" },
.recalc = &omap2_clksel_recalc,
+ .set_rate = &omap2_clksel_set_rate,
+ .round_rate = &omap2_clksel_round_rate,
diff --git a/packages/linux/linux-omap/003-mru-omapfb-more-video-modes.diff b/packages/linux/linux-omap/mru-make-video-timings-selectable.diff
index 34241640eb..bba3ef72cc 100644
--- a/packages/linux/linux-omap/003-mru-omapfb-more-video-modes.diff
+++ b/packages/linux/linux-omap/mru-make-video-timings-selectable.diff
@@ -1,60 +1,60 @@
From: Mans Rullgard <mans@mansr.com>
-Date: Fri, 29 Aug 2008 08:28:31 +0000 (+0100)
-Subject: OMAP: Add more video modes, and make the default configurable
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=ef272670f19fac8fb0ceb82933927dab1fb496b7
+Date: Fri, 29 Aug 2008 01:42:12 +0000 (+0100)
+Subject: OMAP: Make video mode selectable from pre-defined list
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=7a9e55d7156dae6bc930c77620a88a669d2ed1c9
-OMAP: Add more video modes, and make the default configurable
+OMAP: Make video mode selectable from pre-defined list
+
+This adds a list of common video modes and allows one to be
+selected with video=omapfb:mode:name on the command line,
+overriding the defaults from lcd_*.c. A default named mode
+can also be specified in the kernel configuration.
+
+Signed-off-by: Mans Rullgard <mans@mansr.com>
---
-diff --git a/arch/arm/plat-omap/include/mach/omapfb.h b/arch/arm/plat-omap/include/mach/omapfb.h
-index 92e9ffd..a4a84f3 100644
---- a/arch/arm/plat-omap/include/mach/omapfb.h
-+++ b/arch/arm/plat-omap/include/mach/omapfb.h
-@@ -192,20 +192,6 @@ enum omapfb_update_mode {
-
- struct omapfb_device;
-
--struct video_mode {
-- const char *name;
-- int x_res, y_res;
-- int pixel_clock; /* In kHz */
-- int hsw; /* Horizontal synchronization
-- pulse width */
-- int hfp; /* Horizontal front porch */
-- int hbp; /* Horizontal back porch */
-- int vsw; /* Vertical synchronization
-- pulse width */
-- int vfp; /* Vertical front porch */
-- int vbp; /* Vertical back porch */
--};
--
- struct lcd_panel {
- const char *name;
- int config; /* TFT/STN, signal inversion */
diff --git a/drivers/video/omap/Kconfig b/drivers/video/omap/Kconfig
-index bdeb8fb..9977e80 100644
+index 5ebd591..9977e80 100644
--- a/drivers/video/omap/Kconfig
+++ b/drivers/video/omap/Kconfig
-@@ -7,6 +7,14 @@ config FB_OMAP
+@@ -7,26 +7,13 @@ config FB_OMAP
help
Frame buffer driver for OMAP based boards.
+-choice
+- depends on FB_OMAP && MACH_OVERO
+- prompt "Screen resolution"
+- default FB_OMAP_079M3R
+config FB_OMAP_VIDEO_MODE
+ string "Default video mode"
+ depends on FB_OMAP
-+ help
+ help
+- Selected desired screen resolution
+-
+-config FB_OMAP_031M3R
+- boolean "640 x 480 @ 60 Hz Reduced blanking"
+-
+-config FB_OMAP_048M3R
+- boolean "800 x 600 @ 60 Hz Reduced blanking"
+-
+-config FB_OMAP_079M3R
+- boolean "1024 x 768 @ 60 Hz Reduced blanking"
+-
+-config FB_OMAP_092M9R
+- boolean "1280 x 720 @ 60 Hz Reduced blanking"
+-
+-endchoice
+ Enter video mode name to use if none is specified on the kernel
+ command line. If left blank, board-specific default timings
+ will be used. See omapfb_main.c for a list of valid mode names.
-+
+
config FB_OMAP_LCDC_EXTERNAL
bool "External LCD controller support"
- depends on FB_OMAP
diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c
-index f2229b1..2e53d8f 100644
+index e9ffb92..c4c4049 100644
--- a/drivers/video/omap/omapfb_main.c
+++ b/drivers/video/omap/omapfb_main.c
-@@ -33,6 +33,20 @@
+@@ -36,6 +36,20 @@
#define MODULE_NAME "omapfb"
@@ -74,17 +74,16 @@ index f2229b1..2e53d8f 100644
+
static unsigned int def_accel;
static unsigned long def_vram[OMAPFB_PLANE_NUM];
- static int def_vram_cnt;
-@@ -40,7 +54,7 @@ static unsigned long def_vxres;
+ static unsigned int def_vram_cnt;
+@@ -43,6 +57,7 @@ static unsigned long def_vxres;
static unsigned long def_vyres;
static unsigned int def_rotate;
static unsigned int def_mirror;
--static int def_mode = -1;
+static char def_mode[16] = CONFIG_FB_OMAP_VIDEO_MODE;
#ifdef CONFIG_FB_OMAP_MANUAL_UPDATE
static int manual_update = 1;
-@@ -51,6 +65,7 @@ static int manual_update;
+@@ -53,6 +68,7 @@ static int manual_update;
static struct platform_device *fbdev_pdev;
static struct lcd_panel *fbdev_panel;
static struct omapfb_device *omapfb_dev;
@@ -92,11 +91,10 @@ index f2229b1..2e53d8f 100644
struct caps_table_struct {
unsigned long flag;
-@@ -81,9 +96,88 @@ static struct caps_table_struct color_caps[] = {
+@@ -83,6 +99,152 @@ static struct caps_table_struct color_caps[] = {
{ 1 << OMAPFB_COLOR_YUY422, "YUY422", },
};
--static const struct video_mode video_modes[] = {
+static struct video_mode video_modes[] __initdata = {
+ {
+ /* 640 x 480 @ 60 Hz Reduced blanking VESA CVT 0.31M3-R */
@@ -176,55 +174,60 @@ index f2229b1..2e53d8f 100644
+ .vbp = 39,
+ .pixel_clock = 27000,
+ },
- {
-- .name = "1280x720@50",
++ {
+ /* 1280 x 720 @ 50 Hz CEA-861B Format 19 */
+ .name = "720p50",
- .x_res = 1280,
- .y_res = 720,
- .hfp = 440,
-@@ -95,7 +189,8 @@ static const struct video_mode video_modes[] = {
- .pixel_clock = 74250,
- },
- {
-- .name = "1280x720@60",
++ .x_res = 1280,
++ .y_res = 720,
++ .hfp = 440,
++ .hsw = 40,
++ .hbp = 220,
++ .vfp = 20,
++ .vsw = 5,
++ .vbp = 5,
++ .pixel_clock = 74250,
++ },
++ {
+ /* 1280 x 720 @ 60 Hz CEA-861B Format 4 */
+ .name = "720p60",
- .x_res = 1280,
- .y_res = 720,
- .hfp = 110,
-@@ -107,7 +202,8 @@ static const struct video_mode video_modes[] = {
- .pixel_clock = 74250,
- },
- {
-- .name = "1920x1080@24",
++ .x_res = 1280,
++ .y_res = 720,
++ .hfp = 110,
++ .hsw = 40,
++ .hbp = 220,
++ .vfp = 20,
++ .vsw = 5,
++ .vbp = 5,
++ .pixel_clock = 74250,
++ },
++ {
+ /* 1920 x 1080 @ 24 Hz CEA-861B Format 32 */
+ .name = "1080p24",
- .x_res = 1920,
- .y_res = 1080,
- .hfp = 148,
-@@ -116,10 +212,11 @@ static const struct video_mode video_modes[] = {
- .vfp = 36,
- .vsw = 5,
- .vbp = 4,
-- .pixel_clock = 74160,
++ .x_res = 1920,
++ .y_res = 1080,
++ .hfp = 148,
++ .hsw = 44,
++ .hbp = 638,
++ .vfp = 36,
++ .vsw = 5,
++ .vbp = 4,
+ .pixel_clock = 74250,
- },
- {
-- .name = "1920x1080@25",
++ },
++ {
+ /* 1920 x 1080 @ 25 Hz CEA-861B Format 33 */
+ .name = "1080p25",
- .x_res = 1920,
- .y_res = 1080,
- .hfp = 148,
-@@ -129,7 +226,20 @@ static const struct video_mode video_modes[] = {
- .vsw = 5,
- .vbp = 4,
- .pixel_clock = 74250,
-- }
++ .x_res = 1920,
++ .y_res = 1080,
++ .hfp = 148,
++ .hsw = 44,
++ .hbp = 528,
++ .vfp = 36,
++ .vsw = 5,
++ .vbp = 4,
++ .pixel_clock = 74250,
+ },
+ {
-+ /* 1920 x 1080 @ 25 Hz CEA-861B Format 34 */
++ /* 1920 x 1080 @ 30 Hz CEA-861B Format 34 */
+ .name = "1080p30",
+ .x_res = 1920,
+ .y_res = 1080,
@@ -236,23 +239,15 @@ index f2229b1..2e53d8f 100644
+ .vbp = 4,
+ .pixel_clock = 74250,
+ },
- };
-
++};
++
/*
-@@ -1763,16 +1873,18 @@ static int omapfb_do_probe(struct platform_device *pdev,
+ * ---------------------------------------------------------------------------
+ * LCD panel
+@@ -1714,6 +1876,20 @@ static int omapfb_do_probe(struct platform_device *pdev,
goto cleanup;
}
-- if (def_mode != -1) {
-- fbdev->panel->x_res = video_modes[def_mode].x_res;
-- fbdev->panel->y_res = video_modes[def_mode].y_res;
-- fbdev->panel->pixel_clock = video_modes[def_mode].pixel_clock;
-- fbdev->panel->hsw = video_modes[def_mode].hsw;
-- fbdev->panel->hfp = video_modes[def_mode].hfp;
-- fbdev->panel->hbp = video_modes[def_mode].hbp;
-- fbdev->panel->vsw = video_modes[def_mode].vsw;
-- fbdev->panel->vfp = video_modes[def_mode].vfp;
-- fbdev->panel->vbp = video_modes[def_mode].vbp;
+ if (video_mode.name) {
+ pr_info("omapfb: using mode %s\n", video_mode.name);
+
@@ -265,39 +260,39 @@ index f2229b1..2e53d8f 100644
+ fbdev->panel->vsw = video_mode.vsw;
+ fbdev->panel->vfp = video_mode.vfp;
+ fbdev->panel->vbp = video_mode.vbp;
- }
-
++ }
++
r = fbdev->panel->init(fbdev->panel, fbdev);
-@@ -1931,14 +2043,15 @@ static struct platform_driver omapfb_driver = {
+ if (r)
+ goto cleanup;
+@@ -1870,6 +2046,17 @@ static struct platform_driver omapfb_driver = {
},
};
--static int __init omapfb_find_mode(char *mode)
+static void __init omapfb_find_mode(char *name, struct video_mode *vmode)
- {
- int i;
-
- for (i = 0; i < sizeof(video_modes)/sizeof(video_modes[0]); i++)
-- if (!strcmp(mode, video_modes[i].name))
-- return i;
-- return -1;
++{
++ int i;
++
++ for (i = 0; i < sizeof(video_modes)/sizeof(video_modes[0]); i++)
+ if (!strcmp(name, video_modes[i].name)) {
+ *vmode = video_modes[i];
+ break;
+ }
- }
-
++}
++
#ifndef MODULE
-@@ -1990,7 +2103,7 @@ static int __init omapfb_setup(char *options)
+
+ /* Process kernel command line parameters */
+@@ -1918,6 +2105,8 @@ static int __init omapfb_setup(char *options)
+ def_mirror = (simple_strtoul(this_opt + 7, NULL, 0));
else if (!strncmp(this_opt, "manual_update", 13))
manual_update = 1;
- else if (!strncmp(this_opt, "mode:", 5))
-- def_mode = omapfb_find_mode(this_opt + 5);
++ else if (!strncmp(this_opt, "mode:", 5))
+ strncpy(def_mode, this_opt + 5, sizeof(def_mode));
else {
pr_debug("omapfb: invalid option\n");
r = -1;
-@@ -2012,6 +2125,9 @@ static int __init omapfb_init(void)
+@@ -1939,6 +2128,9 @@ static int __init omapfb_init(void)
return -ENODEV;
omapfb_setup(option);
#endif
@@ -307,7 +302,7 @@ index f2229b1..2e53d8f 100644
/* Register the driver with LDM */
if (platform_driver_register(&omapfb_driver)) {
pr_debug("failed to register omapfb driver\n");
-@@ -2033,6 +2149,7 @@ module_param_named(vyres, def_vyres, long, 0664);
+@@ -1960,6 +2152,7 @@ module_param_named(vyres, def_vyres, long, 0664);
module_param_named(rotate, def_rotate, uint, 0664);
module_param_named(mirror, def_mirror, uint, 0664);
module_param_named(manual_update, manual_update, bool, 0664);
diff --git a/packages/linux/linux-omap/no-cortex-deadlock.patch b/packages/linux/linux-omap/no-cortex-deadlock.patch
index 5bb6d22484..78547c8969 100644
--- a/packages/linux/linux-omap/no-cortex-deadlock.patch
+++ b/packages/linux/linux-omap/no-cortex-deadlock.patch
@@ -1,9 +1,9 @@
From: Mans Rullgard <mans@mansr.com>
-Date: Wed, 30 Jul 2008 08:25:51 +0000 (+0100)
-Subject: ARM: NEON L1 cache bug workaround (erratum 451034)
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=26023493baf13e0a67fd6cf08d87be5ff6f7c56d
+Date: Sat, 16 Aug 2008 23:03:06 +0000 (+0100)
+Subject: ARM: Workaround for erratum 451034
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=b84fa87873ffb68ad23930cf6cddeea8bec43ede
-ARM: NEON L1 cache bug workaround (erratum 451034)
+ARM: Workaround for erratum 451034
On Cortex-A8 r1p0 and r1p1, executing a NEON store with an integer
store in the store buffer, can cause a processor deadlock under
@@ -15,61 +15,63 @@ counter-measures. Userspace code can still trigger the deadlock, so
a different workaround is required to safely run untrusted code.
See ARM Cortex-A8 Errata Notice (PR120-PRDC-008070) for full details.
+
+Signed-off-by: Mans Rullgard <mans@mansr.com>
---
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
-index 8c75840..1172e14 100644
+index aa475d9..41d536e 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
-@@ -1071,6 +1071,22 @@ config NEON
+@@ -1117,6 +1117,22 @@ config NEON
Say Y to include support code for NEON, the ARMv7 Advanced SIMD
Extension.
-+config NEON_CACHE_BUG
-+ bool "NEON L1 cache bug workaround (erratum 451034)"
++config ARM_ERRATUM_451034
++ bool "Enable workaround for ARM erratum 451034"
+ depends on VFPv3
+ help
-+ On Cortex-A8 r1p0 and r1p1, executing a NEON store with an integer
-+ store in the store buffer, can cause a processor deadlock under
-+ certain conditions.
++ On Cortex-A8 r1p0 and r1p1, executing a NEON store with an integer
++ store in the store buffer, can cause a processor deadlock under
++ certain conditions.
+
-+ See ARM Cortex-A8 Errata Notice (PR120-PRDC-008070) for full details.
++ See ARM Cortex-A8 Errata Notice (PR120-PRDC-008070) for full details.
+
-+ Say Y to include a workaround.
++ Say Y to include a partial workaround.
+
-+ WARNING: Even with this option enabled, userspace code can trigger
-+ the deadlock. To safely run untrusted code, a different fix is
-+ required.
++ WARNING: Even with this option enabled, userspace code can trigger
++ the deadlock. To safely run untrusted code, a different fix is
++ required.
+
endmenu
menu "Userspace binary formats"
-diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
-index 597ed00..e50094e 100644
---- a/arch/arm/kernel/entry-common.S
-+++ b/arch/arm/kernel/entry-common.S
-@@ -68,6 +68,10 @@ no_work_pending:
- /* perform architecture specific actions before user return */
- arch_ret_to_user r1, lr
-
-+#ifdef CONFIG_NEON_CACHE_BUG
-+ dmb
-+#endif
-+
- @ slow_restore_user_regs
- ldr r1, [sp, #S_PSR] @ get calling cpsr
- ldr lr, [sp, #S_PC]! @ get pc
diff --git a/arch/arm/include/asm/vfpmacros.h b/arch/arm/include/asm/vfpmacros.h
-index cccb389..c9d2976 100644
+index 422f3cc..934798b 100644
--- a/arch/arm/include/asm/vfpmacros.h
+++ b/arch/arm/include/asm/vfpmacros.h
@@ -32,6 +32,9 @@
@ write all the working registers out of the VFP
.macro VFPFSTMIA, base, tmp
-+#ifdef CONFIG_NEON_CACHE_BUG
++#ifdef CONFIG_ARM_ERRATUM_451034
+ dmb
+#endif
#if __LINUX_ARM_ARCH__ < 6
STC p11, cr0, [\base],#33*4 @ FSTMIAX \base!, {d0-d15}
#else
+diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
+index 060d7e2..9799a35 100644
+--- a/arch/arm/kernel/entry-common.S
++++ b/arch/arm/kernel/entry-common.S
+@@ -69,6 +69,10 @@ no_work_pending:
+ /* perform architecture specific actions before user return */
+ arch_ret_to_user r1, lr
+
++#ifdef CONFIG_ARM_ERRATUM_451034
++ dmb
++#endif
++
+ @ slow_restore_user_regs
+ ldr r1, [sp, #S_PSR] @ get calling cpsr
+ ldr lr, [sp, #S_PC]! @ get pc
diff --git a/packages/linux/linux-omap/omap3evm/defconfig b/packages/linux/linux-omap/omap3evm/defconfig
index 102f6ecd63..df28cacd44 100644
--- a/packages/linux/linux-omap/omap3evm/defconfig
+++ b/packages/linux/linux-omap/omap3evm/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.27-rc6-omap1
-# Sun Sep 14 21:25:30 2008
+# Tue Sep 16 10:26:07 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -202,9 +202,9 @@ CONFIG_OMAP_MCBSP=y
CONFIG_OMAP_32K_TIMER=y
CONFIG_OMAP_32K_TIMER_HZ=128
CONFIG_OMAP_DM_TIMER=y
-# CONFIG_OMAP_LL_DEBUG_UART1 is not set
+CONFIG_OMAP_LL_DEBUG_UART1=y
# CONFIG_OMAP_LL_DEBUG_UART2 is not set
-CONFIG_OMAP_LL_DEBUG_UART3=y
+# CONFIG_OMAP_LL_DEBUG_UART3 is not set
CONFIG_ARCH_OMAP34XX=y
CONFIG_ARCH_OMAP3430=y
@@ -213,8 +213,8 @@ CONFIG_ARCH_OMAP3430=y
#
# CONFIG_MACH_OMAP_LDP is not set
# CONFIG_MACH_OMAP_3430SDP is not set
-# CONFIG_MACH_OMAP3EVM is not set
-CONFIG_MACH_OMAP3_BEAGLE=y
+CONFIG_MACH_OMAP3EVM=y
+# CONFIG_MACH_OMAP3_BEAGLE is not set
# CONFIG_MACH_OVERO is not set
CONFIG_OMAP_TICK_GPTIMER=12
@@ -330,7 +330,7 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
CONFIG_VFP=y
CONFIG_VFPv3=y
CONFIG_NEON=y
-CONFIG_NEON_CACHE_BUG=y
+CONFIG_ARM_ERRATUM_451034=y
#
# Userspace binary formats
@@ -798,6 +798,7 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_KEYBOARD_TWL4030=y
# CONFIG_KEYBOARD_LM8323 is not set
# CONFIG_KEYBOARD_GPIO is not set
CONFIG_INPUT_MOUSE=y
@@ -879,7 +880,6 @@ CONFIG_I2C_HELPER_AUTO=y
# CONFIG_I2C_GPIO is not set
# CONFIG_I2C_OCORES is not set
CONFIG_I2C_OMAP=y
-# CONFIG_I2C2_OMAP_BEAGLE is not set
# CONFIG_I2C_SIMTEC is not set
#
@@ -931,7 +931,7 @@ CONFIG_SPI_MASTER=y
# SPI Master Controller Drivers
#
# CONFIG_SPI_BITBANG is not set
-# CONFIG_SPI_OMAP24XX is not set
+CONFIG_SPI_OMAP24XX=y
#
# SPI Protocol Masters
@@ -1292,6 +1292,7 @@ CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_VIRTUAL is not set
CONFIG_FB_OMAP=y
+CONFIG_FB_OMAP_VIDEO_MODE=""
# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=8
@@ -1317,10 +1318,7 @@ CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
+# CONFIG_LOGO is not set
CONFIG_SOUND=y
CONFIG_SND=y
CONFIG_SND_TIMER=y
@@ -1905,7 +1903,7 @@ CONFIG_FRAME_POINTER=y
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_FAULT_INJECTION is not set
-# CONFIG_LATENCYTOP is not set
+CONFIG_LATENCYTOP=y
CONFIG_HAVE_FTRACE=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
# CONFIG_FTRACE is not set
diff --git a/packages/linux/linux-omap/strongly-ordered-memory.diff b/packages/linux/linux-omap/strongly-ordered-memory.diff
new file mode 100644
index 0000000000..b60e4f4a6b
--- /dev/null
+++ b/packages/linux/linux-omap/strongly-ordered-memory.diff
@@ -0,0 +1,18 @@
+--- /tmp/irq.c 2008-09-16 10:43:30.000000000 +0200
++++ git/arch/arm/mach-omap2/irq.c 2008-09-16 10:46:18.463198000 +0200
+@@ -64,6 +64,7 @@
+ static void omap_ack_irq(unsigned int irq)
+ {
+ intc_bank_write_reg(0x1, &irq_banks[0], INTC_CONTROL);
++ intc_bank_read_reg(&irq_banks[0],INTC_REVISION);
+ }
+
+ static void omap_mask_irq(unsigned int irq)
+@@ -73,6 +74,7 @@
+ irq &= (IRQ_BITS_PER_REG - 1);
+
+ intc_bank_write_reg(1 << irq, &irq_banks[0], INTC_MIR_SET0 + offset);
++ intc_bank_read_reg(&irq_banks[0],INTC_REVISION);
+ }
+
+ static void omap_unmask_irq(unsigned int irq)