18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * LCD panel support for the TI OMAP H3 board 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2004 Nokia Corporation 68c2ecf20Sopenharmony_ci * Author: Imre Deak <imre.deak@nokia.com> 78c2ecf20Sopenharmony_ci */ 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci#include <linux/module.h> 108c2ecf20Sopenharmony_ci#include <linux/platform_device.h> 118c2ecf20Sopenharmony_ci#include <linux/mfd/tps65010.h> 128c2ecf20Sopenharmony_ci#include <linux/gpio.h> 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci#include "omapfb.h" 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci#define MODULE_NAME "omapfb-lcd_h3" 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_cistatic int h3_panel_enable(struct lcd_panel *panel) 198c2ecf20Sopenharmony_ci{ 208c2ecf20Sopenharmony_ci int r = 0; 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci /* GPIO1 and GPIO2 of TPS65010 send LCD_ENBKL and LCD_ENVDD signals */ 238c2ecf20Sopenharmony_ci r = tps65010_set_gpio_out_value(GPIO1, HIGH); 248c2ecf20Sopenharmony_ci if (!r) 258c2ecf20Sopenharmony_ci r = tps65010_set_gpio_out_value(GPIO2, HIGH); 268c2ecf20Sopenharmony_ci if (r) 278c2ecf20Sopenharmony_ci pr_err(MODULE_NAME ": Unable to turn on LCD panel\n"); 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci return r; 308c2ecf20Sopenharmony_ci} 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_cistatic void h3_panel_disable(struct lcd_panel *panel) 338c2ecf20Sopenharmony_ci{ 348c2ecf20Sopenharmony_ci int r = 0; 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci /* GPIO1 and GPIO2 of TPS65010 send LCD_ENBKL and LCD_ENVDD signals */ 378c2ecf20Sopenharmony_ci r = tps65010_set_gpio_out_value(GPIO1, LOW); 388c2ecf20Sopenharmony_ci if (!r) 398c2ecf20Sopenharmony_ci tps65010_set_gpio_out_value(GPIO2, LOW); 408c2ecf20Sopenharmony_ci if (r) 418c2ecf20Sopenharmony_ci pr_err(MODULE_NAME ": Unable to turn off LCD panel\n"); 428c2ecf20Sopenharmony_ci} 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_cistatic struct lcd_panel h3_panel = { 458c2ecf20Sopenharmony_ci .name = "h3", 468c2ecf20Sopenharmony_ci .config = OMAP_LCDC_PANEL_TFT, 478c2ecf20Sopenharmony_ci 488c2ecf20Sopenharmony_ci .data_lines = 16, 498c2ecf20Sopenharmony_ci .bpp = 16, 508c2ecf20Sopenharmony_ci .x_res = 240, 518c2ecf20Sopenharmony_ci .y_res = 320, 528c2ecf20Sopenharmony_ci .pixel_clock = 12000, 538c2ecf20Sopenharmony_ci .hsw = 12, 548c2ecf20Sopenharmony_ci .hfp = 14, 558c2ecf20Sopenharmony_ci .hbp = 72 - 12, 568c2ecf20Sopenharmony_ci .vsw = 1, 578c2ecf20Sopenharmony_ci .vfp = 1, 588c2ecf20Sopenharmony_ci .vbp = 0, 598c2ecf20Sopenharmony_ci .pcd = 0, 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci .enable = h3_panel_enable, 628c2ecf20Sopenharmony_ci .disable = h3_panel_disable, 638c2ecf20Sopenharmony_ci}; 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_cistatic int h3_panel_probe(struct platform_device *pdev) 668c2ecf20Sopenharmony_ci{ 678c2ecf20Sopenharmony_ci omapfb_register_panel(&h3_panel); 688c2ecf20Sopenharmony_ci return 0; 698c2ecf20Sopenharmony_ci} 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_cistatic struct platform_driver h3_panel_driver = { 728c2ecf20Sopenharmony_ci .probe = h3_panel_probe, 738c2ecf20Sopenharmony_ci .driver = { 748c2ecf20Sopenharmony_ci .name = "lcd_h3", 758c2ecf20Sopenharmony_ci }, 768c2ecf20Sopenharmony_ci}; 778c2ecf20Sopenharmony_ci 788c2ecf20Sopenharmony_cimodule_platform_driver(h3_panel_driver); 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_ciMODULE_AUTHOR("Imre Deak"); 818c2ecf20Sopenharmony_ciMODULE_DESCRIPTION("LCD panel support for the TI OMAP H3 board"); 828c2ecf20Sopenharmony_ciMODULE_LICENSE("GPL"); 83