void Set_LCD_8B_REG(unsigned char regh,unsigned char regl, uint32 data) { uint32 cmd; cmd = (regh<<8) + regl; if(-1==data) { mcu_ioctl(MCU_WRCMD,cmd); } else { mcu_ioctl(MCU_WRCMD,cmd); mcu_ioctl(MCU_WRDATA,data); } }
int lcd_standby(u8 enable) { mcu_ioctl(MCU_SETBYPASS, 1); if(enable) { Set_LCD_8B_REG(0x10,0X00,-1); } else { Set_LCD_8B_REG(0x11,0X00,-1); } mcu_ioctl(MCU_SETBYPASS, 0); return 0; }
int lcd_disparea(u8 area) { uint32 x0, y0, x1, y1, fte; mcu_ioctl(MCU_SETBYPASS, 1); switch(area) { case 0: fte = 0; x0 = 0; y0 = 0; x1 = 399; y1 = 479; break; case 2: x0 = 0; y0 = 0; x1 = 799; y1 = 479; break; case 1: default: fte = 400; x0 = 400; y0 = 0; x1 = 799; y1 = 479; break; } //Set_LCD_8B_REG(0x44,0x00,(fte>>8)&0xff); //Set_LCD_8B_REG(0x44,0x01,(fte)&0xff); Set_LCD_8B_REG(0x2a,0X00,(y0>>8)&0xff); Set_LCD_8B_REG(0x2a,0X01,y0&0xff); Set_LCD_8B_REG(0x2a,0X02,(y1>>8)&0xff); Set_LCD_8B_REG(0x2a,0X03,y1&0xff); Set_LCD_8B_REG(0x2b,0X00,(x0>>8)&0xff); Set_LCD_8B_REG(0x2b,0X01,x0&0xff); Set_LCD_8B_REG(0x2b,0X02,(x1>>8)&0xff); Set_LCD_8B_REG(0x2b,0X03,x1&0xff); Set_LCD_8B_REG(0x2c,0X00,-1); mcu_ioctl(MCU_SETBYPASS, 0); return (0); }
int lcd_refresh(u8 arg) { switch(arg) { case REFRESH_PRE: //DMA传送前准备 mcu_ioctl(MCU_SETBYPASS, 1); Set_LCD_8B_REG(0x2c,0X00,-1); mcu_ioctl(MCU_SETBYPASS, 0); break; case REFRESH_END: //DMA传送结束后 mcu_ioctl(MCU_SETBYPASS, 1); Set_LCD_8B_REG(0x29,0X00,-1); mcu_ioctl(MCU_SETBYPASS, 0); break; default: break; } return 0; }
int lcd_scandir(u16 dir) { mcu_ioctl(MCU_SETBYPASS, 1); // 暂时关闭MCU显示,在lcd_refresh的case REFRESH_END再打开 // 否则画面会异常 Set_LCD_8B_REG(0x28,0X00,-1); Set_LCD_8B_REG(0x2a,0X00,0X00); Set_LCD_8B_REG(0x2a,0X01,0X00); Set_LCD_8B_REG(0x2a,0X02,0X01); Set_LCD_8B_REG(0x2a,0X03,0Xdf); Set_LCD_8B_REG(0x2b,0X00,0X00); Set_LCD_8B_REG(0x2b,0X01,0X00); Set_LCD_8B_REG(0x2b,0X02,0X03); Set_LCD_8B_REG(0x2b,0X03,0X1f); switch(dir) { case 0: Set_LCD_8B_REG(0x36,0X00,0x00); break; case 90: Set_LCD_8B_REG(0x36,0X00,0x22); break; case 180: Set_LCD_8B_REG(0x36,0X00,0x03); break; case 270: Set_LCD_8B_REG(0x36,0X00,0x21); break; default: break; } mcu_ioctl(MCU_SETBYPASS, 0); return 0; }
int lcd_refresh(u8 arg) { mcu_ioctl(MCU_SETBYPASS, 1); switch(arg) { case REFRESH_PRE: //DMA传送前准备 #if 0 mcu_ioctl(MCU_WRCMD, 0x1001); mcu_ioctl(MCU_WRDATA, 0x0001); mcu_ioctl(MCU_WRDATA, 0x0001); mcu_ioctl(MCU_WRDATA, 0x0320); mcu_ioctl(MCU_WRDATA, 0x0258); printk(">>>>>> lcd_refresh : REFRESH_PRE! \n"); #else // init set mcu_ioctl(MCU_WRCMD, 0x0000); mcu_ioctl(MCU_WRDATA, 0x0001); // start display mcu_ioctl(MCU_WRCMD, 0x1001); mcu_ioctl(MCU_WRDATA, 0x0001); mcu_ioctl(MCU_WRDATA, 0x0001); mcu_ioctl(MCU_WRDATA, 0x0320); mcu_ioctl(MCU_WRDATA, 0x0258); printk(">>>>>> lcd_refresh : REFRESH_PRE!!! \n"); #endif break; case REFRESH_END: //DMA传送结束后 mcu_ioctl(MCU_WRCMD, 0x1002); printk(">>>>>> lcd_refresh : REFRESH_END! \n"); break; default: break; } mcu_ioctl(MCU_SETBYPASS, 0); return 0; }
int lcd_init(void) { mcu_ioctl(MCU_SETBYPASS, 1); // init set mcu_ioctl(MCU_WRCMD, 0x0000); mcu_ioctl(MCU_WRDATA, 0x0001); // start display mcu_ioctl(MCU_WRCMD, 0x1001); mcu_ioctl(MCU_WRDATA, 0x0001); mcu_ioctl(MCU_WRDATA, 0x0001); mcu_ioctl(MCU_WRDATA, 0x0320); mcu_ioctl(MCU_WRDATA, 0x0258); // 初始化图象 int i=0, j=0; while(0) { mcu_ioctl(MCU_WRCMD, 0x1001); mcu_ioctl(MCU_WRDATA, 0x0001); mcu_ioctl(MCU_WRDATA, 0x0001); mcu_ioctl(MCU_WRDATA, 0x0320); mcu_ioctl(MCU_WRDATA, 0x0258); for(i=0; i<800*100; i++) mcu_ioctl(MCU_WRDATA, j%2 ? 0xffff : 0x0000); for(i=0; i<800*100; i++) mcu_ioctl(MCU_WRDATA, j%2 ? 0x0000 : 0xffff); j++; mcu_ioctl(MCU_WRCMD, 0x1002); msleep(2000); printk(">>>>>> lcd_init : send test image! \n"); } mcu_ioctl(MCU_SETBYPASS, 0); return 0; }
int lcd_init(void) { int i = 0; #if 0 GPIO_SetPinDirection(reset_pin, GPIO_OUT); GPIO_SetPinLevel(reset_pin,GPIO_HIGH); DelayMs_nops(100); GPIO_SetPinLevel(reset_pin,GPIO_LOW); DelayMs_nops(100); GPIO_SetPinLevel(reset_pin,GPIO_HIGH); #endif mcu_ioctl(MCU_SETBYPASS, 1); Set_LCD_8B_REG(0xC0,0X00,0x86); Set_LCD_8B_REG(0xC0,0X01,0x00); Set_LCD_8B_REG(0xC0,0X02,0x86); Set_LCD_8B_REG(0xC0,0X03,0x00); Set_LCD_8B_REG(0xC1,0X00,0x60); //0x004f Set_LCD_8B_REG(0xC2,0X00,0x21); Set_LCD_8B_REG(0xC2,0X02,0x70); //0x0202 Set_LCD_8B_REG(0xB6,0x00,0x10); //0x0030 Set_LCD_8B_REG(0xB6,0x02,0x30); Set_LCD_8B_REG(0xC7,0X00,0x6F); Set_LCD_8B_REG(0xE0,0X00,0X0E); Set_LCD_8B_REG(0xE0,0X01,0X14); Set_LCD_8B_REG(0xE0,0X02,0X29); Set_LCD_8B_REG(0xE0,0X03,0X3A); Set_LCD_8B_REG(0xE0,0X04,0X1D); Set_LCD_8B_REG(0xE0,0X05,0X30); Set_LCD_8B_REG(0xE0,0X06,0X61); Set_LCD_8B_REG(0xE0,0X07,0X3D); Set_LCD_8B_REG(0xE0,0X08,0X22); Set_LCD_8B_REG(0xE0,0X09,0X2A); Set_LCD_8B_REG(0xE0,0X0A,0X87); Set_LCD_8B_REG(0xE0,0X0B,0X16); Set_LCD_8B_REG(0xE0,0X0C,0X3B); Set_LCD_8B_REG(0xE0,0X0D,0X4C); Set_LCD_8B_REG(0xE0,0X0E,0X78); Set_LCD_8B_REG(0xE0,0X0F,0X96); Set_LCD_8B_REG(0xE0,0X10,0X4A); Set_LCD_8B_REG(0xE0,0X11,0X4D); Set_LCD_8B_REG(0xE1,0X00,0X0E); Set_LCD_8B_REG(0xE1,0X01,0X14); Set_LCD_8B_REG(0xE1,0X02,0X29); Set_LCD_8B_REG(0xE1,0X03,0X3A); Set_LCD_8B_REG(0xE1,0X04,0X1D); Set_LCD_8B_REG(0xE1,0X05,0X30); Set_LCD_8B_REG(0xE1,0X06,0X61); Set_LCD_8B_REG(0xE1,0X07,0X3F); Set_LCD_8B_REG(0xE1,0X08,0X20); Set_LCD_8B_REG(0xE1,0X09,0X26); Set_LCD_8B_REG(0xE1,0X0A,0X83); Set_LCD_8B_REG(0xE1,0X0B,0X16); Set_LCD_8B_REG(0xE1,0X0C,0X3B); Set_LCD_8B_REG(0xE1,0X0D,0X4C); Set_LCD_8B_REG(0xE1,0X0E,0X78); Set_LCD_8B_REG(0xE1,0X0F,0X96); Set_LCD_8B_REG(0xE1,0X10,0X4A); Set_LCD_8B_REG(0xE1,0X11,0X4D); Set_LCD_8B_REG(0xE2,0X00,0X0E); Set_LCD_8B_REG(0xE2,0X01,0X14); Set_LCD_8B_REG(0xE2,0X02,0X29); Set_LCD_8B_REG(0xE2,0X03,0X3A); Set_LCD_8B_REG(0xE2,0X04,0X1D); Set_LCD_8B_REG(0xE2,0X05,0X30); Set_LCD_8B_REG(0xE2,0X06,0X61); Set_LCD_8B_REG(0xE2,0X07,0X3D); Set_LCD_8B_REG(0xE2,0X08,0X22); Set_LCD_8B_REG(0xE2,0X09,0X2A); Set_LCD_8B_REG(0xE2,0X0A,0X87); Set_LCD_8B_REG(0xE2,0X0B,0X16); Set_LCD_8B_REG(0xE2,0X0C,0X3B); Set_LCD_8B_REG(0xE2,0X0D,0X4C); Set_LCD_8B_REG(0xE2,0X0E,0X78); Set_LCD_8B_REG(0xE2,0X0F,0X96); Set_LCD_8B_REG(0xE2,0X10,0X4A); Set_LCD_8B_REG(0xE2,0X11,0X4D); Set_LCD_8B_REG(0xE3,0X00,0X0E); Set_LCD_8B_REG(0xE3,0X01,0X14); Set_LCD_8B_REG(0xE3,0X02,0X29); Set_LCD_8B_REG(0xE3,0X03,0X3A); Set_LCD_8B_REG(0xE3,0X04,0X1D); Set_LCD_8B_REG(0xE3,0X05,0X30); Set_LCD_8B_REG(0xE3,0X06,0X61); Set_LCD_8B_REG(0xE3,0X07,0X3F); Set_LCD_8B_REG(0xE3,0X08,0X20); Set_LCD_8B_REG(0xE3,0X09,0X26); Set_LCD_8B_REG(0xE3,0X0A,0X83); Set_LCD_8B_REG(0xE3,0X0B,0X16); Set_LCD_8B_REG(0xE3,0X0C,0X3B); Set_LCD_8B_REG(0xE3,0X0D,0X4C); Set_LCD_8B_REG(0xE3,0X0E,0X78); Set_LCD_8B_REG(0xE3,0X0F,0X96); Set_LCD_8B_REG(0xE3,0X10,0X4A); Set_LCD_8B_REG(0xE3,0X11,0X4D); Set_LCD_8B_REG(0xE4,0X00,0X0E); Set_LCD_8B_REG(0xE4,0X01,0X14); Set_LCD_8B_REG(0xE4,0X02,0X29); Set_LCD_8B_REG(0xE4,0X03,0X3A); Set_LCD_8B_REG(0xE4,0X04,0X1D); Set_LCD_8B_REG(0xE4,0X05,0X30); Set_LCD_8B_REG(0xE4,0X06,0X61); Set_LCD_8B_REG(0xE4,0X07,0X3D); Set_LCD_8B_REG(0xE4,0X08,0X22); Set_LCD_8B_REG(0xE4,0X09,0X2A); Set_LCD_8B_REG(0xE4,0X0A,0X87); Set_LCD_8B_REG(0xE4,0X0B,0X16); Set_LCD_8B_REG(0xE4,0X0C,0X3B); Set_LCD_8B_REG(0xE4,0X0D,0X4C); Set_LCD_8B_REG(0xE4,0X0E,0X78); Set_LCD_8B_REG(0xE4,0X0F,0X96); Set_LCD_8B_REG(0xE4,0X10,0X4A); Set_LCD_8B_REG(0xE4,0X11,0X4D); Set_LCD_8B_REG(0xE5,0X00,0X0E); Set_LCD_8B_REG(0xE5,0X01,0X14); Set_LCD_8B_REG(0xE5,0X02,0X29); Set_LCD_8B_REG(0xE5,0X03,0X3A); Set_LCD_8B_REG(0xE5,0X04,0X1D); Set_LCD_8B_REG(0xE5,0X05,0X30); Set_LCD_8B_REG(0xE5,0X06,0X61); Set_LCD_8B_REG(0xE5,0X07,0X3F); Set_LCD_8B_REG(0xE5,0X08,0X20); Set_LCD_8B_REG(0xE5,0X09,0X26); Set_LCD_8B_REG(0xE5,0X0A,0X83); Set_LCD_8B_REG(0xE5,0X0B,0X16); Set_LCD_8B_REG(0xE5,0X0C,0X3B); Set_LCD_8B_REG(0xE5,0X0D,0X4C); Set_LCD_8B_REG(0xE5,0X0E,0X78); Set_LCD_8B_REG(0xE5,0X0F,0X96); Set_LCD_8B_REG(0xE5,0X10,0X4A); Set_LCD_8B_REG(0xE5,0X11,0X4D); Set_LCD_8B_REG(0x36,0X01,0X01); Set_LCD_8B_REG(0x11,0X00,0X00); msleep(100); Set_LCD_8B_REG(0x29,0X00,0X00); msleep(100); Set_LCD_8B_REG(0x2a,0X00,0X00); Set_LCD_8B_REG(0x2a,0X01,0X00); Set_LCD_8B_REG(0x2a,0X02,0X01); Set_LCD_8B_REG(0x2a,0X03,0Xdf); msleep(100); Set_LCD_8B_REG(0x2b,0X00,0X00); Set_LCD_8B_REG(0x2b,0X01,0X00); Set_LCD_8B_REG(0x2b,0X02,0X03); Set_LCD_8B_REG(0x2b,0X03,0X1f); msleep(100); { uint32 fte = 0; Set_LCD_8B_REG(0x44,0x00,(fte>>8)&0xff); Set_LCD_8B_REG(0x44,0x01,(fte)&0xff); } Set_LCD_8B_REG(0x0E,0X00,0X80); Set_LCD_8B_REG(0x35,0X00,0X80); #if (480==H_VD) Set_LCD_8B_REG(0x36,0X00,0x00); #else Set_LCD_8B_REG(0x36,0X00,0x22); #endif Set_LCD_8B_REG(0x2c,0X00,-1); for(i=0; i<480*800; i++) { mcu_ioctl(MCU_WRDATA, 0x00000000); } #if 0 // for test while(1) { int i = 0; for(i=0; i<400*480; i++) mcu_ioctl(MCU_WRDATA, 0xffffffff); for(i=0; i<400*480; i++) mcu_ioctl(MCU_WRDATA, 0x00000000); msleep(1000); printk(">>>>> MCU_WRDATA ...\n"); for(i=0; i<400*480; i++) mcu_ioctl(MCU_WRDATA, 0x00000000); for(i=0; i<400*480; i++) mcu_ioctl(MCU_WRDATA, 0xffffffff); msleep(1000); printk(">>>>> MCU_WRDATA ...\n"); } #endif mcu_ioctl(MCU_SETBYPASS, 0); return 0; }