Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 /*
0003  * LCD panel support for the TI OMAP OSK board
0004  *
0005  * Copyright (C) 2004 Nokia Corporation
0006  * Author: Imre Deak <imre.deak@nokia.com>
0007  * Adapted for OSK by <dirk.behme@de.bosch.com>
0008  */
0009 
0010 #include <linux/module.h>
0011 #include <linux/platform_device.h>
0012 #include <linux/gpio.h>
0013 
0014 #include <linux/soc/ti/omap1-io.h>
0015 #include <linux/soc/ti/omap1-mux.h>
0016 
0017 #include "omapfb.h"
0018 
0019 static int osk_panel_enable(struct lcd_panel *panel)
0020 {
0021     /* configure PWL pin */
0022     omap_cfg_reg(PWL);
0023 
0024     /* Enable PWL unit */
0025     omap_writeb(0x01, OMAP_PWL_CLK_ENABLE);
0026 
0027     /* Set PWL level */
0028     omap_writeb(0xFF, OMAP_PWL_ENABLE);
0029 
0030     /* set GPIO2 high (lcd power enabled) */
0031     gpio_set_value(2, 1);
0032 
0033     return 0;
0034 }
0035 
0036 static void osk_panel_disable(struct lcd_panel *panel)
0037 {
0038     /* Set PWL level to zero */
0039     omap_writeb(0x00, OMAP_PWL_ENABLE);
0040 
0041     /* Disable PWL unit */
0042     omap_writeb(0x00, OMAP_PWL_CLK_ENABLE);
0043 
0044     /* set GPIO2 low */
0045     gpio_set_value(2, 0);
0046 }
0047 
0048 static struct lcd_panel osk_panel = {
0049     .name       = "osk",
0050     .config     = OMAP_LCDC_PANEL_TFT,
0051 
0052     .bpp        = 16,
0053     .data_lines = 16,
0054     .x_res      = 240,
0055     .y_res      = 320,
0056     .pixel_clock    = 12500,
0057     .hsw        = 40,
0058     .hfp        = 40,
0059     .hbp        = 72,
0060     .vsw        = 1,
0061     .vfp        = 1,
0062     .vbp        = 0,
0063     .pcd        = 12,
0064 
0065     .enable     = osk_panel_enable,
0066     .disable    = osk_panel_disable,
0067 };
0068 
0069 static int osk_panel_probe(struct platform_device *pdev)
0070 {
0071     omapfb_register_panel(&osk_panel);
0072     return 0;
0073 }
0074 
0075 static struct platform_driver osk_panel_driver = {
0076     .probe      = osk_panel_probe,
0077     .driver     = {
0078         .name   = "lcd_osk",
0079     },
0080 };
0081 
0082 module_platform_driver(osk_panel_driver);
0083 
0084 MODULE_AUTHOR("Imre Deak");
0085 MODULE_DESCRIPTION("LCD panel support for the TI OMAP OSK board");
0086 MODULE_LICENSE("GPL");