Lines Matching refs:spi

20 #include <linux/spi/spi.h>
139 struct spi_device *spi;
146 * @spi: spi device
149 static int ili922x_read_status(struct spi_device *spi, u16 *rs)
162 CHECK_FREQ_REG(spi, &xfer);
176 ret = spi_sync(spi, &msg);
178 dev_dbg(&spi->dev, "Error sending SPI message 0x%x", ret);
188 * @spi: spi device
192 static int ili922x_read(struct spi_device *spi, u8 reg, u16 *rx)
206 CHECK_FREQ_REG(spi, &xfer_regindex);
227 CHECK_FREQ_REG(spi, &xfer_regvalue);
230 ret = spi_sync(spi, &msg);
232 dev_dbg(&spi->dev, "Error sending SPI message 0x%x", ret);
242 * @spi: struct spi_device *
246 static int ili922x_write(struct spi_device *spi, u8 reg, u16 value)
261 CHECK_FREQ_REG(spi, &xfer_regindex);
271 ret = spi_sync(spi, &msg);
283 CHECK_FREQ_REG(spi, &xfer_regvalue);
287 ret = spi_sync(spi, &msg);
289 dev_err(&spi->dev, "Error sending SPI message 0x%x", ret);
299 * @spi: pointer to an SPI device
301 static void ili922x_reg_dump(struct spi_device *spi)
306 dev_dbg(&spi->dev, "ILI922x configuration registers:\n");
309 ili922x_read(spi, reg, &rx);
310 dev_dbg(&spi->dev, "reg @ 0x%02X: 0x%04X\n", reg, rx);
314 static inline void ili922x_reg_dump(struct spi_device *spi) {}
319 * @spi: spi device
321 static void set_write_to_gram_reg(struct spi_device *spi)
341 spi_sync(spi, &msg);
346 * @spi: spi device
352 static int ili922x_poweron(struct spi_device *spi)
357 ret = ili922x_write(spi, REG_POWER_CONTROL_1, 0x0000);
359 ret += ili922x_write(spi, REG_POWER_CONTROL_2, 0x0000);
360 ret += ili922x_write(spi, REG_POWER_CONTROL_3, 0x0000);
362 ret += ili922x_write(spi, REG_POWER_CONTROL_4, 0x0000);
365 ret += ili922x_write(spi, 0x56, 0x080F);
366 ret += ili922x_write(spi, REG_POWER_CONTROL_1, 0x4240);
368 ret += ili922x_write(spi, REG_POWER_CONTROL_2, 0x0000);
369 ret += ili922x_write(spi, REG_POWER_CONTROL_3, 0x0014);
371 ret += ili922x_write(spi, REG_POWER_CONTROL_4, 0x1319);
379 * @spi: spi device
381 static int ili922x_poweroff(struct spi_device *spi)
386 ret = ili922x_write(spi, REG_POWER_CONTROL_1, 0x0000);
388 ret += ili922x_write(spi, REG_POWER_CONTROL_2, 0x0000);
389 ret += ili922x_write(spi, REG_POWER_CONTROL_3, 0x0000);
391 ret += ili922x_write(spi, REG_POWER_CONTROL_4, 0x0000);
400 * @spi: spi device
402 static void ili922x_display_init(struct spi_device *spi)
404 ili922x_write(spi, REG_START_OSCILLATION, 1);
406 ili922x_write(spi, REG_DRIVER_OUTPUT_CONTROL, 0x691B);
407 ili922x_write(spi, REG_LCD_AC_DRIVEING_CONTROL, 0x0700);
408 ili922x_write(spi, REG_ENTRY_MODE, 0x1030);
409 ili922x_write(spi, REG_COMPARE_1, 0x0000);
410 ili922x_write(spi, REG_COMPARE_2, 0x0000);
411 ili922x_write(spi, REG_DISPLAY_CONTROL_1, 0x0037);
412 ili922x_write(spi, REG_DISPLAY_CONTROL_2, 0x0202);
413 ili922x_write(spi, REG_DISPLAY_CONTROL_3, 0x0000);
414 ili922x_write(spi, REG_FRAME_CYCLE_CONTROL, 0x0000);
417 ili922x_write(spi, REG_EXT_INTF_CONTROL, 0x0110);
419 ili922x_poweron(spi);
421 ili922x_write(spi, REG_GAMMA_CONTROL_1, 0x0302);
422 ili922x_write(spi, REG_GAMMA_CONTROL_2, 0x0407);
423 ili922x_write(spi, REG_GAMMA_CONTROL_3, 0x0304);
424 ili922x_write(spi, REG_GAMMA_CONTROL_4, 0x0203);
425 ili922x_write(spi, REG_GAMMA_CONTROL_5, 0x0706);
426 ili922x_write(spi, REG_GAMMA_CONTROL_6, 0x0407);
427 ili922x_write(spi, REG_GAMMA_CONTROL_7, 0x0706);
428 ili922x_write(spi, REG_GAMMA_CONTROL_8, 0x0000);
429 ili922x_write(spi, REG_GAMMA_CONTROL_9, 0x0C06);
430 ili922x_write(spi, REG_GAMMA_CONTROL_10, 0x0F00);
431 ili922x_write(spi, REG_RAM_ADDRESS_SET, 0x0000);
432 ili922x_write(spi, REG_GATE_SCAN_CONTROL, 0x0000);
433 ili922x_write(spi, REG_VERT_SCROLL_CONTROL, 0x0000);
434 ili922x_write(spi, REG_FIRST_SCREEN_DRIVE_POS, 0xDB00);
435 ili922x_write(spi, REG_SECOND_SCREEN_DRIVE_POS, 0xDB00);
436 ili922x_write(spi, REG_RAM_ADDR_POS_H, 0xAF00);
437 ili922x_write(spi, REG_RAM_ADDR_POS_V, 0xDB00);
438 ili922x_reg_dump(spi);
439 set_write_to_gram_reg(spi);
447 ret = ili922x_poweron(lcd->spi);
449 ret = ili922x_poweroff(lcd->spi);
476 static int ili922x_probe(struct spi_device *spi)
483 ili = devm_kzalloc(&spi->dev, sizeof(*ili), GFP_KERNEL);
487 ili->spi = spi;
488 spi_set_drvdata(spi, ili);
491 ret = ili922x_read(spi, REG_DRIVER_CODE_READ, &reg);
493 dev_err(&spi->dev,
499 dev_info(&spi->dev, "ILI%x found, SPI freq %d, mode %d\n",
500 reg, spi->max_speed_hz, spi->mode);
502 ret = ili922x_read_status(spi, &reg);
504 dev_err(&spi->dev, "reading RS failed...\n");
508 dev_dbg(&spi->dev, "status: 0x%x\n", reg);
510 ili922x_display_init(spi);
514 lcd = devm_lcd_device_register(&spi->dev, "ili922xlcd", &spi->dev, ili,
517 dev_err(&spi->dev, "cannot register LCD\n");
522 spi_set_drvdata(spi, ili);
529 static int ili922x_remove(struct spi_device *spi)
531 ili922x_poweroff(spi);