diff options
Diffstat (limited to 'drivers/video/samsung_duallcd/s3cfb_dummymipilcd.c')
-rw-r--r-- | drivers/video/samsung_duallcd/s3cfb_dummymipilcd.c | 237 |
1 files changed, 0 insertions, 237 deletions
diff --git a/drivers/video/samsung_duallcd/s3cfb_dummymipilcd.c b/drivers/video/samsung_duallcd/s3cfb_dummymipilcd.c deleted file mode 100644 index 320ed73..0000000 --- a/drivers/video/samsung_duallcd/s3cfb_dummymipilcd.c +++ /dev/null @@ -1,237 +0,0 @@ -/* linux/drivers/video/samsung/s3cfb_dummymipilcd.c - * - * 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. - * - * Modified by Samsung Electronics (UK) on May 2010 - * -*/ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/errno.h> -#include <linux/mutex.h> -#include <linux/wait.h> -#include <linux/ctype.h> -#include <linux/io.h> -#include <linux/delay.h> -#include <linux/irq.h> -#include <linux/interrupt.h> -#include <linux/gpio.h> -#include <linux/workqueue.h> -#include <linux/backlight.h> -#include <linux/lcd.h> - -#include <plat/gpio-cfg.h> -#include <plat/regs-dsim.h> - -#include <mach/dsim.h> -#include <mach/mipi_ddi.h> - -#include "s5p-dsim.h" -#include "s3cfb.h" - -static struct mipi_ddi_platform_data *ddi_pd; - -void s6d6aa0_write_0(unsigned char dcs_cmd) -{ - ddi_pd->cmd_write(ddi_pd->dsim_base, DCS_WR_NO_PARA, dcs_cmd, 0); -} - -static void s6d6aa0_write_1(unsigned char dcs_cmd, unsigned char param1) -{ - ddi_pd->cmd_write(ddi_pd->dsim_base, DCS_WR_1_PARA, dcs_cmd, param1); -} - -static void s6d6aa0_write_3(unsigned char dcs_cmd, unsigned char param1, unsigned char param2, unsigned char param3) -{ - unsigned char buf[4]; - buf[0] = dcs_cmd; - buf[1] = param1; - buf[2] = param2; - buf[3] = param3; - - ddi_pd->cmd_write(ddi_pd->dsim_base, DCS_LONG_WR, (unsigned int) buf, 4); -} - -static void s6d6aa0_write(void) -{ - unsigned char buf[15] = {0xf8, 0x01, 0x27, 0x27, 0x07, 0x07, 0x54, - 0x9f, 0x63, 0x86, 0x1a, - 0x33, 0x0d, 0x00, 0x00}; - ddi_pd->cmd_write(ddi_pd->dsim_base, DCS_LONG_WR, (unsigned int) buf, sizeof(buf)); -} - -static void s6d6aa0_display_off(struct device *dev) -{ - ddi_pd->cmd_write(ddi_pd->dsim_base, DCS_WR_1_PARA, 0x28, 0x00); -} - -void s6d6aa0_sleep_in(struct device *dev) -{ - ddi_pd->cmd_write(ddi_pd->dsim_base, DCS_WR_NO_PARA, 0x10, 0); -} - -void s6d6aa0_sleep_out(struct device *dev) -{ - ddi_pd->cmd_write(ddi_pd->dsim_base, DCS_WR_NO_PARA, 0x11, 0); -} - -static void s6d6aa0_display_on(struct device *dev) -{ - ddi_pd->cmd_write(ddi_pd->dsim_base, DCS_WR_NO_PARA, 0x29, 0); -} - -void lcd_pannel_on(void) -{ - /* password */ - s6d6aa0_write_1(0xb0, 0x09); - s6d6aa0_write_1(0xb0, 0x09); - s6d6aa0_write_1(0xd5, 0x64); - s6d6aa0_write_1(0xb0, 0x09); - - s6d6aa0_write_1(0xd5, 0x84); - s6d6aa0_write_3(0xf2, 0x02, 0x03, 0x1b); - s6d6aa0_write(); - s6d6aa0_write_3(0xf6, 0x00, 0x8c, 0x07); - - /* reset */ - s6d6aa0_write_1(0xfa, 0x01); - - /* Exit sleep */ - s6d6aa0_write_0(0x11); - mdelay(100); - - /* Set Display ON */ - s6d6aa0_write_0(0x29); -} - -void lcd_panel_init(void) -{ - lcd_pannel_on(); -} - -static int dummy_panel_init(void) -{ - mdelay(600); - lcd_panel_init(); - - return 0; -} - -static int s6d6aa0_set_link(void *pd, unsigned int dsim_base, - unsigned char (*cmd_write) (unsigned int dsim_base, unsigned int data0, - unsigned int data1, unsigned int data2), - unsigned char (*cmd_read) (unsigned int dsim_base, unsigned int data0, - unsigned int data1, unsigned int data2)) -{ - struct mipi_ddi_platform_data *temp_pd = NULL; - - temp_pd = (struct mipi_ddi_platform_data *) pd; - if (temp_pd == NULL) { - printk(KERN_ERR "mipi_ddi_platform_data is null.\n"); - return -1; - } - - ddi_pd = temp_pd; - - ddi_pd->dsim_base = dsim_base; - - if (cmd_write) - ddi_pd->cmd_write = cmd_write; - else - printk(KERN_WARNING "cmd_write function is null.\n"); - - if (cmd_read) - ddi_pd->cmd_read = cmd_read; - else - printk(KERN_WARNING "cmd_read function is null.\n"); - - return 0; -} - -static int s6d6aa0_probe(struct device *dev) -{ - return 0; -} - -#ifdef CONFIG_PM -static int s6d6aa0_suspend(void) -{ - s6d6aa0_write_0(0x28); - mdelay(20); - s6d6aa0_write_0(0x10); - mdelay(20); - - return 0; -} - -static int s6d6aa0_resume(struct device *dev) -{ - return 0; -} -#else -#define s6d6aa0_suspend NULL -#define s6d6aa0_resume NULL -#endif - -static struct mipi_lcd_driver s6d6aa0_mipi_driver = { - .name = "dummy_mipi_lcd", - .init = dummy_panel_init, - .display_on = s6d6aa0_display_on, - .set_link = s6d6aa0_set_link, - .probe = s6d6aa0_probe, - .suspend = s6d6aa0_suspend, - .resume = s6d6aa0_resume, - .display_off = s6d6aa0_display_off, -}; - -static int s6d6aa0_init(void) -{ - s5p_dsim_register_lcd_driver(&s6d6aa0_mipi_driver); - return 0; -} - -static void s6d6aa0_exit(void) -{ - return; -} - -static struct s3cfb_lcd dummy_mipi_lcd = { - .width = 480, - .height = 800, - .bpp = 24, - .freq = 60, - - .timing = { - .h_fp = 0x16, - .h_bp = 0x16, - .h_sw = 0x2, - .v_fp = 0x28, - .v_fpe = 2, - .v_bp = 0x1, - .v_bpe = 1, - .v_sw = 3, - .cmd_allow_len = 4, - }, - - .polarity = { - .rise_vclk = 0, - .inv_hsync = 0, - .inv_vsync = 0, - .inv_vden = 0, - }, -}; - -/* name should be fixed as 's3cfb_set_lcd_info' */ -void s3cfb_set_lcd_info(struct s3cfb_global *ctrl) -{ - dummy_mipi_lcd.init_ldi = NULL; - ctrl->lcd = &dummy_mipi_lcd; -} - -module_init(s6d6aa0_init); -module_exit(s6d6aa0_exit); - -MODULE_LICENSE("GPL"); |