linux/drivers/video/omap/lcd_omap3beagle.c
<<
>>
Prefs
   1/*
   2 * LCD panel support for the TI OMAP3 Beagle board
   3 *
   4 * Author: Koen Kooi <koen@openembedded.org>
   5 *
   6 * Derived from drivers/video/omap/lcd-omap3evm.c
   7 *
   8 * This program is free software; you can redistribute it and/or modify it
   9 * under the terms of the GNU General Public License as published by the
  10 * Free Software Foundation; either version 2 of the License, or (at your
  11 * option) any later version.
  12 *
  13 * This program is distributed in the hope that it will be useful, but
  14 * WITHOUT ANY WARRANTY; without even the implied warranty of
  15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16 * General Public License for more details.
  17 *
  18 * You should have received a copy of the GNU General Public License along
  19 * with this program; if not, write to the Free Software Foundation, Inc.,
  20 * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  21 */
  22
  23#include <linux/module.h>
  24#include <linux/platform_device.h>
  25#include <linux/gpio.h>
  26#include <linux/i2c/twl4030.h>
  27
  28#include <mach/mux.h>
  29#include <mach/omapfb.h>
  30#include <asm/mach-types.h>
  31
  32#define LCD_PANEL_ENABLE_GPIO       170
  33
  34static int omap3beagle_panel_init(struct lcd_panel *panel,
  35                                struct omapfb_device *fbdev)
  36{
  37        gpio_request(LCD_PANEL_ENABLE_GPIO, "LCD enable");
  38        return 0;
  39}
  40
  41static void omap3beagle_panel_cleanup(struct lcd_panel *panel)
  42{
  43        gpio_free(LCD_PANEL_ENABLE_GPIO);
  44}
  45
  46static int omap3beagle_panel_enable(struct lcd_panel *panel)
  47{
  48        gpio_set_value(LCD_PANEL_ENABLE_GPIO, 1);
  49        return 0;
  50}
  51
  52static void omap3beagle_panel_disable(struct lcd_panel *panel)
  53{
  54        gpio_set_value(LCD_PANEL_ENABLE_GPIO, 0);
  55}
  56
  57static unsigned long omap3beagle_panel_get_caps(struct lcd_panel *panel)
  58{
  59        return 0;
  60}
  61
  62struct lcd_panel omap3beagle_panel = {
  63        .name           = "omap3beagle",
  64        .config         = OMAP_LCDC_PANEL_TFT,
  65
  66        .bpp            = 16,
  67        .data_lines     = 24,
  68        .x_res          = 1024,
  69        .y_res          = 768,
  70        .hsw            = 3,            /* hsync_len (4) - 1 */
  71        .hfp            = 3,            /* right_margin (4) - 1 */
  72        .hbp            = 39,           /* left_margin (40) - 1 */
  73        .vsw            = 1,            /* vsync_len (2) - 1 */
  74        .vfp            = 2,            /* lower_margin */
  75        .vbp            = 7,            /* upper_margin (8) - 1 */
  76
  77        .pixel_clock    = 64000,
  78
  79        .init           = omap3beagle_panel_init,
  80        .cleanup        = omap3beagle_panel_cleanup,
  81        .enable         = omap3beagle_panel_enable,
  82        .disable        = omap3beagle_panel_disable,
  83        .get_caps       = omap3beagle_panel_get_caps,
  84};
  85
  86static int omap3beagle_panel_probe(struct platform_device *pdev)
  87{
  88        omapfb_register_panel(&omap3beagle_panel);
  89        return 0;
  90}
  91
  92static int omap3beagle_panel_remove(struct platform_device *pdev)
  93{
  94        return 0;
  95}
  96
  97static int omap3beagle_panel_suspend(struct platform_device *pdev,
  98                                   pm_message_t mesg)
  99{
 100        return 0;
 101}
 102
 103static int omap3beagle_panel_resume(struct platform_device *pdev)
 104{
 105        return 0;
 106}
 107
 108struct platform_driver omap3beagle_panel_driver = {
 109        .probe          = omap3beagle_panel_probe,
 110        .remove         = omap3beagle_panel_remove,
 111        .suspend        = omap3beagle_panel_suspend,
 112        .resume         = omap3beagle_panel_resume,
 113        .driver         = {
 114                .name   = "omap3beagle_lcd",
 115                .owner  = THIS_MODULE,
 116        },
 117};
 118
 119static int __init omap3beagle_panel_drv_init(void)
 120{
 121        return platform_driver_register(&omap3beagle_panel_driver);
 122}
 123
 124static void __exit omap3beagle_panel_drv_exit(void)
 125{
 126        platform_driver_unregister(&omap3beagle_panel_driver);
 127}
 128
 129module_init(omap3beagle_panel_drv_init);
 130module_exit(omap3beagle_panel_drv_exit);
 131