static int lcm_writew(uint8_t reg, uint16_t val) { qspi_send(0x0, reg); qspi_send(0x1, val >> 8); qspi_send(0x1, val & 0xff); return 0; }
static int lcm_write_cmd(uint32_t reg, uint32_t data) { int ret = -1; ret = qspi_send(0x0, reg); if (ret) goto err_lcm_writeb; ret = qspi_send(0x1, data); if (ret) goto err_lcm_writeb; return 0; err_lcm_writeb: printk(KERN_ERR "%s: Failure on sending SPI commands", __func__); return ret; }
static int amoled_panel_unblank(struct msm_lcdc_panel_ops *panel_data) { LCMDBG("%s\n", __func__); wake_lock(&panel_idle_lock); table_sel_idx = 0; mutex_lock(&panel_lock); gamma_table_bank_select(); amoled_set_gamma_val(last_val); qspi_send(0, 0xef); qspi_send(1, 0xd0); qspi_send(1, 0xe8); lcm_write_cmd(0x14, 0x03); mutex_unlock(&panel_lock); wake_unlock(&panel_idle_lock); LCMDBG("%s: last_val = %d\n", __func__,last_val); led_trigger_event(amoled_lcd_backlight, LED_FULL); return 0; }
static int amoled_panel_unblank(struct platform_device *pdev) { LCMDBG("%s\n", __func__); if (samsung_oled_panel_init()) printk(KERN_ERR "samsung_oled_panel_init failed\n"); wake_lock(&panel_idle_lock); mutex_lock(&panel_lock); table_sel_idx = 0; gamma_table_bank_select(); amoled_set_gamma_val(last_val); qspi_send(0, 0xef); qspi_send(1, 0xd0); qspi_send(1, 0xe8); lcm_write_cmd(0x14, 0x03); mutex_unlock(&panel_lock); wake_unlock(&panel_idle_lock); LCMDBG("%s: last_val = %d\n", __func__,last_val); led_trigger_event(amoled_lcd_backlight, LED_FULL); return 0; }
// Uses QSPI to transmit 3 bytes to turn on LEDs for current g_row void led_write_row() { uint8_t *data = (uint8_t*)malloc(3 * sizeof(uint8_t)); data[0] = g_red[g_row]; data[1] = g_green[g_row]; data[2] = ~(1 << g_row); // OE high. Disables outputs MCF_GPIO_SETTH |= MCF_GPIO_SETTH_SETTH7; // STR low (must write 0 to clrth) MCF_GPIO_CLRTH &= ~(MCF_GPIO_SETTH_SETTH6); qspi_send(data, 3); // STR low to high will transfer bits in shift registers to storage registers MCF_GPIO_SETTH |= MCF_GPIO_SETTH_SETTH6; // OE low. Enables output MCF_GPIO_CLRTH &= ~(MCF_GPIO_SETTH_SETTH7); free(data); }
static int lcm_writeb(uint8_t reg, uint8_t val) { qspi_send(0x0, reg); qspi_send(0x1, val); return 0; }