Lines Matching full:lcd
3 * lms501kf03 TFT LCD panel driver.
10 #include <linux/lcd.h>
101 static int lms501kf03_spi_write_byte(struct lms501kf03 *lcd, int addr, int data) in lms501kf03_spi_write_byte() argument
116 return spi_sync(lcd->spi, &msg); in lms501kf03_spi_write_byte()
119 static int lms501kf03_spi_write(struct lms501kf03 *lcd, unsigned char address, in lms501kf03_spi_write() argument
122 return lms501kf03_spi_write_byte(lcd, address, command); in lms501kf03_spi_write()
125 static int lms501kf03_panel_send_sequence(struct lms501kf03 *lcd, in lms501kf03_panel_send_sequence() argument
133 ret = lms501kf03_spi_write(lcd, COMMAND_ONLY, wbuf[i]); in lms501kf03_panel_send_sequence()
135 ret = lms501kf03_spi_write(lcd, DATA_ONLY, wbuf[i]); in lms501kf03_panel_send_sequence()
144 static int lms501kf03_ldi_init(struct lms501kf03 *lcd) in lms501kf03_ldi_init() argument
178 ret = lms501kf03_panel_send_sequence(lcd, init_seq[i], in lms501kf03_ldi_init()
193 static int lms501kf03_ldi_enable(struct lms501kf03 *lcd) in lms501kf03_ldi_enable() argument
195 return lms501kf03_panel_send_sequence(lcd, seq_display_on, in lms501kf03_ldi_enable()
199 static int lms501kf03_ldi_disable(struct lms501kf03 *lcd) in lms501kf03_ldi_disable() argument
201 return lms501kf03_panel_send_sequence(lcd, seq_display_off, in lms501kf03_ldi_disable()
210 static int lms501kf03_power_on(struct lms501kf03 *lcd) in lms501kf03_power_on() argument
215 pd = lcd->lcd_pd; in lms501kf03_power_on()
218 dev_err(lcd->dev, "power_on is NULL.\n"); in lms501kf03_power_on()
222 pd->power_on(lcd->ld, 1); in lms501kf03_power_on()
226 dev_err(lcd->dev, "reset is NULL.\n"); in lms501kf03_power_on()
230 pd->reset(lcd->ld); in lms501kf03_power_on()
233 ret = lms501kf03_ldi_init(lcd); in lms501kf03_power_on()
235 dev_err(lcd->dev, "failed to initialize ldi.\n"); in lms501kf03_power_on()
239 ret = lms501kf03_ldi_enable(lcd); in lms501kf03_power_on()
241 dev_err(lcd->dev, "failed to enable ldi.\n"); in lms501kf03_power_on()
248 static int lms501kf03_power_off(struct lms501kf03 *lcd) in lms501kf03_power_off() argument
253 pd = lcd->lcd_pd; in lms501kf03_power_off()
255 ret = lms501kf03_ldi_disable(lcd); in lms501kf03_power_off()
257 dev_err(lcd->dev, "lcd setting failed.\n"); in lms501kf03_power_off()
263 pd->power_on(lcd->ld, 0); in lms501kf03_power_off()
268 static int lms501kf03_power(struct lms501kf03 *lcd, int power) in lms501kf03_power() argument
273 !lms501kf03_power_is_on(lcd->power)) in lms501kf03_power()
274 ret = lms501kf03_power_on(lcd); in lms501kf03_power()
276 lms501kf03_power_is_on(lcd->power)) in lms501kf03_power()
277 ret = lms501kf03_power_off(lcd); in lms501kf03_power()
280 lcd->power = power; in lms501kf03_power()
287 struct lms501kf03 *lcd = lcd_get_data(ld); in lms501kf03_get_power() local
289 return lcd->power; in lms501kf03_get_power()
294 struct lms501kf03 *lcd = lcd_get_data(ld); in lms501kf03_set_power() local
298 dev_err(lcd->dev, "power value should be 0, 1 or 4.\n"); in lms501kf03_set_power()
302 return lms501kf03_power(lcd, power); in lms501kf03_set_power()
312 struct lms501kf03 *lcd = NULL; in lms501kf03_probe() local
316 lcd = devm_kzalloc(&spi->dev, sizeof(struct lms501kf03), GFP_KERNEL); in lms501kf03_probe()
317 if (!lcd) in lms501kf03_probe()
320 /* lms501kf03 lcd panel uses 3-wire 9-bit SPI Mode. */ in lms501kf03_probe()
329 lcd->spi = spi; in lms501kf03_probe()
330 lcd->dev = &spi->dev; in lms501kf03_probe()
332 lcd->lcd_pd = dev_get_platdata(&spi->dev); in lms501kf03_probe()
333 if (!lcd->lcd_pd) { in lms501kf03_probe()
338 ld = devm_lcd_device_register(&spi->dev, "lms501kf03", &spi->dev, lcd, in lms501kf03_probe()
343 lcd->ld = ld; in lms501kf03_probe()
345 if (!lcd->lcd_pd->lcd_enabled) { in lms501kf03_probe()
347 * if lcd panel was off from bootloader then in lms501kf03_probe()
348 * current lcd status is powerdown and then in lms501kf03_probe()
349 * it enables lcd panel. in lms501kf03_probe()
351 lcd->power = LCD_POWER_OFF; in lms501kf03_probe()
353 lms501kf03_power(lcd, LCD_POWER_ON); in lms501kf03_probe()
355 lcd->power = LCD_POWER_ON; in lms501kf03_probe()
358 spi_set_drvdata(spi, lcd); in lms501kf03_probe()
367 struct lms501kf03 *lcd = spi_get_drvdata(spi); in lms501kf03_remove() local
369 lms501kf03_power(lcd, LCD_POWER_OFF); in lms501kf03_remove()
375 struct lms501kf03 *lcd = dev_get_drvdata(dev); in lms501kf03_suspend() local
377 dev_dbg(dev, "lcd->power = %d\n", lcd->power); in lms501kf03_suspend()
380 * when lcd panel is suspend, lcd panel becomes off in lms501kf03_suspend()
383 return lms501kf03_power(lcd, LCD_POWER_OFF); in lms501kf03_suspend()
388 struct lms501kf03 *lcd = dev_get_drvdata(dev); in lms501kf03_resume() local
390 lcd->power = LCD_POWER_OFF; in lms501kf03_resume()
392 return lms501kf03_power(lcd, LCD_POWER_ON); in lms501kf03_resume()
401 struct lms501kf03 *lcd = spi_get_drvdata(spi); in lms501kf03_shutdown() local
403 lms501kf03_power(lcd, LCD_POWER_OFF); in lms501kf03_shutdown()
419 MODULE_DESCRIPTION("lms501kf03 LCD Driver");