From f19824e700617d83e6409f909f4dd2f989b84e4d Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Mon, 15 Feb 2010 14:38:00 +0100 Subject: [PATCH 28/48] OMAP: DSS2: (Re)add support for Samsung lte430wq-f0c panel --- drivers/video/omap2/displays/Kconfig | 6 + drivers/video/omap2/displays/Makefile | 1 + .../omap2/displays/panel-samsung-lte430wq-f0c.c | 113 ++++++++++++++++++++ 3 files changed, 120 insertions(+), 0 deletions(-) create mode 100644 drivers/video/omap2/displays/panel-samsung-lte430wq-f0c.c diff --git a/drivers/video/omap2/displays/Kconfig b/drivers/video/omap2/displays/Kconfig index 4ce47dd..4229a28 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_SAMSUNG_LTE430WQ_F0C + tristate "Samsung LTE430WQ-F0C LCD Panel" + depends on OMAP2_DSS + help + LCD Panel used on Overo Palo43 + config PANEL_SHARP_LS037V7DW01 tristate "Sharp LS037V7DW01 LCD Panel" depends on OMAP2_DSS diff --git a/drivers/video/omap2/displays/Makefile b/drivers/video/omap2/displays/Makefile index 8f3d0ad..9317445 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_SAMSUNG_LTE430WQ_F0C) += panel-samsung-lte430wq-f0c.o obj-$(CONFIG_PANEL_SHARP_LS037V7DW01) += panel-sharp-ls037v7dw01.o obj-$(CONFIG_PANEL_SHARP_LQ043T1DG01) += panel-sharp-lq043t1dg01.o diff --git a/drivers/video/omap2/displays/panel-samsung-lte430wq-f0c.c b/drivers/video/omap2/displays/panel-samsung-lte430wq-f0c.c new file mode 100644 index 0000000..3f0477e --- /dev/null +++ b/drivers/video/omap2/displays/panel-samsung-lte430wq-f0c.c @@ -0,0 +1,113 @@ +/* + * LCD panel driver for Samsung LTE430WQ-F0C + * + * Author: Steve Sakoman + * + * 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 . + */ + +#include +#include + +#include + +static struct omap_video_timings samsung_lte_timings = { + .x_res = 480, + .y_res = 272, + + .pixel_clock = 9200, + + .hsw = 41, + .hfp = 8, + .hbp = 45-41, + + .vsw = 10, + .vfp = 4, + .vbp = 12-10, +}; + +static int samsung_lte_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 = samsung_lte_timings; + + return 0; +} + +static void samsung_lte_panel_remove(struct omap_dss_device *dssdev) +{ +} + +static int samsung_lte_panel_enable(struct omap_dss_device *dssdev) +{ + int r = 0; + + /* wait couple of vsyncs until enabling the LCD */ + msleep(50); + + if (dssdev->platform_enable) + r = dssdev->platform_enable(dssdev); + + return r; +} + +static void samsung_lte_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 samsung_lte_panel_suspend(struct omap_dss_device *dssdev) +{ + samsung_lte_panel_disable(dssdev); + return 0; +} + +static int samsung_lte_panel_resume(struct omap_dss_device *dssdev) +{ + return samsung_lte_panel_enable(dssdev); +} + +static struct omap_dss_driver samsung_lte_driver = { + .probe = samsung_lte_panel_probe, + .remove = samsung_lte_panel_remove, + + .enable = samsung_lte_panel_enable, + .disable = samsung_lte_panel_disable, + .suspend = samsung_lte_panel_suspend, + .resume = samsung_lte_panel_resume, + + .driver = { + .name = "samsung_lte_panel", + .owner = THIS_MODULE, + }, +}; + +static int __init samsung_lte_panel_drv_init(void) +{ + return omap_dss_register_driver(&samsung_lte_driver); +} + +static void __exit samsung_lte_panel_drv_exit(void) +{ + omap_dss_unregister_driver(&samsung_lte_driver); +} + +module_init(samsung_lte_panel_drv_init); +module_exit(samsung_lte_panel_drv_exit); +MODULE_LICENSE("GPL"); -- 1.6.6.1