diff options
Diffstat (limited to 'recipes/kexecboot/linux-kexecboot-2.6.32/dss2')
5 files changed, 0 insertions, 1118 deletions
diff --git a/recipes/kexecboot/linux-kexecboot-2.6.32/dss2/0012-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-pane.patch b/recipes/kexecboot/linux-kexecboot-2.6.32/dss2/0012-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-pane.patch deleted file mode 100644 index a22f3e712f..0000000000 --- a/recipes/kexecboot/linux-kexecboot-2.6.32/dss2/0012-OMAP-DSS2-Add-support-for-LG-Philips-LB035Q02-pane.patch +++ /dev/null @@ -1,254 +0,0 @@ -From e09abf20005e9abf41e44e712bc600d2cb346cb5 Mon Sep 17 00:00:00 2001 -From: Steve Sakoman <steve@sakoman.com> -Date: Thu, 17 Dec 2009 15:05:30 -0800 -Subject: [PATCH 12/16] OMAP: DSS2: Add support for LG Philips LB035Q02 panel - ---- - drivers/video/omap2/displays/Kconfig | 6 + - drivers/video/omap2/displays/Makefile | 1 + - .../omap2/displays/panel-lgphilips-lb035q02.c | 206 ++++++++++++++++++++ - 3 files changed, 213 insertions(+), 0 deletions(-) - create mode 100644 drivers/video/omap2/displays/panel-lgphilips-lb035q02.c - -diff --git a/drivers/video/omap2/displays/Kconfig b/drivers/video/omap2/displays/Kconfig -index 79d2861..050f29c 100644 ---- a/drivers/video/omap2/displays/Kconfig -+++ b/drivers/video/omap2/displays/Kconfig -@@ -7,6 +7,12 @@ config PANEL_GENERIC - Generic panel driver. - Used for DVI output for Beagle and OMAP3 SDP. - -+config PANEL_LGPHILIPS_LB035Q02 -+ tristate "LG.Philips LB035Q02 LCD Panel" -+ depends on OMAP2_DSS -+ help -+ LCD Panel used on Overo Palo35 -+ - config PANEL_SAMSUNG_LTE430WQ_F0C - tristate "Samsung LTE430WQ-F0C LCD Panel" - depends on OMAP2_DSS -diff --git a/drivers/video/omap2/displays/Makefile b/drivers/video/omap2/displays/Makefile -index d44e765..28f6f9b 100644 ---- a/drivers/video/omap2/displays/Makefile -+++ b/drivers/video/omap2/displays/Makefile -@@ -1,4 +1,5 @@ - obj-$(CONFIG_PANEL_GENERIC) += panel-generic.o -+obj-$(CONFIG_PANEL_LGPHILIPS_LB035Q02) += panel-lgphilips-lb035q02.o - obj-$(CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C) += panel-samsung-lte430wq-f0c.o - obj-$(CONFIG_PANEL_SHARP_LS037V7DW01) += panel-sharp-ls037v7dw01.o - -diff --git a/drivers/video/omap2/displays/panel-lgphilips-lb035q02.c b/drivers/video/omap2/displays/panel-lgphilips-lb035q02.c -new file mode 100644 -index 0000000..22dc865 ---- /dev/null -+++ b/drivers/video/omap2/displays/panel-lgphilips-lb035q02.c -@@ -0,0 +1,206 @@ -+/* -+ * LCD panel driver for LG.Philips LB035Q02 -+ * -+ * Author: Steve Sakoman <steve@sakoman.com> -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 as published by -+ * the Free Software Foundation. -+ * -+ * This program is distributed in the hope that it will be useful, but WITHOUT -+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -+ * more details. -+ * -+ * You should have received a copy of the GNU General Public License along with -+ * this program. If not, see <http://www.gnu.org/licenses/>. -+ */ -+ -+#include <linux/module.h> -+#include <linux/delay.h> -+#include <linux/spi/spi.h> -+ -+#include <plat/display.h> -+ -+static struct spi_device *spidev; -+ -+static struct omap_video_timings lb035q02_timings = { -+ .x_res = 320, -+ .y_res = 240, -+ -+ .pixel_clock = 6500, -+ -+ .hsw = 2, -+ .hfp = 20, -+ .hbp = 68, -+ -+ .vsw = 2, -+ .vfp = 4, -+ .vbp = 18, -+}; -+ -+static int lb035q02_panel_probe(struct omap_dss_device *dssdev) -+{ -+ dssdev->panel.config = OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS | -+ OMAP_DSS_LCD_IHS; -+ dssdev->panel.timings = lb035q02_timings; -+ -+ return 0; -+} -+ -+static void lb035q02_panel_remove(struct omap_dss_device *dssdev) -+{ -+} -+ -+static int lb035q02_write_reg(u8 reg, u16 val) -+{ -+ struct spi_message msg; -+ struct spi_transfer index_xfer = { -+ .len = 3, -+ .cs_change = 1, -+ }; -+ struct spi_transfer value_xfer = { -+ .len = 3, -+ }; -+ u8 buffer[16]; -+ -+ spi_message_init(&msg); -+ -+ /* register index */ -+ buffer[0] = 0x70; -+ buffer[1] = 0x00; -+ buffer[2] = reg & 0x7f; -+ index_xfer.tx_buf = buffer; -+ spi_message_add_tail(&index_xfer, &msg); -+ -+ /* register value */ -+ buffer[4] = 0x72; -+ buffer[5] = val >> 8; -+ buffer[6] = val; -+ value_xfer.tx_buf = buffer + 4; -+ spi_message_add_tail(&value_xfer, &msg); -+ -+ return spi_sync(spidev, &msg); -+} -+ -+static int lb035q02_panel_enable(struct omap_dss_device *dssdev) -+{ -+ int r = 0; -+ -+ pr_info("lgphilips_lb035q02: panel_enable: 0x%08x\n", spidev); -+ /* wait couple of vsyncs until enabling the LCD */ -+ msleep(50); -+ -+ if (dssdev->platform_enable) -+ r = dssdev->platform_enable(dssdev); -+ -+ /* Panel init sequence from page 28 of the spec */ -+ lb035q02_write_reg(0x01, 0x6300); -+ lb035q02_write_reg(0x02, 0x0200); -+ lb035q02_write_reg(0x03, 0x0177); -+ lb035q02_write_reg(0x04, 0x04c7); -+ lb035q02_write_reg(0x05, 0xffc0); -+ lb035q02_write_reg(0x06, 0xe806); -+ lb035q02_write_reg(0x0a, 0x4008); -+ lb035q02_write_reg(0x0b, 0x0000); -+ lb035q02_write_reg(0x0d, 0x0030); -+ lb035q02_write_reg(0x0e, 0x2800); -+ lb035q02_write_reg(0x0f, 0x0000); -+ lb035q02_write_reg(0x16, 0x9f80); -+ lb035q02_write_reg(0x17, 0x0a0f); -+ lb035q02_write_reg(0x1e, 0x00c1); -+ lb035q02_write_reg(0x30, 0x0300); -+ lb035q02_write_reg(0x31, 0x0007); -+ lb035q02_write_reg(0x32, 0x0000); -+ lb035q02_write_reg(0x33, 0x0000); -+ lb035q02_write_reg(0x34, 0x0707); -+ lb035q02_write_reg(0x35, 0x0004); -+ lb035q02_write_reg(0x36, 0x0302); -+ lb035q02_write_reg(0x37, 0x0202); -+ lb035q02_write_reg(0x3a, 0x0a0d); -+ lb035q02_write_reg(0x3b, 0x0806); -+ -+ return r; -+} -+ -+static void lb035q02_panel_disable(struct omap_dss_device *dssdev) -+{ -+ if (dssdev->platform_disable) -+ dssdev->platform_disable(dssdev); -+ -+ /* wait at least 5 vsyncs after disabling the LCD */ -+ -+ msleep(100); -+} -+ -+static int lb035q02_panel_suspend(struct omap_dss_device *dssdev) -+{ -+ pr_info("lgphilips_lb035q02: panel_suspend\n"); -+ lb035q02_panel_disable(dssdev); -+ return 0; -+} -+ -+static int lb035q02_panel_resume(struct omap_dss_device *dssdev) -+{ -+ pr_info("lgphilips_lb035q02: panel_resume\n"); -+ return lb035q02_panel_enable(dssdev); -+} -+ -+static struct omap_dss_driver lb035q02_driver = { -+ .probe = lb035q02_panel_probe, -+ .remove = lb035q02_panel_remove, -+ -+ .enable = lb035q02_panel_enable, -+ .disable = lb035q02_panel_disable, -+ .suspend = lb035q02_panel_suspend, -+ .resume = lb035q02_panel_resume, -+ -+ .driver = { -+ .name = "lgphilips_lb035q02_panel", -+ .owner = THIS_MODULE, -+ }, -+}; -+ -+static int __devinit lb035q02_panel_spi_probe(struct spi_device *spi) -+{ -+ spidev = spi; -+ return 0; -+} -+ -+static int __devexit lb035q02_panel_spi_remove(struct spi_device *spi) -+{ -+ return 0; -+} -+ -+static struct spi_driver lb035q02_spi_driver = { -+ .driver = { -+ .name = "lgphilips_lb035q02_panel-spi", -+ .owner = THIS_MODULE, -+ }, -+ .probe = lb035q02_panel_spi_probe, -+ .remove = __devexit_p (lb035q02_panel_spi_remove), -+}; -+ -+static int __init lb035q02_panel_drv_init(void) -+{ -+ int ret; -+ ret = spi_register_driver(&lb035q02_spi_driver); -+ if (ret != 0) -+ pr_err("lgphilips_lb035q02: Unable to register SPI driver: %d\n", ret); -+ -+ ret = omap_dss_register_driver(&lb035q02_driver); -+ if (ret != 0) -+ pr_err("lgphilips_lb035q02: Unable to register panel driver: %d\n", ret); -+ -+ return ret; -+} -+ -+static void __exit lb035q02_panel_drv_exit(void) -+{ -+ spi_unregister_driver(&lb035q02_spi_driver); -+ omap_dss_unregister_driver(&lb035q02_driver); -+} -+ -+module_init(lb035q02_panel_drv_init); -+module_exit(lb035q02_panel_drv_exit); -+MODULE_LICENSE("GPL"); --- -1.6.2.4 - diff --git a/recipes/kexecboot/linux-kexecboot-2.6.32/dss2/0014-OMAP-DSS-Add-DSS2-support-for-Overo.patch b/recipes/kexecboot/linux-kexecboot-2.6.32/dss2/0014-OMAP-DSS-Add-DSS2-support-for-Overo.patch deleted file mode 100644 index c673a09a76..0000000000 --- a/recipes/kexecboot/linux-kexecboot-2.6.32/dss2/0014-OMAP-DSS-Add-DSS2-support-for-Overo.patch +++ /dev/null @@ -1,343 +0,0 @@ -From 6b135653505a2a5da42c92cfa31c3ab22e2b130f Mon Sep 17 00:00:00 2001 -From: Steve Sakoman <steve@sakoman.com> -Date: Fri, 18 Dec 2009 06:39:24 -0800 -Subject: [PATCH 14/16] OMAP: DSS: Add DSS2 support for Overo - ---- - arch/arm/mach-omap2/board-overo.c | 233 +++++++++++++++++++++++++++++++----- - 1 files changed, 200 insertions(+), 33 deletions(-) - -diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c -index d0394d9..b90b140 100644 ---- a/arch/arm/mach-omap2/board-overo.c -+++ b/arch/arm/mach-omap2/board-overo.c -@@ -28,6 +28,7 @@ - #include <linux/platform_device.h> - #include <linux/i2c/twl4030.h> - #include <linux/regulator/machine.h> -+#include <linux/spi/spi.h> - - #include <linux/mtd/mtd.h> - #include <linux/mtd/nand.h> -@@ -40,10 +41,12 @@ - - #include <plat/board.h> - #include <plat/common.h> -+#include <plat/display.h> - #include <mach/gpio.h> - #include <plat/gpmc.h> - #include <mach/hardware.h> - #include <plat/nand.h> -+#include <plat/mcspi.h> - #include <plat/mux.h> - #include <plat/usb.h> - -@@ -69,8 +72,6 @@ - #if defined(CONFIG_TOUCHSCREEN_ADS7846) || \ - defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) - --#include <plat/mcspi.h> --#include <linux/spi/spi.h> - #include <linux/spi/ads7846.h> - - static struct omap2_mcspi_device_config ads7846_mcspi_config = { -@@ -95,18 +96,6 @@ static struct ads7846_platform_data ads7846_config = { - .keep_vref_on = 1, - }; - --static struct spi_board_info overo_spi_board_info[] __initdata = { -- { -- .modalias = "ads7846", -- .bus_num = 1, -- .chip_select = 0, -- .max_speed_hz = 1500000, -- .controller_data = &ads7846_mcspi_config, -- .irq = OMAP_GPIO_IRQ(OVERO_GPIO_PENDOWN), -- .platform_data = &ads7846_config, -- } --}; -- - static void __init overo_ads7846_init(void) - { - if ((gpio_request(OVERO_GPIO_PENDOWN, "ADS7846_PENDOWN") == 0) && -@@ -116,9 +105,6 @@ static void __init overo_ads7846_init(void) - printk(KERN_ERR "could not obtain gpio for ADS7846_PENDOWN\n"); - return; - } -- -- spi_register_board_info(overo_spi_board_info, -- ARRAY_SIZE(overo_spi_board_info)); - } - - #else -@@ -234,6 +220,137 @@ static inline void __init overo_init_smsc911x(void) - static inline void __init overo_init_smsc911x(void) { return; } - #endif - -+/* DSS */ -+static int lcd_enabled; -+static int dvi_enabled; -+ -+#define OVERO_GPIO_LCD_EN 144 -+#define OVERO_GPIO_LCD_BL 145 -+ -+static void __init overo_display_init(void) -+{ -+ if ((gpio_request(OVERO_GPIO_LCD_EN, "OVERO_GPIO_LCD_EN") == 0) && -+ (gpio_direction_output(OVERO_GPIO_LCD_EN, 1) == 0)) -+ gpio_export(OVERO_GPIO_LCD_EN, 0); -+ else -+ printk(KERN_ERR "could not obtain gpio for " -+ "OVERO_GPIO_LCD_EN\n"); -+ -+ if ((gpio_request(OVERO_GPIO_LCD_BL, "OVERO_GPIO_LCD_BL") == 0) && -+ (gpio_direction_output(OVERO_GPIO_LCD_BL, 1) == 0)) -+ gpio_export(OVERO_GPIO_LCD_BL, 0); -+ else -+ printk(KERN_ERR "could not obtain gpio for " -+ "OVERO_GPIO_LCD_BL\n"); -+} -+ -+static int overo_panel_enable_dvi(struct omap_dss_device *dssdev) -+{ -+ if (lcd_enabled) { -+ printk(KERN_ERR "cannot enable DVI, LCD is enabled\n"); -+ return -EINVAL; -+ } -+ dvi_enabled = 1; -+ -+ return 0; -+} -+ -+static void overo_panel_disable_dvi(struct omap_dss_device *dssdev) -+{ -+ dvi_enabled = 0; -+} -+ -+static struct omap_dss_device overo_dvi_device = { -+ .type = OMAP_DISPLAY_TYPE_DPI, -+ .name = "dvi", -+ .driver_name = "generic_panel", -+ .phy.dpi.data_lines = 24, -+ .platform_enable = overo_panel_enable_dvi, -+ .platform_disable = overo_panel_disable_dvi, -+}; -+ -+static int overo_panel_enable_lcd(struct omap_dss_device *dssdev) -+{ -+ if (dvi_enabled) { -+ printk(KERN_ERR "cannot enable LCD, DVI is enabled\n"); -+ return -EINVAL; -+ } -+ -+ gpio_set_value(OVERO_GPIO_LCD_EN, 1); -+ gpio_set_value(OVERO_GPIO_LCD_BL, 1); -+ lcd_enabled = 1; -+ return 0; -+} -+ -+static void overo_panel_disable_lcd(struct omap_dss_device *dssdev) -+{ -+ gpio_set_value(OVERO_GPIO_LCD_EN, 0); -+ gpio_set_value(OVERO_GPIO_LCD_BL, 0); -+ lcd_enabled = 0; -+} -+ -+#if defined(CONFIG_PANEL_LGPHILIPS_LB035Q02) || \ -+ defined(CONFIG_PANEL_LGPHILIPS_LB035Q02_MODULE) -+static struct omap_dss_device overo_lcd35_device = { -+ .type = OMAP_DISPLAY_TYPE_DPI, -+ .name = "lcd35", -+ .driver_name = "lgphilips_lb035q02_panel", -+ .phy.dpi.data_lines = 24, -+ .panel.recommended_bpp = 16, -+ .platform_enable = overo_panel_enable_lcd, -+ .platform_disable = overo_panel_disable_lcd, -+}; -+#endif -+ -+#if defined(CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C) || \ -+ defined(CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C_MODULE) -+static struct omap_dss_device overo_lcd43_device = { -+ .type = OMAP_DISPLAY_TYPE_DPI, -+ .name = "lcd43", -+ .driver_name = "samsung_lte_panel", -+ .phy.dpi.data_lines = 24, -+ .panel.recommended_bpp = 16, -+ .platform_enable = overo_panel_enable_lcd, -+ .platform_disable = overo_panel_disable_lcd, -+}; -+#endif -+ -+static struct omap_dss_device *overo_dss_devices[] = { -+ &overo_dvi_device, -+#if defined(CONFIG_PANEL_LGPHILIPS_LB035Q02) || \ -+ defined(CONFIG_PANEL_LGPHILIPS_LB035Q02_MODULE) -+ &overo_lcd35_device, -+#endif -+#if defined(CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C) || \ -+ defined(CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C_MODULE) -+ &overo_lcd43_device, -+#endif -+}; -+ -+static struct omap_dss_board_info overo_dss_data = { -+ .num_devices = ARRAY_SIZE(overo_dss_devices), -+ .devices = overo_dss_devices, -+ .default_device = &overo_dvi_device, -+}; -+ -+static struct platform_device overo_dss_device = { -+ .name = "omapdss", -+ .id = -1, -+ .dev = { -+ .platform_data = &overo_dss_data, -+ }, -+}; -+ -+static struct regulator_consumer_supply overo_vdda_dac_supply = { -+ .supply = "vdda_dac", -+ .dev = &overo_dss_device.dev, -+}; -+ -+static struct regulator_consumer_supply overo_vdds_dsi_supply = { -+ .supply = "vdds_dsi", -+ .dev = &overo_dss_device.dev, -+}; -+ - static struct mtd_partition overo_nand_partitions[] = { - { - .name = "xloader", -@@ -379,6 +496,37 @@ static struct regulator_init_data overo_vmmc1 = { - .consumer_supplies = &overo_vmmc1_supply, - }; - -+/* VDAC for DSS driving S-Video (8 mA unloaded, max 65 mA) */ -+static struct regulator_init_data overo_vdac = { -+ .constraints = { -+ .min_uV = 1800000, -+ .max_uV = 1800000, -+ .valid_modes_mask = REGULATOR_MODE_NORMAL -+ | REGULATOR_MODE_STANDBY, -+ .valid_ops_mask = REGULATOR_CHANGE_MODE -+ | REGULATOR_CHANGE_STATUS, -+ }, -+ .num_consumer_supplies = 1, -+ .consumer_supplies = &overo_vdda_dac_supply, -+}; -+ -+/* VPLL2 for digital video outputs */ -+static struct regulator_init_data overo_vpll2 = { -+ .constraints = { -+ .name = "VDVI", -+ .min_uV = 1800000, -+ .max_uV = 1800000, -+ .valid_modes_mask = REGULATOR_MODE_NORMAL -+ | REGULATOR_MODE_STANDBY, -+ .valid_ops_mask = REGULATOR_CHANGE_MODE -+ | REGULATOR_CHANGE_STATUS, -+ }, -+ .num_consumer_supplies = 1, -+ .consumer_supplies = &overo_vdds_dsi_supply, -+}; -+ -+/* mmc2 (WLAN) and Bluetooth don't use twl4030 regulators */ -+ - static struct twl4030_codec_audio_data overo_audio_data = { - .audio_mclk = 26000000, - }; -@@ -388,8 +536,6 @@ static struct twl4030_codec_data overo_codec_data = { - .audio = &overo_audio_data, - }; - --/* mmc2 (WLAN) and Bluetooth don't use twl4030 regulators */ -- - static struct twl4030_madc_platform_data overo_madc_data = { - .irq_line = 1, - }; -@@ -402,6 +548,8 @@ static struct twl4030_platform_data overo_twldata = { - .usb = &overo_usb_data, - .codec = &overo_codec_data, - .vmmc1 = &overo_vmmc1, -+ .vdac = &overo_vdac, -+ .vpll2 = &overo_vpll2, - }; - - static struct i2c_board_info __initdata overo_i2c_boardinfo[] = { -@@ -422,23 +570,41 @@ static int __init overo_i2c_init(void) - return 0; - } - --static struct platform_device overo_lcd_device = { -- .name = "overo_lcd", -- .id = -1, --}; -- --static struct omap_lcd_config overo_lcd_config __initdata = { -- .ctrl_name = "internal", -+static struct spi_board_info overo_spi_board_info[] __initdata = { -+#if defined(CONFIG_TOUCHSCREEN_ADS7846) || \ -+ defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) -+ { -+ .modalias = "ads7846", -+ .bus_num = 1, -+ .chip_select = 0, -+ .max_speed_hz = 1500000, -+ .controller_data = &ads7846_mcspi_config, -+ .irq = OMAP_GPIO_IRQ(OVERO_GPIO_PENDOWN), -+ .platform_data = &ads7846_config, -+ }, -+#endif -+#if defined(CONFIG_PANEL_LGPHILIPS_LB035Q02) || \ -+ defined(CONFIG_PANEL_LGPHILIPS_LB035Q02_MODULE) -+ { -+ .modalias = "lgphilips_lb035q02_panel-spi", -+ .bus_num = 1, -+ .chip_select = 1, -+ .max_speed_hz = 500000, -+ .mode = SPI_MODE_3, -+ }, -+#endif - }; - --static struct omap_board_config_kernel overo_config[] __initdata = { -- { OMAP_TAG_LCD, &overo_lcd_config }, --}; -+static int __init overo_spi_init(void) -+{ -+ overo_ads7846_init(); -+ spi_register_board_info(overo_spi_board_info, -+ ARRAY_SIZE(overo_spi_board_info)); -+ return 0; -+} - - static void __init overo_init_irq(void) - { -- omap_board_config = overo_config; -- omap_board_config_size = ARRAY_SIZE(overo_config); - omap2_init_common_hw(mt46h32m32lf6_sdrc_params, - mt46h32m32lf6_sdrc_params); - omap_init_irq(); -@@ -446,7 +612,7 @@ static void __init overo_init_irq(void) - } - - static struct platform_device *overo_devices[] __initdata = { -- &overo_lcd_device, -+ &overo_dss_device, - }; - - static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { -@@ -469,8 +635,9 @@ static void __init overo_init(void) - overo_flash_init(); - usb_musb_init(); - usb_ehci_init(&ehci_pdata); -- overo_ads7846_init(); -+ overo_spi_init(); - overo_init_smsc911x(); -+ overo_display_init(); - - /* Ensure SDRC pins are mux'd for self-refresh */ - omap_cfg_reg(H16_34XX_SDRC_CKE0); --- -1.6.2.4 - diff --git a/recipes/kexecboot/linux-kexecboot-2.6.32/dss2/0015-OMAP-DSS-Add-DSS2-support-for-Beagle.patch b/recipes/kexecboot/linux-kexecboot-2.6.32/dss2/0015-OMAP-DSS-Add-DSS2-support-for-Beagle.patch deleted file mode 100644 index 656ba85318..0000000000 --- a/recipes/kexecboot/linux-kexecboot-2.6.32/dss2/0015-OMAP-DSS-Add-DSS2-support-for-Beagle.patch +++ /dev/null @@ -1,186 +0,0 @@ ---- /tmp/board-omap3beagle.c 2009-12-22 10:47:35.000000000 +0100 -+++ git/arch/arm/mach-omap2/board-omap3beagle.c 2009-12-22 10:59:53.000000000 +0100 -@@ -40,6 +40,7 @@ - - #include <plat/board.h> - #include <plat/common.h> -+#include <plat/display.h> - #include <plat/gpmc.h> - #include <plat/nand.h> - #include <plat/usb.h> -@@ -149,6 +150,105 @@ - .resource = &omap3beagle_nand_resource, - }; - -+/* DSS */ -+ -+static int beagle_enable_dvi(struct omap_dss_device *dssdev) -+{ -+ if (dssdev->reset_gpio != -1) -+ gpio_set_value(dssdev->reset_gpio, 1); -+ -+ return 0; -+} -+ -+static void beagle_disable_dvi(struct omap_dss_device *dssdev) -+{ -+ if (dssdev->reset_gpio != -1) -+ gpio_set_value(dssdev->reset_gpio, 0); -+} -+ -+static struct omap_dss_device beagle_dvi_device = { -+ .type = OMAP_DISPLAY_TYPE_DPI, -+ .name = "dvi", -+ .driver_name = "generic_panel", -+ .phy.dpi.data_lines = 24, -+ .reset_gpio = 170, -+ .platform_enable = beagle_enable_dvi, -+ .platform_disable = beagle_disable_dvi, -+}; -+ -+static int beagle_panel_enable_tv(struct omap_dss_device *dssdev) -+{ -+#define ENABLE_VDAC_DEDICATED 0x03 -+#define ENABLE_VDAC_DEV_GRP 0x20 -+ -+ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, -+ ENABLE_VDAC_DEDICATED, -+ TWL4030_VDAC_DEDICATED); -+ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, -+ ENABLE_VDAC_DEV_GRP, TWL4030_VDAC_DEV_GRP); -+ -+ return 0; -+} -+ -+static void beagle_panel_disable_tv(struct omap_dss_device *dssdev) -+{ -+ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, -+ TWL4030_VDAC_DEDICATED); -+ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, -+ TWL4030_VDAC_DEV_GRP); -+} -+ -+static struct omap_dss_device beagle_tv_device = { -+ .name = "tv", -+ .driver_name = "venc", -+ .type = OMAP_DISPLAY_TYPE_VENC, -+ .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, -+ .platform_enable = beagle_panel_enable_tv, -+ .platform_disable = beagle_panel_disable_tv, -+}; -+ -+static struct omap_dss_device *beagle_dss_devices[] = { -+ &beagle_dvi_device, -+ &beagle_tv_device, -+}; -+ -+static struct omap_dss_board_info beagle_dss_data = { -+ .num_devices = ARRAY_SIZE(beagle_dss_devices), -+ .devices = beagle_dss_devices, -+ .default_device = &beagle_dvi_device, -+}; -+ -+static struct platform_device beagle_dss_device = { -+ .name = "omapdss", -+ .id = -1, -+ .dev = { -+ .platform_data = &beagle_dss_data, -+ }, -+}; -+ -+static struct regulator_consumer_supply beagle_vdac_supply = { -+ .supply = "vdda_dac", -+ .dev = &beagle_dss_device.dev, -+}; -+ -+static struct regulator_consumer_supply beagle_vdvi_supply = { -+ .supply = "vdds_dsi", -+ .dev = &beagle_dss_device.dev, -+}; -+ -+static void __init beagle_display_init(void) -+{ -+ int r; -+ -+ r = gpio_request(beagle_dvi_device.reset_gpio, "DVI reset"); -+ if (r < 0) { -+ printk(KERN_ERR "Unable to get DVI reset GPIO\n"); -+ return; -+ } -+ -+ gpio_direction_output(beagle_dvi_device.reset_gpio, 0); -+} -+ - #include "sdram-micron-mt46h32m32lf-6.h" - - static struct twl4030_hsmmc_info mmc[] = { -@@ -168,15 +268,6 @@ - {} /* Terminator */ - }; - --static struct platform_device omap3_beagle_lcd_device = { -- .name = "omap3beagle_lcd", -- .id = -1, --}; -- --static struct omap_lcd_config omap3_beagle_lcd_config __initdata = { -- .ctrl_name = "internal", --}; -- - static struct regulator_consumer_supply beagle_vmmc1_supply = { - .supply = "vmmc", - }; -@@ -232,16 +323,6 @@ - .setup = beagle_twl_gpio_setup, - }; - --static struct regulator_consumer_supply beagle_vdac_supply = { -- .supply = "vdac", -- .dev = &omap3_beagle_lcd_device.dev, --}; -- --static struct regulator_consumer_supply beagle_vdvi_supply = { -- .supply = "vdvi", -- .dev = &omap3_beagle_lcd_device.dev, --}; -- - /* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */ - static struct regulator_init_data beagle_vmmc1 = { - .constraints = { -@@ -419,14 +500,8 @@ - }, - }; - --static struct omap_board_config_kernel omap3_beagle_config[] __initdata = { -- { OMAP_TAG_LCD, &omap3_beagle_lcd_config }, --}; -- - static void __init omap3_beagle_init_irq(void) - { -- omap_board_config = omap3_beagle_config; -- omap_board_config_size = ARRAY_SIZE(omap3_beagle_config); - omap2_init_common_hw(mt46h32m32lf6_sdrc_params, - mt46h32m32lf6_sdrc_params); - omap_init_irq(); -@@ -437,9 +512,9 @@ - } - - static struct platform_device *omap3_beagle_devices[] __initdata = { -- &omap3_beagle_lcd_device, - &leds_gpio, - &keys_gpio, -+ &beagle_dss_device, - }; - - static void __init omap3beagle_flash_init(void) -@@ -522,8 +597,9 @@ - /* Ensure SDRC pins are mux'd for self-refresh */ - omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT); - omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT); --} - -+ beagle_display_init(); -+} - static void __init omap3_beagle_map_io(void) - { - omap2_set_globals_343x(); diff --git a/recipes/kexecboot/linux-kexecboot-2.6.32/dss2/0016-video-add-timings-for-hd720.patch b/recipes/kexecboot/linux-kexecboot-2.6.32/dss2/0016-video-add-timings-for-hd720.patch deleted file mode 100644 index e5f7a4e072..0000000000 --- a/recipes/kexecboot/linux-kexecboot-2.6.32/dss2/0016-video-add-timings-for-hd720.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 77c7ed5e802e9bb244cd00fa60c95de1e28c29be Mon Sep 17 00:00:00 2001 -From: Steve Sakoman <steve@sakoman.com> -Date: Sat, 19 Dec 2009 06:52:43 -0800 -Subject: [PATCH 16/16] video: add timings for hd720 - ---- - drivers/video/modedb.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c -index 34e4e79..9d9114d 100644 ---- a/drivers/video/modedb.c -+++ b/drivers/video/modedb.c -@@ -100,6 +100,10 @@ static const struct fb_videomode modedb[] = { - NULL, 70, 1024, 768, 13333, 144, 24, 29, 3, 136, 6, - 0, FB_VMODE_NONINTERLACED - }, { -+ /* 1280x720 @ 60 Hz, 45 kHz hsync, CEA 681-E Format 4 */ -+ "hd720", 60, 1280, 720, 13468, 220, 110, 20, 5, 40, 5, -+ 0, FB_VMODE_NONINTERLACED -+ }, { - /* 1280x1024 @ 87 Hz interlaced, 51 kHz hsync */ - NULL, 87, 1280, 1024, 12500, 56, 16, 128, 1, 216, 12, - 0, FB_VMODE_INTERLACED --- -1.6.2.4 - diff --git a/recipes/kexecboot/linux-kexecboot-2.6.32/dss2/beagle-dss2-support.diff b/recipes/kexecboot/linux-kexecboot-2.6.32/dss2/beagle-dss2-support.diff deleted file mode 100755 index 15d7971fa8..0000000000 --- a/recipes/kexecboot/linux-kexecboot-2.6.32/dss2/beagle-dss2-support.diff +++ /dev/null @@ -1,308 +0,0 @@ ---- a/arch/arm/mach-omap2/board-omap3beagle.c -+++ b/arch/arm/mach-omap2/board-omap3beagle.c -@@ -30,6 +30,7 @@ - - #include <linux/regulator/machine.h> - #include <linux/i2c/twl4030.h> -+#include <linux/omapfb.h> - - #include <mach/hardware.h> - #include <asm/mach-types.h> -@@ -44,6 +45,7 @@ - #include <plat/mux.h> - #include <plat/usb.h> - #include <plat/timer-gp.h> -+#include <plat/display.h> - - #include "mmc-twl4030.h" - -@@ -115,15 +117,6 @@ - .gpio_wp = 29, - }, - {} /* Terminator */ --}; -- --static struct platform_device omap3_beagle_lcd_device = { -- .name = "omap3beagle_lcd", -- .id = -1, --}; -- --static struct omap_lcd_config omap3_beagle_lcd_config __initdata = { -- .ctrl_name = "internal", - }; - - static struct regulator_consumer_supply beagle_vmmc1_supply = { -@@ -179,16 +172,6 @@ - .pulldowns = BIT(2) | BIT(6) | BIT(7) | BIT(8) | BIT(13) - | BIT(15) | BIT(16) | BIT(17), - .setup = beagle_twl_gpio_setup, --}; -- --static struct regulator_consumer_supply beagle_vdac_supply = { -- .supply = "vdac", -- .dev = &omap3_beagle_lcd_device.dev, --}; -- --static struct regulator_consumer_supply beagle_vdvi_supply = { -- .supply = "vdvi", -- .dev = &omap3_beagle_lcd_device.dev, - }; - - /* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */ -@@ -221,35 +204,6 @@ - .consumer_supplies = &beagle_vsim_supply, - }; - --/* VDAC for DSS driving S-Video (8 mA unloaded, max 65 mA) */ --static struct regulator_init_data beagle_vdac = { -- .constraints = { -- .min_uV = 1800000, -- .max_uV = 1800000, -- .valid_modes_mask = REGULATOR_MODE_NORMAL -- | REGULATOR_MODE_STANDBY, -- .valid_ops_mask = REGULATOR_CHANGE_MODE -- | REGULATOR_CHANGE_STATUS, -- }, -- .num_consumer_supplies = 1, -- .consumer_supplies = &beagle_vdac_supply, --}; -- --/* VPLL2 for digital video outputs */ --static struct regulator_init_data beagle_vpll2 = { -- .constraints = { -- .name = "VDVI", -- .min_uV = 1800000, -- .max_uV = 1800000, -- .valid_modes_mask = REGULATOR_MODE_NORMAL -- | REGULATOR_MODE_STANDBY, -- .valid_ops_mask = REGULATOR_CHANGE_MODE -- | REGULATOR_CHANGE_STATUS, -- }, -- .num_consumer_supplies = 1, -- .consumer_supplies = &beagle_vdvi_supply, --}; -- - static struct twl4030_usb_data beagle_usb_data = { - .usb_mode = T2_USB_MODE_ULPI, - }; -@@ -262,39 +216,6 @@ - .audio_mclk = 26000000, - .audio = &beagle_audio_data, - }; -- --static struct twl4030_platform_data beagle_twldata = { -- .irq_base = TWL4030_IRQ_BASE, -- .irq_end = TWL4030_IRQ_END, -- -- /* platform_data for children goes here */ -- .usb = &beagle_usb_data, -- .gpio = &beagle_gpio_data, -- .codec = &beagle_codec_data, -- .vmmc1 = &beagle_vmmc1, -- .vsim = &beagle_vsim, -- .vdac = &beagle_vdac, -- .vpll2 = &beagle_vpll2, --}; -- --static struct i2c_board_info __initdata beagle_i2c_boardinfo[] = { -- { -- I2C_BOARD_INFO("twl4030", 0x48), -- .flags = I2C_CLIENT_WAKE, -- .irq = INT_34XX_SYS_NIRQ, -- .platform_data = &beagle_twldata, -- }, --}; -- --static int __init omap3_beagle_i2c_init(void) --{ -- omap_register_i2c_bus(1, 2600, beagle_i2c_boardinfo, -- ARRAY_SIZE(beagle_i2c_boardinfo)); -- /* Bus 3 is attached to the DVI port where devices like the pico DLP -- * projector don't work reliably with 400kHz */ -- omap_register_i2c_bus(3, 100, NULL, 0); -- return 0; --} - - static struct gpio_led gpio_leds[] = { - { -@@ -349,14 +270,156 @@ - }, - }; - --static struct omap_board_config_kernel omap3_beagle_config[] __initdata = { -- { OMAP_TAG_LCD, &omap3_beagle_lcd_config }, --}; -+/* DSS */ -+ -+static int beagle_enable_dvi(struct omap_dss_device *dssdev) -+{ -+ if (dssdev->reset_gpio != -1) -+ gpio_set_value(dssdev->reset_gpio, 1); -+ -+ return 0; -+} -+ -+static void beagle_disable_dvi(struct omap_dss_device *dssdev) -+{ -+ if (dssdev->reset_gpio != -1) -+ gpio_set_value(dssdev->reset_gpio, 0); -+} -+ -+static struct omap_dss_device beagle_dvi_device = { -+ .type = OMAP_DISPLAY_TYPE_DPI, -+ .name = "dvi", -+ .driver_name = "generic_panel", -+ .phy.dpi.data_lines = 24, -+ .reset_gpio = 170, -+ .platform_enable = beagle_enable_dvi, -+ .platform_disable = beagle_disable_dvi, -+}; -+ -+static int beagle_panel_enable_tv(struct omap_dss_device *dssdev) -+{ -+ return 0; -+} -+ -+static void beagle_panel_disable_tv(struct omap_dss_device *dssdev) -+{ -+} -+ -+static struct omap_dss_device beagle_tv_device = { -+ .name = "tv", -+ .driver_name = "venc", -+ .type = OMAP_DISPLAY_TYPE_VENC, -+ .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, -+ .platform_enable = beagle_panel_enable_tv, -+ .platform_disable = beagle_panel_disable_tv, -+}; -+ -+static struct omap_dss_device *beagle_dss_devices[] = { -+ &beagle_dvi_device, -+ &beagle_tv_device, -+}; -+ -+static struct omap_dss_board_info beagle_dss_data = { -+ .num_devices = ARRAY_SIZE(beagle_dss_devices), -+ .devices = beagle_dss_devices, -+ .default_device = &beagle_dvi_device, -+}; -+ -+static struct platform_device beagle_dss_device = { -+ .name = "omapdss", -+ .id = -1, -+ .dev = { -+ .platform_data = &beagle_dss_data, -+ }, -+}; -+ -+static struct regulator_consumer_supply beagle_vdda_dac_supply = { -+ .supply = "vdda_dac", -+ .dev = &beagle_dss_device.dev, -+}; -+ -+static struct regulator_consumer_supply beagle_vdds_dsi_supply = { -+ .supply = "vdds_dsi", -+ .dev = &beagle_dss_device.dev, -+}; -+ -+static void __init beagle_display_init(void) -+{ -+ int r; -+ -+ r = gpio_request(beagle_dvi_device.reset_gpio, "DVI reset"); -+ if (r < 0) { -+ printk(KERN_ERR "Unable to get DVI reset GPIO\n"); -+ return; -+ } -+ -+ gpio_direction_output(beagle_dvi_device.reset_gpio, 0); -+} -+ -+/* VDAC for DSS driving S-Video (8 mA unloaded, max 65 mA) */ -+static struct regulator_init_data beagle_vdac = { -+ .constraints = { -+ .min_uV = 1800000, -+ .max_uV = 1800000, -+ .apply_uV = true, -+ .valid_modes_mask = REGULATOR_MODE_NORMAL -+ | REGULATOR_MODE_STANDBY, -+ .valid_ops_mask = REGULATOR_CHANGE_MODE -+ | REGULATOR_CHANGE_STATUS, -+ }, -+ .num_consumer_supplies = 1, -+ .consumer_supplies = &beagle_vdda_dac_supply, -+}; -+ -+/* VPLL2 for digital video outputs */ -+static struct regulator_init_data beagle_vpll2 = { -+ .constraints = { -+ .name = "VDVI", -+ .min_uV = 1800000, -+ .max_uV = 1800000, .valid_modes_mask = REGULATOR_MODE_NORMAL -+ | REGULATOR_MODE_STANDBY, -+ .valid_ops_mask = REGULATOR_CHANGE_MODE -+ | REGULATOR_CHANGE_STATUS, -+ }, -+ .num_consumer_supplies = 1, -+ .consumer_supplies = &beagle_vdds_dsi_supply, -+}; -+ -+static struct twl4030_platform_data beagle_twldata = { -+ .irq_base = TWL4030_IRQ_BASE, -+ .irq_end = TWL4030_IRQ_END, -+ -+ /* platform_data for children goes here */ -+ .usb = &beagle_usb_data, -+ .gpio = &beagle_gpio_data, -+ .vmmc1 = &beagle_vmmc1, -+ .vsim = &beagle_vsim, -+ .vdac = &beagle_vdac, -+ .vpll2 = &beagle_vpll2, -+}; -+ -+static struct i2c_board_info __initdata beagle_i2c1_boardinfo[] = { -+ { -+ I2C_BOARD_INFO("twl4030", 0x48), -+ .flags = I2C_CLIENT_WAKE, -+ .irq = INT_34XX_SYS_NIRQ, -+ .platform_data = &beagle_twldata, -+ }, -+}; -+ -+static int __init omap3_beagle_i2c_init(void) -+{ -+ omap_register_i2c_bus(1, 2600, beagle_i2c1_boardinfo, -+ ARRAY_SIZE(beagle_i2c1_boardinfo)); -+ /* Bus 3 is attached to the DVI port where devices like the pico DLP -+ * projector don't work reliably with 400kHz */ -+ omap_register_i2c_bus(3, 100, NULL, 0); -+ return 0; -+} -+ - - static void __init omap3_beagle_init_irq(void) - { -- omap_board_config = omap3_beagle_config; -- omap_board_config_size = ARRAY_SIZE(omap3_beagle_config); - omap2_init_common_hw(mt46h32m32lf6_sdrc_params, - mt46h32m32lf6_sdrc_params); - omap_init_irq(); -@@ -367,7 +430,7 @@ - } - - static struct platform_device *omap3_beagle_devices[] __initdata = { -- &omap3_beagle_lcd_device, -+ &beagle_dss_device, - &leds_gpio, - &keys_gpio, - }; -@@ -437,6 +500,8 @@ - usb_musb_init(); - usb_ehci_init(&ehci_pdata); - omap3beagle_flash_init(); -+ -+ beagle_display_init(); - - /* Ensure SDRC pins are mux'd for self-refresh */ - omap_cfg_reg(H16_34XX_SDRC_CKE0); - |