Lines Matching full:lcd
3 * ams369fg06 AMOLED LCD panel driver.
13 #include <linux/lcd.h>
157 static int ams369fg06_spi_write_byte(struct ams369fg06 *lcd, int addr, int data) in ams369fg06_spi_write_byte() argument
172 return spi_sync(lcd->spi, &msg); in ams369fg06_spi_write_byte()
175 static int ams369fg06_spi_write(struct ams369fg06 *lcd, unsigned char address, in ams369fg06_spi_write() argument
181 ret = ams369fg06_spi_write_byte(lcd, 0x70, address); in ams369fg06_spi_write()
183 ret = ams369fg06_spi_write_byte(lcd, 0x72, command); in ams369fg06_spi_write()
188 static int ams369fg06_panel_send_sequence(struct ams369fg06 *lcd, in ams369fg06_panel_send_sequence() argument
195 ret = ams369fg06_spi_write(lcd, wbuf[i], wbuf[i+1]); in ams369fg06_panel_send_sequence()
207 static int _ams369fg06_gamma_ctl(struct ams369fg06 *lcd, in _ams369fg06_gamma_ctl() argument
214 ret = ams369fg06_spi_write(lcd, 0x40 + i, gamma[i]); in _ams369fg06_gamma_ctl()
215 ret = ams369fg06_spi_write(lcd, 0x50 + i, gamma[i+7*1]); in _ams369fg06_gamma_ctl()
216 ret = ams369fg06_spi_write(lcd, 0x60 + i, gamma[i+7*2]); in _ams369fg06_gamma_ctl()
218 dev_err(lcd->dev, "failed to set gamma table.\n"); in _ams369fg06_gamma_ctl()
227 static int ams369fg06_gamma_ctl(struct ams369fg06 *lcd, int brightness) in ams369fg06_gamma_ctl() argument
243 ret = _ams369fg06_gamma_ctl(lcd, gamma_table.gamma_22_table[gamma]); in ams369fg06_gamma_ctl()
248 static int ams369fg06_ldi_init(struct ams369fg06 *lcd) in ams369fg06_ldi_init() argument
257 ret = ams369fg06_panel_send_sequence(lcd, init_seq[i]); in ams369fg06_ldi_init()
265 static int ams369fg06_ldi_enable(struct ams369fg06 *lcd) in ams369fg06_ldi_enable() argument
274 ret = ams369fg06_panel_send_sequence(lcd, init_seq[i]); in ams369fg06_ldi_enable()
282 static int ams369fg06_ldi_disable(struct ams369fg06 *lcd) in ams369fg06_ldi_disable() argument
292 ret = ams369fg06_panel_send_sequence(lcd, init_seq[i]); in ams369fg06_ldi_disable()
305 static int ams369fg06_power_on(struct ams369fg06 *lcd) in ams369fg06_power_on() argument
311 pd = lcd->lcd_pd; in ams369fg06_power_on()
312 bd = lcd->bd; in ams369fg06_power_on()
315 pd->power_on(lcd->ld, 1); in ams369fg06_power_on()
320 dev_err(lcd->dev, "reset is NULL.\n"); in ams369fg06_power_on()
324 pd->reset(lcd->ld); in ams369fg06_power_on()
327 ret = ams369fg06_ldi_init(lcd); in ams369fg06_power_on()
329 dev_err(lcd->dev, "failed to initialize ldi.\n"); in ams369fg06_power_on()
333 ret = ams369fg06_ldi_enable(lcd); in ams369fg06_power_on()
335 dev_err(lcd->dev, "failed to enable ldi.\n"); in ams369fg06_power_on()
340 ret = ams369fg06_gamma_ctl(lcd, bd->props.brightness); in ams369fg06_power_on()
342 dev_err(lcd->dev, "lcd gamma setting failed.\n"); in ams369fg06_power_on()
349 static int ams369fg06_power_off(struct ams369fg06 *lcd) in ams369fg06_power_off() argument
354 pd = lcd->lcd_pd; in ams369fg06_power_off()
356 ret = ams369fg06_ldi_disable(lcd); in ams369fg06_power_off()
358 dev_err(lcd->dev, "lcd setting failed.\n"); in ams369fg06_power_off()
365 pd->power_on(lcd->ld, 0); in ams369fg06_power_off()
370 static int ams369fg06_power(struct ams369fg06 *lcd, int power) in ams369fg06_power() argument
375 !ams369fg06_power_is_on(lcd->power)) in ams369fg06_power()
376 ret = ams369fg06_power_on(lcd); in ams369fg06_power()
378 ams369fg06_power_is_on(lcd->power)) in ams369fg06_power()
379 ret = ams369fg06_power_off(lcd); in ams369fg06_power()
382 lcd->power = power; in ams369fg06_power()
389 struct ams369fg06 *lcd = lcd_get_data(ld); in ams369fg06_get_power() local
391 return lcd->power; in ams369fg06_get_power()
396 struct ams369fg06 *lcd = lcd_get_data(ld); in ams369fg06_set_power() local
400 dev_err(lcd->dev, "power value should be 0, 1 or 4.\n"); in ams369fg06_set_power()
404 return ams369fg06_power(lcd, power); in ams369fg06_set_power()
411 struct ams369fg06 *lcd = bl_get_data(bd); in ams369fg06_set_brightness() local
415 dev_err(&bd->dev, "lcd brightness should be %d to %d.\n", in ams369fg06_set_brightness()
420 ret = ams369fg06_gamma_ctl(lcd, bd->props.brightness); in ams369fg06_set_brightness()
422 dev_err(&bd->dev, "lcd brightness setting failed.\n"); in ams369fg06_set_brightness()
441 struct ams369fg06 *lcd = NULL; in ams369fg06_probe() local
446 lcd = devm_kzalloc(&spi->dev, sizeof(struct ams369fg06), GFP_KERNEL); in ams369fg06_probe()
447 if (!lcd) in ams369fg06_probe()
450 /* ams369fg06 lcd panel uses 3-wire 16bits SPI Mode. */ in ams369fg06_probe()
459 lcd->spi = spi; in ams369fg06_probe()
460 lcd->dev = &spi->dev; in ams369fg06_probe()
462 lcd->lcd_pd = dev_get_platdata(&spi->dev); in ams369fg06_probe()
463 if (!lcd->lcd_pd) { in ams369fg06_probe()
468 ld = devm_lcd_device_register(&spi->dev, "ams369fg06", &spi->dev, lcd, in ams369fg06_probe()
473 lcd->ld = ld; in ams369fg06_probe()
480 &spi->dev, lcd, in ams369fg06_probe()
486 lcd->bd = bd; in ams369fg06_probe()
488 if (!lcd->lcd_pd->lcd_enabled) { in ams369fg06_probe()
490 * if lcd panel was off from bootloader then in ams369fg06_probe()
491 * current lcd status is powerdown and then in ams369fg06_probe()
492 * it enables lcd panel. in ams369fg06_probe()
494 lcd->power = BACKLIGHT_POWER_OFF; in ams369fg06_probe()
496 ams369fg06_power(lcd, BACKLIGHT_POWER_ON); in ams369fg06_probe()
498 lcd->power = BACKLIGHT_POWER_ON; in ams369fg06_probe()
501 spi_set_drvdata(spi, lcd); in ams369fg06_probe()
510 struct ams369fg06 *lcd = spi_get_drvdata(spi); in ams369fg06_remove() local
512 ams369fg06_power(lcd, BACKLIGHT_POWER_OFF); in ams369fg06_remove()
518 struct ams369fg06 *lcd = dev_get_drvdata(dev); in ams369fg06_suspend() local
520 dev_dbg(dev, "lcd->power = %d\n", lcd->power); in ams369fg06_suspend()
523 * when lcd panel is suspend, lcd panel becomes off in ams369fg06_suspend()
526 return ams369fg06_power(lcd, BACKLIGHT_POWER_OFF); in ams369fg06_suspend()
531 struct ams369fg06 *lcd = dev_get_drvdata(dev); in ams369fg06_resume() local
533 lcd->power = BACKLIGHT_POWER_OFF; in ams369fg06_resume()
535 return ams369fg06_power(lcd, BACKLIGHT_POWER_ON); in ams369fg06_resume()
544 struct ams369fg06 *lcd = spi_get_drvdata(spi); in ams369fg06_shutdown() local
546 ams369fg06_power(lcd, BACKLIGHT_POWER_OFF); in ams369fg06_shutdown()
562 MODULE_DESCRIPTION("ams369fg06 LCD Driver");