diff options
Diffstat (limited to 'recipes/linux/linux-omap-2.6.31/dss2/0018-OMAP-SDP-Enable-DSS2-for-OMAP3-SDP-board.patch')
-rw-r--r-- | recipes/linux/linux-omap-2.6.31/dss2/0018-OMAP-SDP-Enable-DSS2-for-OMAP3-SDP-board.patch | 327 |
1 files changed, 327 insertions, 0 deletions
diff --git a/recipes/linux/linux-omap-2.6.31/dss2/0018-OMAP-SDP-Enable-DSS2-for-OMAP3-SDP-board.patch b/recipes/linux/linux-omap-2.6.31/dss2/0018-OMAP-SDP-Enable-DSS2-for-OMAP3-SDP-board.patch new file mode 100644 index 0000000000..98cd5adb79 --- /dev/null +++ b/recipes/linux/linux-omap-2.6.31/dss2/0018-OMAP-SDP-Enable-DSS2-for-OMAP3-SDP-board.patch @@ -0,0 +1,327 @@ +From 8319bb7f267e0434e2d26f30b6f50ff2b0701bd1 Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen <tomi.valkeinen@nokia.com> +Date: Wed, 5 Aug 2009 16:07:26 +0300 +Subject: [PATCH 18/18] OMAP: SDP: Enable DSS2 for OMAP3 SDP board + +Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com> +Acked-by: Tony Lindgren <tony@atomide.com> +--- + arch/arm/configs/omap_3430sdp_defconfig | 61 +++++++++++- + arch/arm/mach-omap2/board-3430sdp.c | 172 +++++++++++++++++++++++++++--- + 2 files changed, 214 insertions(+), 19 deletions(-) + +diff --git a/arch/arm/configs/omap_3430sdp_defconfig b/arch/arm/configs/omap_3430sdp_defconfig +index 8fb918d..de063f9 100644 +--- a/arch/arm/configs/omap_3430sdp_defconfig ++++ b/arch/arm/configs/omap_3430sdp_defconfig +@@ -1314,7 +1314,56 @@ CONFIG_DVB_ISL6421=m + # + # CONFIG_VGASTATE is not set + # CONFIG_VIDEO_OUTPUT_CONTROL is not set +-# CONFIG_FB is not set ++CONFIG_FB=y ++# CONFIG_FIRMWARE_EDID is not set ++# CONFIG_FB_DDC is not set ++# CONFIG_FB_BOOT_VESA_SUPPORT is not set ++CONFIG_FB_CFB_FILLRECT=y ++CONFIG_FB_CFB_COPYAREA=y ++CONFIG_FB_CFB_IMAGEBLIT=y ++# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set ++# CONFIG_FB_SYS_FILLRECT is not set ++# CONFIG_FB_SYS_COPYAREA is not set ++# CONFIG_FB_SYS_IMAGEBLIT is not set ++# CONFIG_FB_FOREIGN_ENDIAN is not set ++# CONFIG_FB_SYS_FOPS is not set ++# CONFIG_FB_SVGALIB is not set ++# CONFIG_FB_MACMODES is not set ++# CONFIG_FB_BACKLIGHT is not set ++# CONFIG_FB_MODE_HELPERS is not set ++# CONFIG_FB_TILEBLITTING is not set ++ ++# ++# Frame buffer hardware drivers ++# ++# CONFIG_FB_S1D13XXX is not set ++# CONFIG_FB_VIRTUAL is not set ++# CONFIG_FB_METRONOME is not set ++# CONFIG_FB_MB862XX is not set ++# CONFIG_FB_BROADSHEET is not set ++# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set ++CONFIG_OMAP2_VRAM=y ++CONFIG_OMAP2_VRFB=y ++CONFIG_OMAP2_DSS=y ++CONFIG_OMAP2_VRAM_SIZE=0 ++CONFIG_OMAP2_DSS_DEBUG_SUPPORT=y ++# CONFIG_OMAP2_DSS_RFBI is not set ++CONFIG_OMAP2_DSS_VENC=y ++# CONFIG_OMAP2_DSS_SDI is not set ++# CONFIG_OMAP2_DSS_DSI is not set ++# CONFIG_OMAP2_DSS_FAKE_VSYNC is not set ++CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0 ++CONFIG_FB_OMAP2=y ++CONFIG_FB_OMAP2_DEBUG_SUPPORT=y ++# CONFIG_FB_OMAP2_FORCE_AUTO_UPDATE is not set ++CONFIG_FB_OMAP2_NUM_FBS=3 ++ ++# ++# OMAP2/3 Display Device Drivers ++# ++CONFIG_PANEL_GENERIC=y ++# CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C is not set ++CONFIG_PANEL_SHARP_LS037V7DW01=y + # CONFIG_BACKLIGHT_LCD_SUPPORT is not set + + # +@@ -1331,6 +1380,16 @@ CONFIG_DISPLAY_SUPPORT=y + # + # CONFIG_VGA_CONSOLE is not set + CONFIG_DUMMY_CONSOLE=y ++CONFIG_FRAMEBUFFER_CONSOLE=y ++# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set ++# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set ++# 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_SOUND=y + CONFIG_SOUND_OSS_CORE=y + CONFIG_SND=y +diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c +index ac262cd..a1ebc3f 100644 +--- a/arch/arm/mach-omap2/board-3430sdp.c ++++ b/arch/arm/mach-omap2/board-3430sdp.c +@@ -36,6 +36,7 @@ + #include <mach/common.h> + #include <mach/dma.h> + #include <mach/gpmc.h> ++#include <mach/display.h> + + #include <mach/control.h> + #include <mach/keypad.h> +@@ -148,23 +149,149 @@ static struct spi_board_info sdp3430_spi_board_info[] __initdata = { + }, + }; + +-static struct platform_device sdp3430_lcd_device = { +- .name = "sdp2430_lcd", +- .id = -1, ++ ++#define SDP3430_LCD_PANEL_BACKLIGHT_GPIO 8 ++#define SDP3430_LCD_PANEL_ENABLE_GPIO 5 ++ ++static unsigned backlight_gpio; ++static unsigned enable_gpio; ++static int lcd_enabled; ++static int dvi_enabled; ++ ++static void __init sdp3430_display_init(void) ++{ ++ int r; ++ ++ enable_gpio = SDP3430_LCD_PANEL_ENABLE_GPIO; ++ backlight_gpio = SDP3430_LCD_PANEL_BACKLIGHT_GPIO; ++ ++ r = gpio_request(enable_gpio, "LCD reset"); ++ if (r) { ++ printk(KERN_ERR "failed to get LCD reset GPIO\n"); ++ goto err0; ++ } ++ ++ r = gpio_request(backlight_gpio, "LCD Backlight"); ++ if (r) { ++ printk(KERN_ERR "failed to get LCD backlight GPIO\n"); ++ goto err1; ++ } ++ ++ gpio_direction_output(enable_gpio, 0); ++ gpio_direction_output(backlight_gpio, 0); ++ ++ return; ++err1: ++ gpio_free(enable_gpio); ++err0: ++ return; ++} ++ ++static int sdp3430_panel_enable_lcd(struct omap_dss_device *dssdev) ++{ ++ if (dvi_enabled) { ++ printk(KERN_ERR "cannot enable LCD, DVI is enabled\n"); ++ return -EINVAL; ++ } ++ ++ gpio_direction_output(enable_gpio, 1); ++ gpio_direction_output(backlight_gpio, 1); ++ ++ lcd_enabled = 1; ++ ++ return 0; ++} ++ ++static void sdp3430_panel_disable_lcd(struct omap_dss_device *dssdev) ++{ ++ lcd_enabled = 0; ++ ++ gpio_direction_output(enable_gpio, 0); ++ gpio_direction_output(backlight_gpio, 0); ++} ++ ++static int sdp3430_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 sdp3430_panel_disable_dvi(struct omap_dss_device *dssdev) ++{ ++ dvi_enabled = 0; ++} ++ ++static int sdp3430_panel_enable_tv(struct omap_dss_device *dssdev) ++{ ++ return 0; ++} ++ ++static void sdp3430_panel_disable_tv(struct omap_dss_device *dssdev) ++{ ++} ++ ++ ++static struct omap_dss_device sdp3430_lcd_device = { ++ .name = "lcd", ++ .driver_name = "sharp_ls_panel", ++ .type = OMAP_DISPLAY_TYPE_DPI, ++ .phy.dpi.data_lines = 16, ++ .platform_enable = sdp3430_panel_enable_lcd, ++ .platform_disable = sdp3430_panel_disable_lcd, + }; + +-static struct regulator_consumer_supply sdp3430_vdac_supply = { +- .supply = "vdac", +- .dev = &sdp3430_lcd_device.dev, ++static struct omap_dss_device sdp3430_dvi_device = { ++ .name = "dvi", ++ .driver_name = "generic_panel", ++ .type = OMAP_DISPLAY_TYPE_DPI, ++ .phy.dpi.data_lines = 24, ++ .platform_enable = sdp3430_panel_enable_dvi, ++ .platform_disable = sdp3430_panel_disable_dvi, + }; + +-static struct regulator_consumer_supply sdp3430_vdvi_supply = { +- .supply = "vdvi", +- .dev = &sdp3430_lcd_device.dev, ++static struct omap_dss_device sdp3430_tv_device = { ++ .name = "tv", ++ .driver_name = "venc", ++ .type = OMAP_DISPLAY_TYPE_VENC, ++ .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, ++ .platform_enable = sdp3430_panel_enable_tv, ++ .platform_disable = sdp3430_panel_disable_tv, + }; + +-static struct platform_device *sdp3430_devices[] __initdata = { ++ ++static struct omap_dss_device *sdp3430_dss_devices[] = { + &sdp3430_lcd_device, ++ &sdp3430_dvi_device, ++ &sdp3430_tv_device, ++}; ++ ++static struct omap_dss_board_info sdp3430_dss_data = { ++ .num_devices = ARRAY_SIZE(sdp3430_dss_devices), ++ .devices = sdp3430_dss_devices, ++ .default_device = &sdp3430_lcd_device, ++}; ++ ++static struct platform_device sdp3430_dss_device = { ++ .name = "omapdss", ++ .id = -1, ++ .dev = { ++ .platform_data = &sdp3430_dss_data, ++ }, ++}; ++ ++static struct regulator_consumer_supply sdp3430_vdda_dac_supply = { ++ .supply = "vdda_dac", ++ .dev = &sdp3430_dss_device.dev, ++}; ++ ++static struct platform_device *sdp3430_devices[] __initdata = { ++ &sdp3430_dss_device, + }; + + static void __init omap_3430sdp_init_irq(void) +@@ -178,13 +305,8 @@ static struct omap_uart_config sdp3430_uart_config __initdata = { + .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)), + }; + +-static struct omap_lcd_config sdp3430_lcd_config __initdata = { +- .ctrl_name = "internal", +-}; +- + static struct omap_board_config_kernel sdp3430_config[] __initdata = { + { OMAP_TAG_UART, &sdp3430_uart_config }, +- { OMAP_TAG_LCD, &sdp3430_lcd_config }, + }; + + static int sdp3430_batt_table[] = { +@@ -391,22 +513,34 @@ static struct regulator_init_data sdp3430_vdac = { + | REGULATOR_CHANGE_STATUS, + }, + .num_consumer_supplies = 1, +- .consumer_supplies = &sdp3430_vdac_supply, ++ .consumer_supplies = &sdp3430_vdda_dac_supply, + }; + + /* VPLL2 for digital video outputs */ ++static struct regulator_consumer_supply sdp3430_vpll2_supplies[] = { ++ { ++ .supply = "vdvi", ++ .dev = &sdp3430_lcd_device.dev, ++ }, ++ { ++ .supply = "vdds_dsi", ++ .dev = &sdp3430_dss_device.dev, ++ } ++}; ++ + static struct regulator_init_data sdp3430_vpll2 = { + .constraints = { + .name = "VDVI", + .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 = &sdp3430_vdvi_supply, ++ .num_consumer_supplies = ARRAY_SIZE(sdp3430_vpll2_supplies), ++ .consumer_supplies = sdp3430_vpll2_supplies, + }; + + static struct twl4030_platform_data sdp3430_twldata = { +@@ -495,6 +629,8 @@ static void __init omap_3430sdp_init(void) + omap_serial_init(); + usb_musb_init(); + board_smc91x_init(); ++ ++ sdp3430_display_init(); + } + + static void __init omap_3430sdp_map_io(void) +-- +1.6.2.4 + |