static int kunlun_spi_suspend(struct spi_device *spi, pm_message_t mesg) { spi_send_cmd(spi,0x10); mdelay(10); return 0; }
static int kunlun_spi_resume(struct spi_device *spi) { /* reinitialize the panel */ spi_setup(spi); spi_send_cmd(spi,0x11); mdelay(120); return 0; }
static flash_error_t program(void *instance, flash_address_t addr, const uint8_t *pp, size_t n) { N25Q128Driver *devp = (N25Q128Driver *)instance; SPIDriver *spip = devp->config->spip; flash_error_t err; osalDbgAssert(devp->state == FLASH_READY, "invalid state"); #if N25Q128_SHARED_SPI == TRUE spiAcquireBus(spip); spiStart(spip, devp->config->spicfg); #endif devp->state = FLASH_ACTIVE; while (n > 0U) { uint8_t sts; /* Data size that can be written in a single program page operation.*/ size_t chunk = (size_t)(((addr | PAGE_MASK) + 1U) - addr); if (chunk > n) { chunk = n; } /* Enabling write operation.*/ spiSelect(spip); spi_send_cmd(devp, N25Q128_CMD_WRITE_ENABLE); spiUnselect(spip); (void) spiPolledExchange(spip, 0xFF); /* One frame delay.*/ /* Page program command.*/ spiSelect(spip); spi_send_cmd_addr(devp, N25Q128_CMD_PAGE_PROGRAM, addr); spiSend(spip, chunk, pp); spiUnselect(spip); (void) spiPolledExchange(spip, 0xFF); /* One frame delay.*/ /* Operation end waiting.*/ do { #if N25Q128_NICE_WAITING == TRUE osalThreadSleepMilliseconds(1); #endif /* Read status command.*/ spiSelect(spip); spi_send_cmd(devp, N25Q128_CMD_READ_STATUS_REGISTER); spiReceive(spip, 1, &sts); spiUnselect(spip); } while ((sts & N25Q128_STS_BUSY) != 0U); /* Checking for errors.*/ if ((sts & N25Q128_STS_ALL_ERRORS) != 0U) { /* Clearing status register.*/ (void) spiPolledExchange(spip, 0xFF); /* One frame delay.*/ spiSelect(spip); spi_send_cmd(devp, N25Q128_CMD_CLEAR_FLAG_STATUS_REGISTER); spiUnselect(spip); /* Program operation failed.*/ err = FLASH_PROGRAM_FAILURE; goto exit_error; } /* Next page.*/ addr += chunk; pp += chunk; n -= chunk; } /* Program operation succeeded.*/ err = FLASH_NO_ERROR; /* Common exit path for this function.*/ exit_error: devp->state = FLASH_READY; #if N25Q128_SHARED_SPI == TRUE spiReleaseBus(spip); #endif return err; }
static int init_lcd_panel(struct spi_device *spi) { //rm68040 //IOVCC=VCC=2.8V spi_send_cmd(spi, 0x11); mdelay(20); spi_send_cmd(spi, 0xB4); spi_send_data(spi, 0x10); spi_send_cmd(spi, 0xD0); spi_send_data(spi, 0x07);//02 spi_send_data(spi, 0x41); spi_send_data(spi, 0x1D);//13 spi_send_cmd(spi, 0xD1); spi_send_data(spi, 0x00);//00 spi_send_data(spi, 0x0e);//0X28 spi_send_data(spi, 0x0e);//19 spi_send_cmd(spi, 0xD2); spi_send_data(spi, 0x01); spi_send_data(spi, 0x11); spi_send_cmd(spi, 0xC0); spi_send_data(spi, 0x00); spi_send_data(spi, 0x3B); spi_send_data(spi, 0x00); spi_send_data(spi, 0x02);//12 spi_send_data(spi, 0x11);//01 spi_send_cmd(spi, 0xC1); spi_send_data(spi, 0x10); //spi_send_data(spi, 0x11); spi_send_data(spi, 0x13); spi_send_data(spi, 0x88); spi_send_cmd(spi, 0xC5); spi_send_data(spi, 0x02); //spi_send_data(spi, 0x07); spi_send_cmd(spi, 0xC6); spi_send_data(spi, 0x03); spi_send_cmd(spi, 0xC8); spi_send_data(spi, 0x02); spi_send_data(spi, 0x46); spi_send_data(spi, 0x14); spi_send_data(spi, 0x31); spi_send_data(spi, 0x0A); spi_send_data(spi, 0x04); spi_send_data(spi, 0x37); spi_send_data(spi, 0x24); spi_send_data(spi, 0x57); spi_send_data(spi, 0x13); spi_send_data(spi, 0x06); spi_send_data(spi, 0x0C); spi_send_cmd(spi, 0xF3); spi_send_data(spi, 0x24); spi_send_data(spi, 0x1A); spi_send_cmd(spi, 0xF6); spi_send_data(spi, 0x80); spi_send_cmd(spi, 0xF7); spi_send_data(spi, 0x80); spi_send_cmd(spi, 0x36); spi_send_data(spi, 0x0A); //spi_send_data(spi, 0x08); spi_send_cmd(spi, 0x3A); spi_send_data(spi, 0x66); spi_send_cmd(spi, 0x2A); spi_send_data(spi, 0x00); spi_send_data(spi, 0x00); spi_send_data(spi, 0x01); spi_send_data(spi, 0x3F); spi_send_cmd(spi, 0x2B); spi_send_data(spi, 0x00); spi_send_data(spi, 0x00); spi_send_data(spi, 0x01); spi_send_data(spi, 0xDF); mdelay(120); spi_send_cmd(spi, 0x29); //udelay(120000); //spi_send_cmd(spi, 0x2C); return 0; }