s5pv210 hx8369 lcd配制
来源:互联网 发布:linux mint与ubuntu 编辑:程序博客网 时间:2024/05/18 16:14
u-boot中配制hx8369,IO模拟SPI.
/**gzsd add*/#include<regs.h>#include <common.h>#include <asm/io.h>#ifdef CONFIG_GZSD210_LCDstatic void set_cs(int cs){int reg;reg = readl(GPF1DAT);reg &= ~(0x1 << 5);reg |= (cs << 5);writel(reg,GPF1DAT);}static void set_clk(int clk){int reg;reg = readl(GPF1DAT);reg &= ~(0x1 << 4);reg |= (clk << 4);writel(reg,GPF1DAT);}static void set_outdata(int outdata){int reg;#if0reg = readl(GPF0CON);reg &= ~(0xf << 20);reg |= (0x1<< 20);writel(reg,GPF0CON);reg = readl(GPF0DAT);reg &= ~(0x1 << 5);reg |= (outdata << 5);writel(reg,GPF0DAT);#elsereg = readl(GPF0DAT);reg &= ~(0x1 << 6);reg |= (outdata << 6);writel(reg,GPF0DAT);#endif}static void send_data(unsigned int data){unsigned int i;int clk_num;int clk_mask;set_cs(0);udelay(10);set_clk(1);set_outdata(1);udelay(10);clk_num = 9;clk_mask = 0x100;udelay(50);for(i = 0; i < clk_num; ++i){set_clk(0);if(data & clk_mask){set_outdata(1);}else{set_outdata(0);}udelay(100);set_clk(1);udelay(100);data <<= 1;}set_outdata(1);set_cs(1);}static void hx8369_write_cmd(unsigned int cmd){unsigned int out;out = (cmd & 0xFF);send_data(out);}static void hx8369_write_data(unsigned int data){unsigned int out = (data & 0xFF) | 0x100;send_data(out);}static void set_hx8369(void){hx8369_write_cmd(0xB9); // SET password hx8369_write_data(0xFF); hx8369_write_data(0x83); hx8369_write_data(0x69); hx8369_write_cmd(0xB1); //Set Power hx8369_write_data(0x01); hx8369_write_data(0x00); hx8369_write_data(0x34); hx8369_write_data(0x06); hx8369_write_data(0x00); hx8369_write_data(0x11); hx8369_write_data(0x11); hx8369_write_data(0x2A); hx8369_write_data(0x32); hx8369_write_data(0x3F); hx8369_write_data(0x3F); hx8369_write_data(0x07); hx8369_write_data(0x23); hx8369_write_data(0x01); hx8369_write_data(0xE6); hx8369_write_data(0xE6); hx8369_write_data(0xE6); hx8369_write_data(0xE6); hx8369_write_data(0xE6); hx8369_write_cmd(0xB2); // SET Display 480x800 hx8369_write_data(0x00); hx8369_write_data(0x2B); hx8369_write_data(0x03); hx8369_write_data(0x03); hx8369_write_data(0x70); hx8369_write_data(0x00); hx8369_write_data(0xFF); hx8369_write_data(0x00); hx8369_write_data(0x00); hx8369_write_data(0x00); hx8369_write_data(0x00); hx8369_write_data(0x03); hx8369_write_data(0x03); hx8369_write_data(0x00); hx8369_write_data(0x01); hx8369_write_cmd(0xB4); // SET Display 480x800 hx8369_write_data(0x00); hx8369_write_data(0x0C); hx8369_write_data(0xA0); hx8369_write_data(0x0E); hx8369_write_data(0x06); hx8369_write_cmd(0xB6); // SET VCOM hx8369_write_data(0x10); hx8369_write_data(0x10); hx8369_write_cmd(0xD5); // SET GIP hx8369_write_data(0x00); hx8369_write_data(0x05); hx8369_write_data(0x03); hx8369_write_data(0x00); hx8369_write_data(0x01); hx8369_write_data(0x09); hx8369_write_data(0x10); hx8369_write_data(0x80); hx8369_write_data(0x37); hx8369_write_data(0x37); hx8369_write_data(0x20); hx8369_write_data(0x31); hx8369_write_data(0x46); hx8369_write_data(0x8A); hx8369_write_data(0x57); hx8369_write_data(0x9B); hx8369_write_data(0x20); hx8369_write_data(0x31); hx8369_write_data(0x46); hx8369_write_data(0x8A); hx8369_write_data(0x57); hx8369_write_data(0x9B); hx8369_write_data(0x07); hx8369_write_data(0x0F); hx8369_write_data(0x02); hx8369_write_data(0x00); hx8369_write_cmd(0xE0); // SET Gamma hx8369_write_data(0x00); hx8369_write_data(0x08); hx8369_write_data(0x0D); hx8369_write_data(0x2D); hx8369_write_data(0x34); hx8369_write_data(0x3F); hx8369_write_data(0x19); hx8369_write_data(0x38); hx8369_write_data(0x09); hx8369_write_data(0x0E); hx8369_write_data(0x0E); hx8369_write_data(0x12); hx8369_write_data(0x14); hx8369_write_data(0x12); hx8369_write_data(0x14); hx8369_write_data(0x13); hx8369_write_data(0x19); hx8369_write_data(0x00); hx8369_write_data(0x08); hx8369_write_data(0x0D); hx8369_write_data(0x2D); hx8369_write_data(0x34); hx8369_write_data(0x3F); hx8369_write_data(0x19); hx8369_write_data(0x38); hx8369_write_data(0x09); hx8369_write_data(0x0E); hx8369_write_data(0x0E); hx8369_write_data(0x12); hx8369_write_data(0x14); hx8369_write_data(0x12); hx8369_write_data(0x14); hx8369_write_data(0x13); hx8369_write_data(0x19); hx8369_write_cmd(0xC1); hx8369_write_data(0x01); //enable DGC function hx8369_write_data(0x02); //SET R-GAMMA hx8369_write_data(0x08); hx8369_write_data(0x12); hx8369_write_data(0x1A); hx8369_write_data(0x22); hx8369_write_data(0x2A); hx8369_write_data(0x31); hx8369_write_data(0x36); hx8369_write_data(0x3F); hx8369_write_data(0x48); hx8369_write_data(0x51); hx8369_write_data(0x58); hx8369_write_data(0x60); hx8369_write_data(0x68); hx8369_write_data(0x70); hx8369_write_data(0x78); hx8369_write_data(0x80); hx8369_write_data(0x88); hx8369_write_data(0x90); hx8369_write_data(0x98); hx8369_write_data(0xA0); hx8369_write_data(0xA7); hx8369_write_data(0xAF); hx8369_write_data(0xB6); hx8369_write_data(0xBE); hx8369_write_data(0xC7); hx8369_write_data(0xCE); hx8369_write_data(0xD6); hx8369_write_data(0xDE); hx8369_write_data(0xE6); hx8369_write_data(0xEF); hx8369_write_data(0xF5); hx8369_write_data(0xFB); hx8369_write_data(0xFC); hx8369_write_data(0xFE); hx8369_write_data(0x8C); hx8369_write_data(0xA4); hx8369_write_data(0x19); hx8369_write_data(0xEC); hx8369_write_data(0x1B); hx8369_write_data(0x4C); hx8369_write_data(0x40); hx8369_write_data(0x02); //SET G-Gamma hx8369_write_data(0x08); hx8369_write_data(0x12); hx8369_write_data(0x1A); hx8369_write_data(0x22); hx8369_write_data(0x2A); hx8369_write_data(0x31); hx8369_write_data(0x36); hx8369_write_data(0x3F); hx8369_write_data(0x48); hx8369_write_data(0x51); hx8369_write_data(0x58); hx8369_write_data(0x60); hx8369_write_data(0x68); hx8369_write_data(0x70); hx8369_write_data(0x78); hx8369_write_data(0x80); hx8369_write_data(0x88); hx8369_write_data(0x90); hx8369_write_data(0x98); hx8369_write_data(0xA0); hx8369_write_data(0xA7); hx8369_write_data(0xAF); hx8369_write_data(0xB6); hx8369_write_data(0xBE); hx8369_write_data(0xC7); hx8369_write_data(0xCE); hx8369_write_data(0xD6); hx8369_write_data(0xDE); hx8369_write_data(0xE6); hx8369_write_data(0xEF); hx8369_write_data(0xF5); hx8369_write_data(0xFB); hx8369_write_data(0xFC); hx8369_write_data(0xFE); hx8369_write_data(0x8C); hx8369_write_data(0xA4); hx8369_write_data(0x19); hx8369_write_data(0xEC); hx8369_write_data(0x1B); hx8369_write_data(0x4C); hx8369_write_data(0x40); hx8369_write_data(0x02); //SET B-Gamma hx8369_write_data(0x08); hx8369_write_data(0x12); hx8369_write_data(0x1A); hx8369_write_data(0x22); hx8369_write_data(0x2A); hx8369_write_data(0x31); hx8369_write_data(0x36); hx8369_write_data(0x3F); hx8369_write_data(0x48); hx8369_write_data(0x51); hx8369_write_data(0x58); hx8369_write_data(0x60); hx8369_write_data(0x68); hx8369_write_data(0x70); hx8369_write_data(0x78); hx8369_write_data(0x80); hx8369_write_data(0x88); hx8369_write_data(0x90); hx8369_write_data(0x98); hx8369_write_data(0xA0); hx8369_write_data(0xA7); hx8369_write_data(0xAF); hx8369_write_data(0xB6); hx8369_write_data(0xBE); hx8369_write_data(0xC7); hx8369_write_data(0xCE); hx8369_write_data(0xD6); hx8369_write_data(0xDE); hx8369_write_data(0xE6); hx8369_write_data(0xEF); hx8369_write_data(0xF5); hx8369_write_data(0xFB); hx8369_write_data(0xFC); hx8369_write_data(0xFE); hx8369_write_data(0x8C); hx8369_write_data(0xA4); hx8369_write_data(0x19); hx8369_write_data(0xEC); hx8369_write_data(0x1B); hx8369_write_data(0x4C); hx8369_write_data(0x40); hx8369_write_cmd(0x3A); //24 bits//hx8369_write_data(0x77);//18 bitshx8369_write_data(0x66); hx8369_write_cmd(0x11); udelay(120000); hx8369_write_cmd(0x29);}static void lcd_reset(){int reg;reg = readl(GPF2CON);//resetreg &= ~(0xf << 16);reg |= (0x1<< 16);writel(reg,GPF2CON);reg = readl(GPF2DAT);reg |= (0x1 << 4);writel(reg,GPF2DAT);//udelay(100000);udelay(10000);reg = readl(GPF2DAT);reg &= ~(0x1 << 4);writel(reg,GPF2DAT);//udelay(200000);udelay(20000);reg = readl(GPF2DAT);reg |= (0x1 << 4);writel(reg,GPF2DAT);udelay(10000);//set_clk(1);//keep in stop state more than 6ms//set_outdata(1);//udelay(10000);}static void gpio_cfg(){int reg;reg = readl(GPF1CON);//csreg &= ~(0xf << 20);reg |= (0x1<< 20);writel(reg,GPF1CON);reg = readl(GPF1CON);//clkreg &= ~(0xf << 16);reg |= (0x1<< 16);writel(reg,GPF1CON);reg = readl(GPF0CON);// outdatareg &= ~(0xf << 24);reg |= (0x1<< 24);writel(reg,GPF0CON);set_clk(1);//keep in stop state more than 6msset_cs(1);set_outdata(1);udelay(10000);reg = readl(GPF0CON);//set 3.3vreg &= ~(0xf << 16);reg |= (0x1<< 16);writel(reg,GPF0CON);reg = readl(GPF0DAT);reg &= ~(0x1 << 4);writel(reg, GPF0DAT);}/*lcd config*/void lcd_config(){gpio_cfg();lcd_reset();set_hx8369();set_cs(1);set_clk(1);set_outdata(1);}#endif
内核中增加相关配制
//gzsd#ifdef CONFIG_FB_S3C_TFT480static struct s3cfb_lcd hx8369 = { .width = 480,//480, .height = 800,//800, //.p_width = 52, //.p_height = 86, .bpp = 24, .freq = 60, .timing = {#if1 .h_fp = 32, .h_bp = 32, .h_sw = 14, .v_fp = 12, .v_fpe = 1, .v_bp = 12, .v_bpe = 1, .v_sw = 8,#else .h_fp = 15, .h_bp = 4, .h_sw = 14, .v_fp = 3, .v_fpe = 1, .v_bp = 3, .v_bpe = 1, .v_sw = 2,#endif }, .polarity = { .rise_vclk = 0, // video data fetch at DOTCLK falling edge .inv_hsync = 1, // low active .inv_vsync = 1, // low active .inv_vden = 0, // data is vaild when DEpin is high },};static void hx8369_cfg_gpio(struct platform_device *pdev){ int i;for (i = 0; i < 5; i++) {s3c_gpio_cfgpin(S5PV210_GPF0(i), S3C_GPIO_SFN(2));s3c_gpio_setpull(S5PV210_GPF0(i), S3C_GPIO_PULL_NONE);}s3c_gpio_cfgpin(S5PV210_GPF0(7), S3C_GPIO_SFN(2));s3c_gpio_setpull(S5PV210_GPF0(7), S3C_GPIO_PULL_NONE);for (i = 0; i < 4; i++) {s3c_gpio_cfgpin(S5PV210_GPF1(i), S3C_GPIO_SFN(2));s3c_gpio_setpull(S5PV210_GPF1(i), S3C_GPIO_PULL_NONE);}s3c_gpio_cfgpin(S5PV210_GPF1(6), S3C_GPIO_SFN(2));s3c_gpio_setpull(S5PV210_GPF1(6), S3C_GPIO_PULL_NONE);s3c_gpio_cfgpin(S5PV210_GPF1(7), S3C_GPIO_SFN(2));s3c_gpio_setpull(S5PV210_GPF1(7), S3C_GPIO_PULL_NONE);for (i = 0; i < 4; i++) {s3c_gpio_cfgpin(S5PV210_GPF2(i), S3C_GPIO_SFN(2));s3c_gpio_setpull(S5PV210_GPF2(i), S3C_GPIO_PULL_NONE);}for (i = 5; i < 8; i++) {s3c_gpio_cfgpin(S5PV210_GPF2(i), S3C_GPIO_SFN(2));s3c_gpio_setpull(S5PV210_GPF2(i), S3C_GPIO_PULL_NONE);}for (i = 0; i < 4; i++) {s3c_gpio_cfgpin(S5PV210_GPF3(i), S3C_GPIO_SFN(2));s3c_gpio_setpull(S5PV210_GPF3(i), S3C_GPIO_PULL_NONE);}/* mDNIe SEL: why we shall write 0x2 ? */writel(0x2, S5P_MDNIE_SEL);/* drive strength to max */writel(0xffffffff, S5PV210_GPF0_BASE + 0xc);writel(0xffffffff, S5PV210_GPF1_BASE + 0xc);writel(0xffffffff, S5PV210_GPF2_BASE + 0xc);writel(0x000000ff, S5PV210_GPF3_BASE + 0xc);}static int hx8369_backlight_on(struct platform_device *pdev){int err;err = gpio_request(S5PV210_GPD0(0), "GPD0");if (err) {printk(KERN_ERR "failed to request GPD0 for ""lcd backlight control\n");return err;}gpio_direction_output(S5PV210_GPD0(0), 1);//s3c_gpio_cfgpin(S5PV210_GPD0(0), S5PV210_GPD_0_0_TOUT_0);gpio_free(S5PV210_GPD0(0));return 0;}static int hx8369_backlight_off(struct platform_device *pdev, int onoff){int err;err = gpio_request(S5PV210_GPD0(0), "GPD0");if (err) {printk(KERN_ERR "failed to request GPD0 for ""lcd backlight control\n");return err;}gpio_direction_output(S5PV210_GPD0(0), 0);gpio_free(S5PV210_GPD0(0));return 0;}static int hx8369_reset_lcd(struct platform_device *pdev){/*int err;err = gpio_request(S5PV210_GPH2(4), "GPH2");if (err) {printk(KERN_ERR "failed to request GPH2 for ""lcd reset control\n");return err;}gpio_direction_output(S5PV210_GPF2(4), 1);mdelay(100);gpio_set_value(S5PV210_GPF2(4), 0);mdelay(10);gpio_set_value(S5PV210_GPF2(4), 1);mdelay(10);gpio_free(S5PV210_GPF2(4));return 0;*/}static struct s3c_platform_fb hx8369_fb_data __initdata = {.hw_ver= 0x62,.nr_wins = 5,.default_win = CONFIG_FB_S3C_DEFAULT_WINDOW,.swap = FB_SWAP_WORD | FB_SWAP_HWORD,.lcd = &hx8369,.cfg_gpio= hx8369_cfg_gpio,.backlight_on= hx8369_backlight_on,.backlight_onoff = hx8369_backlight_off,.reset_lcd= hx8369_reset_lcd,};#endif
- s5pv210 hx8369 lcd配制
- S5PV210 -- HX8369 LCD 驱动
- S3C2416 LCD裸机配制
- S5PV210 LCD 驱动
- s5pv210 LCD驱动移植
- S5PV210 LCD控制器
- s5pv210 LCD控制器初始化
- S5PV210的LCD控制器
- S5PV210 LCD屏
- S5PV210----裸机LCD驱动
- S5PV210之LCD
- s5pv210,lcd驱动,x210,驱动
- s5pv210——LCD基础理论
- S5pv210 LCD 驱动 时序相关(转)
- TFT LCD在S5PV210平台调试记录
- HX8369 驱动调试总结
- S5PV210(TQ210)学习笔记——LCD驱动编写
- linux-3.4.2 s5pv210 LCD驱动移植(一)
- spring mvc
- .PHONY makefile中的伪目标
- C语言基础
- android中的热词搜索的实现
- 学习AOP
- s5pv210 hx8369 lcd配制
- Linux 默认根目录的作用说明(中英文对照)
- 学生成绩管理分析系统
- SIFT中的尺度空间和传统图像金字塔
- 从实践中所得---评教
- PB变量类型与API变量类型的对应关系
- 关于一个程序员一天只写四个小时代码的反思
- Entity Framework 学习笔记(一)
- struts整合spring
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
杯具批发市场
杯具狗多少钱
生活就是杯具
多比的杯具生活
咖啡杯具价格
陶瓷杯具批发
陶瓷杯具品牌
杯具了是什么意思
清穿杯具人生
茶几上的杯具
还珠同人之杯具人生
关于杯具的句子
杯具女主番外
盖碗茶具
现代茶具
纯银杯具
爱情悲剧
悲剧意识
一出悲剧正上演
人生有两大悲剧
人生三大悲剧
叔本华 悲剧
悲剧英语
一个女人的悲剧
三大悲剧
人生就是一场杯具
人生就是一个杯具
茶几上摆满了杯具
我不是粽子是个杯具
杯型钢丝刷
星巴克三种杯型
富光太空杯5型
杯垫
杯垫钩法
实木杯垫
电热杯垫
手工钩杯垫
复古杯垫
杯垫图解
杯垫的钩法图解
钩针杯垫