Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v4.7-rc1 131 lines 2.9 kB view raw
1/* 2 * LCD panel support for the TI OMAP OSK board 3 * 4 * Copyright (C) 2004 Nokia Corporation 5 * Author: Imre Deak <imre.deak@nokia.com> 6 * Adapted for OSK by <dirk.behme@de.bosch.com> 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 27#include <mach/hardware.h> 28#include <mach/mux.h> 29 30#include "omapfb.h" 31 32static int osk_panel_init(struct lcd_panel *panel, struct omapfb_device *fbdev) 33{ 34 /* gpio2 was allocated in board init */ 35 return 0; 36} 37 38static void osk_panel_cleanup(struct lcd_panel *panel) 39{ 40} 41 42static int osk_panel_enable(struct lcd_panel *panel) 43{ 44 /* configure PWL pin */ 45 omap_cfg_reg(PWL); 46 47 /* Enable PWL unit */ 48 omap_writeb(0x01, OMAP_PWL_CLK_ENABLE); 49 50 /* Set PWL level */ 51 omap_writeb(0xFF, OMAP_PWL_ENABLE); 52 53 /* set GPIO2 high (lcd power enabled) */ 54 gpio_set_value(2, 1); 55 56 return 0; 57} 58 59static void osk_panel_disable(struct lcd_panel *panel) 60{ 61 /* Set PWL level to zero */ 62 omap_writeb(0x00, OMAP_PWL_ENABLE); 63 64 /* Disable PWL unit */ 65 omap_writeb(0x00, OMAP_PWL_CLK_ENABLE); 66 67 /* set GPIO2 low */ 68 gpio_set_value(2, 0); 69} 70 71static unsigned long osk_panel_get_caps(struct lcd_panel *panel) 72{ 73 return 0; 74} 75 76struct lcd_panel osk_panel = { 77 .name = "osk", 78 .config = OMAP_LCDC_PANEL_TFT, 79 80 .bpp = 16, 81 .data_lines = 16, 82 .x_res = 240, 83 .y_res = 320, 84 .pixel_clock = 12500, 85 .hsw = 40, 86 .hfp = 40, 87 .hbp = 72, 88 .vsw = 1, 89 .vfp = 1, 90 .vbp = 0, 91 .pcd = 12, 92 93 .init = osk_panel_init, 94 .cleanup = osk_panel_cleanup, 95 .enable = osk_panel_enable, 96 .disable = osk_panel_disable, 97 .get_caps = osk_panel_get_caps, 98}; 99 100static int osk_panel_probe(struct platform_device *pdev) 101{ 102 omapfb_register_panel(&osk_panel); 103 return 0; 104} 105 106static int osk_panel_remove(struct platform_device *pdev) 107{ 108 return 0; 109} 110 111static int osk_panel_suspend(struct platform_device *pdev, pm_message_t mesg) 112{ 113 return 0; 114} 115 116static int osk_panel_resume(struct platform_device *pdev) 117{ 118 return 0; 119} 120 121static struct platform_driver osk_panel_driver = { 122 .probe = osk_panel_probe, 123 .remove = osk_panel_remove, 124 .suspend = osk_panel_suspend, 125 .resume = osk_panel_resume, 126 .driver = { 127 .name = "lcd_osk", 128 }, 129}; 130 131module_platform_driver(osk_panel_driver);