/* * Send Power Off commands to L4F00242T03 * */ static void lcd_poweroff(void) { const u16 slpin = 0x10; const u16 disoff = 0x28; ipu_channel_params_t param; if (!lcd_on) return; dev_dbg(lcd_dev, "turning off LCD\n"); if (lcd_spi) { msleep(60); spi_write(lcd_spi, (const u8 *)&disoff, 1); msleep(60); spi_write(lcd_spi, (const u8 *)&slpin, 1); } else { memset(¶m, 0, sizeof(param)); ipu_init_channel(DIRECT_ASYNC1, ¶m); ipu_disp_direct_write(DIRECT_ASYNC1, disoff, 0); msleep(60); ipu_disp_direct_write(DIRECT_ASYNC1, slpin, 0); msleep(1); ipu_uninit_channel(DIRECT_ASYNC1); } lcd_on = 0; }
/* * Send init commands to L4F00242T03 * */ static void lcd_init(void) { const u16 cmd[] = { 0x36, param(0), 0x3A, param(0x60) }; dev_dbg(lcd_dev, "initializing LCD\n"); if (lcd_spi) { spi_write(lcd_spi, (const u8 *)cmd, ARRAY_SIZE(cmd)); } else { ipu_disp_direct_write(DIRECT_ASYNC1, 0x36, 0); ipu_disp_direct_write(DIRECT_ASYNC1, 0x100, 0); ipu_disp_direct_write(DIRECT_ASYNC1, 0x3A, 0); ipu_disp_direct_write(DIRECT_ASYNC1, 0x160, 0); msleep(1); ipu_uninit_channel(DIRECT_ASYNC1); } }