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;
}
Esempio n. 3
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;
}