static int init_display(struct fbtft_par *par) { int ret; unsigned version; u8 save_mode; /* enable SPI interface by having CS and MOSI low during reset */ save_mode = par->spi->mode; par->spi->mode |= SPI_CS_HIGH; ret = spi_setup(par->spi); /* set CS inactive low */ if (ret) { dev_err(par->info->device, "Could not set SPI_CS_HIGH\n"); return ret; } write_reg(par, 0x00); /* make sure mode is set */ mdelay(50); par->fbtftops.reset(par); mdelay(1000); par->spi->mode = save_mode; ret = spi_setup(par->spi); if (ret) { dev_err(par->info->device, "Could not restore SPI mode\n"); return ret; } write_reg(par, 0x00); version = firmware_version(par); fbtft_par_dbg(DEBUG_INIT_DISPLAY, par, "Firmware version: %x.%02x\n", version >> 8, version & 0xFF); if (mode == 332) par->fbtftops.write_vmem = write_vmem_8bit; return 0; }
int main(int c, char **v) { usb_init(); usb_dev_handle *handle = device_open(); if(handle == NULL){ return 0; } switch(c){ case 1: echo(handle); printf("work time %3.1f second\n", ((double) clock() / (double) CLOCKS_PER_SEC)); fflush(stdout); system("pause"); break; case 2: firmware_version(handle); break; case 3: switch(v[1][0]){ case 'w': firmware_update(handle, v[2]); break; case 'r': firmware_download(handle, v[2]); break; case 'v': firmware_verify(handle, v[2]); break; case 'p':{ if(DEBUG == 0){ break; } int i = 0x1000; const char *ret = "test ok"; while(i != 0){ if(ppu_read(handle, i) == false){ ret = "test ng"; break; } if((i+1) % 100 == 0){ fprintf(stderr, "\r%05d", i+1); fflush(stderr); } i--; } puts(ret); }break; case 'd': if(DEBUG == 1){ write_memory(handle, REQUEST_FIRMWARE_PROGRAM, 0x200, 0x0000, 0, NULL); } break; } break; } usb_close(handle); return 0; }