Lines Matching refs:spi

141 	struct spi_device *spi;  member
151 static int ili922x_read_status(struct spi_device *spi, u16 *rs) in ili922x_read_status() argument
164 CHECK_FREQ_REG(spi, &xfer); in ili922x_read_status()
178 ret = spi_sync(spi, &msg); in ili922x_read_status()
180 dev_dbg(&spi->dev, "Error sending SPI message 0x%x", ret); in ili922x_read_status()
194 static int ili922x_read(struct spi_device *spi, u8 reg, u16 *rx) in ili922x_read() argument
208 CHECK_FREQ_REG(spi, &xfer_regindex); in ili922x_read()
229 CHECK_FREQ_REG(spi, &xfer_regvalue); in ili922x_read()
232 ret = spi_sync(spi, &msg); in ili922x_read()
234 dev_dbg(&spi->dev, "Error sending SPI message 0x%x", ret); in ili922x_read()
248 static int ili922x_write(struct spi_device *spi, u8 reg, u16 value) in ili922x_write() argument
263 CHECK_FREQ_REG(spi, &xfer_regindex); in ili922x_write()
273 ret = spi_sync(spi, &msg); in ili922x_write()
286 CHECK_FREQ_REG(spi, &xfer_regvalue); in ili922x_write()
290 ret = spi_sync(spi, &msg); in ili922x_write()
292 dev_err(&spi->dev, "Error sending SPI message 0x%x", ret); in ili922x_write()
302 static void ili922x_reg_dump(struct spi_device *spi) in ili922x_reg_dump() argument
307 dev_dbg(&spi->dev, "ILI922x configuration registers:\n"); in ili922x_reg_dump()
310 ili922x_read(spi, reg, &rx); in ili922x_reg_dump()
311 dev_dbg(&spi->dev, "reg @ 0x%02X: 0x%04X\n", reg, rx); in ili922x_reg_dump()
315 static inline void ili922x_reg_dump(struct spi_device *spi) {} in ili922x_reg_dump() argument
322 static void set_write_to_gram_reg(struct spi_device *spi) in set_write_to_gram_reg() argument
342 spi_sync(spi, &msg); in set_write_to_gram_reg()
353 static int ili922x_poweron(struct spi_device *spi) in ili922x_poweron() argument
358 ret = ili922x_write(spi, REG_POWER_CONTROL_1, 0x0000); in ili922x_poweron()
360 ret += ili922x_write(spi, REG_POWER_CONTROL_2, 0x0000); in ili922x_poweron()
361 ret += ili922x_write(spi, REG_POWER_CONTROL_3, 0x0000); in ili922x_poweron()
363 ret += ili922x_write(spi, REG_POWER_CONTROL_4, 0x0000); in ili922x_poweron()
366 ret += ili922x_write(spi, 0x56, 0x080F); in ili922x_poweron()
367 ret += ili922x_write(spi, REG_POWER_CONTROL_1, 0x4240); in ili922x_poweron()
369 ret += ili922x_write(spi, REG_POWER_CONTROL_2, 0x0000); in ili922x_poweron()
370 ret += ili922x_write(spi, REG_POWER_CONTROL_3, 0x0014); in ili922x_poweron()
372 ret += ili922x_write(spi, REG_POWER_CONTROL_4, 0x1319); in ili922x_poweron()
382 static int ili922x_poweroff(struct spi_device *spi) in ili922x_poweroff() argument
387 ret = ili922x_write(spi, REG_POWER_CONTROL_1, 0x0000); in ili922x_poweroff()
389 ret += ili922x_write(spi, REG_POWER_CONTROL_2, 0x0000); in ili922x_poweroff()
390 ret += ili922x_write(spi, REG_POWER_CONTROL_3, 0x0000); in ili922x_poweroff()
392 ret += ili922x_write(spi, REG_POWER_CONTROL_4, 0x0000); in ili922x_poweroff()
403 static void ili922x_display_init(struct spi_device *spi) in ili922x_display_init() argument
405 ili922x_write(spi, REG_START_OSCILLATION, 1); in ili922x_display_init()
407 ili922x_write(spi, REG_DRIVER_OUTPUT_CONTROL, 0x691B); in ili922x_display_init()
408 ili922x_write(spi, REG_LCD_AC_DRIVEING_CONTROL, 0x0700); in ili922x_display_init()
409 ili922x_write(spi, REG_ENTRY_MODE, 0x1030); in ili922x_display_init()
410 ili922x_write(spi, REG_COMPARE_1, 0x0000); in ili922x_display_init()
411 ili922x_write(spi, REG_COMPARE_2, 0x0000); in ili922x_display_init()
412 ili922x_write(spi, REG_DISPLAY_CONTROL_1, 0x0037); in ili922x_display_init()
413 ili922x_write(spi, REG_DISPLAY_CONTROL_2, 0x0202); in ili922x_display_init()
414 ili922x_write(spi, REG_DISPLAY_CONTROL_3, 0x0000); in ili922x_display_init()
415 ili922x_write(spi, REG_FRAME_CYCLE_CONTROL, 0x0000); in ili922x_display_init()
418 ili922x_write(spi, REG_EXT_INTF_CONTROL, 0x0110); in ili922x_display_init()
420 ili922x_poweron(spi); in ili922x_display_init()
422 ili922x_write(spi, REG_GAMMA_CONTROL_1, 0x0302); in ili922x_display_init()
423 ili922x_write(spi, REG_GAMMA_CONTROL_2, 0x0407); in ili922x_display_init()
424 ili922x_write(spi, REG_GAMMA_CONTROL_3, 0x0304); in ili922x_display_init()
425 ili922x_write(spi, REG_GAMMA_CONTROL_4, 0x0203); in ili922x_display_init()
426 ili922x_write(spi, REG_GAMMA_CONTROL_5, 0x0706); in ili922x_display_init()
427 ili922x_write(spi, REG_GAMMA_CONTROL_6, 0x0407); in ili922x_display_init()
428 ili922x_write(spi, REG_GAMMA_CONTROL_7, 0x0706); in ili922x_display_init()
429 ili922x_write(spi, REG_GAMMA_CONTROL_8, 0x0000); in ili922x_display_init()
430 ili922x_write(spi, REG_GAMMA_CONTROL_9, 0x0C06); in ili922x_display_init()
431 ili922x_write(spi, REG_GAMMA_CONTROL_10, 0x0F00); in ili922x_display_init()
432 ili922x_write(spi, REG_RAM_ADDRESS_SET, 0x0000); in ili922x_display_init()
433 ili922x_write(spi, REG_GATE_SCAN_CONTROL, 0x0000); in ili922x_display_init()
434 ili922x_write(spi, REG_VERT_SCROLL_CONTROL, 0x0000); in ili922x_display_init()
435 ili922x_write(spi, REG_FIRST_SCREEN_DRIVE_POS, 0xDB00); in ili922x_display_init()
436 ili922x_write(spi, REG_SECOND_SCREEN_DRIVE_POS, 0xDB00); in ili922x_display_init()
437 ili922x_write(spi, REG_RAM_ADDR_POS_H, 0xAF00); in ili922x_display_init()
438 ili922x_write(spi, REG_RAM_ADDR_POS_V, 0xDB00); in ili922x_display_init()
439 ili922x_reg_dump(spi); in ili922x_display_init()
440 set_write_to_gram_reg(spi); in ili922x_display_init()
448 ret = ili922x_poweron(lcd->spi); in ili922x_lcd_power()
450 ret = ili922x_poweroff(lcd->spi); in ili922x_lcd_power()
477 static int ili922x_probe(struct spi_device *spi) in ili922x_probe() argument
484 ili = devm_kzalloc(&spi->dev, sizeof(*ili), GFP_KERNEL); in ili922x_probe()
488 ili->spi = spi; in ili922x_probe()
489 spi_set_drvdata(spi, ili); in ili922x_probe()
492 ret = ili922x_read(spi, REG_DRIVER_CODE_READ, &reg); in ili922x_probe()
494 dev_err(&spi->dev, in ili922x_probe()
500 dev_info(&spi->dev, "ILI%x found, SPI freq %d, mode %d\n", in ili922x_probe()
501 reg, spi->max_speed_hz, spi->mode); in ili922x_probe()
503 ret = ili922x_read_status(spi, &reg); in ili922x_probe()
505 dev_err(&spi->dev, "reading RS failed...\n"); in ili922x_probe()
509 dev_dbg(&spi->dev, "status: 0x%x\n", reg); in ili922x_probe()
511 ili922x_display_init(spi); in ili922x_probe()
515 lcd = devm_lcd_device_register(&spi->dev, "ili922xlcd", &spi->dev, ili, in ili922x_probe()
518 dev_err(&spi->dev, "cannot register LCD\n"); in ili922x_probe()
523 spi_set_drvdata(spi, ili); in ili922x_probe()
530 static int ili922x_remove(struct spi_device *spi) in ili922x_remove() argument
532 ili922x_poweroff(spi); in ili922x_remove()