Lines Matching full:lcd
3 * Power control for Samsung LTV350QV Quarter VGA LCD Panel
10 #include <linux/lcd.h>
35 static int ltv350qv_write_reg(struct ltv350qv *lcd, u8 reg, u16 val) in ltv350qv_write_reg() argument
49 lcd->buffer[0] = LTV_OPC_INDEX; in ltv350qv_write_reg()
50 lcd->buffer[1] = 0x00; in ltv350qv_write_reg()
51 lcd->buffer[2] = reg & 0x7f; in ltv350qv_write_reg()
52 index_xfer.tx_buf = lcd->buffer; in ltv350qv_write_reg()
56 lcd->buffer[4] = LTV_OPC_DATA; in ltv350qv_write_reg()
57 lcd->buffer[5] = val >> 8; in ltv350qv_write_reg()
58 lcd->buffer[6] = val; in ltv350qv_write_reg()
59 value_xfer.tx_buf = lcd->buffer + 4; in ltv350qv_write_reg()
62 return spi_sync(lcd->spi, &msg); in ltv350qv_write_reg()
66 static int ltv350qv_power_on(struct ltv350qv *lcd) in ltv350qv_power_on() argument
71 if (ltv350qv_write_reg(lcd, LTV_PWRCTL1, 0x0000)) in ltv350qv_power_on()
76 if (ltv350qv_write_reg(lcd, LTV_PWRCTL1, LTV_VCOM_DISABLE)) in ltv350qv_power_on()
78 if (ltv350qv_write_reg(lcd, LTV_PWRCTL2, LTV_VCOML_ENABLE)) in ltv350qv_power_on()
82 if (ltv350qv_write_reg(lcd, LTV_PWRCTL1, in ltv350qv_power_on()
90 ret = ltv350qv_write_reg(lcd, LTV_IFCTL, in ltv350qv_power_on()
92 ret |= ltv350qv_write_reg(lcd, LTV_DATACTL, in ltv350qv_power_on()
95 ret |= ltv350qv_write_reg(lcd, LTV_ENTRY_MODE, in ltv350qv_power_on()
101 ret |= ltv350qv_write_reg(lcd, LTV_GATECTL1, LTV_CLW(3)); in ltv350qv_power_on()
102 ret |= ltv350qv_write_reg(lcd, LTV_GATECTL2, in ltv350qv_power_on()
104 ret |= ltv350qv_write_reg(lcd, LTV_VBP, 0x000a); in ltv350qv_power_on()
105 ret |= ltv350qv_write_reg(lcd, LTV_HBP, 0x0021); in ltv350qv_power_on()
106 ret |= ltv350qv_write_reg(lcd, LTV_SOTCTL, LTV_SDT(3) | LTV_EQ(0)); in ltv350qv_power_on()
107 ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(0), 0x0103); in ltv350qv_power_on()
108 ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(1), 0x0301); in ltv350qv_power_on()
109 ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(2), 0x1f0f); in ltv350qv_power_on()
110 ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(3), 0x1f0f); in ltv350qv_power_on()
111 ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(4), 0x0707); in ltv350qv_power_on()
112 ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(5), 0x0307); in ltv350qv_power_on()
113 ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(6), 0x0707); in ltv350qv_power_on()
114 ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(7), 0x0000); in ltv350qv_power_on()
115 ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(8), 0x0004); in ltv350qv_power_on()
116 ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(9), 0x0000); in ltv350qv_power_on()
124 ret = ltv350qv_write_reg(lcd, LTV_PWRCTL1, in ltv350qv_power_on()
128 ret |= ltv350qv_write_reg(lcd, LTV_GATECTL2, in ltv350qv_power_on()
142 ltv350qv_write_reg(lcd, LTV_PWRCTL1, in ltv350qv_power_on()
145 ltv350qv_write_reg(lcd, LTV_GATECTL2, in ltv350qv_power_on()
150 ltv350qv_write_reg(lcd, LTV_PWRCTL2, 0x0000); in ltv350qv_power_on()
153 ltv350qv_write_reg(lcd, LTV_PWRCTL1, LTV_VCOM_DISABLE); in ltv350qv_power_on()
157 static int ltv350qv_power_off(struct ltv350qv *lcd) in ltv350qv_power_off() argument
162 ret = ltv350qv_write_reg(lcd, LTV_PWRCTL1, in ltv350qv_power_off()
166 ret |= ltv350qv_write_reg(lcd, LTV_GATECTL2, in ltv350qv_power_off()
170 ret |= ltv350qv_write_reg(lcd, LTV_PWRCTL2, 0x0000); in ltv350qv_power_off()
176 ret |= ltv350qv_write_reg(lcd, LTV_PWRCTL1, LTV_VCOM_DISABLE); in ltv350qv_power_off()
190 static int ltv350qv_power(struct ltv350qv *lcd, int power) in ltv350qv_power() argument
194 if (POWER_IS_ON(power) && !POWER_IS_ON(lcd->power)) in ltv350qv_power()
195 ret = ltv350qv_power_on(lcd); in ltv350qv_power()
196 else if (!POWER_IS_ON(power) && POWER_IS_ON(lcd->power)) in ltv350qv_power()
197 ret = ltv350qv_power_off(lcd); in ltv350qv_power()
200 lcd->power = power; in ltv350qv_power()
207 struct ltv350qv *lcd = lcd_get_data(ld); in ltv350qv_set_power() local
209 return ltv350qv_power(lcd, power); in ltv350qv_set_power()
214 struct ltv350qv *lcd = lcd_get_data(ld); in ltv350qv_get_power() local
216 return lcd->power; in ltv350qv_get_power()
226 struct ltv350qv *lcd; in ltv350qv_probe() local
230 lcd = devm_kzalloc(&spi->dev, sizeof(struct ltv350qv), GFP_KERNEL); in ltv350qv_probe()
231 if (!lcd) in ltv350qv_probe()
234 lcd->spi = spi; in ltv350qv_probe()
235 lcd->power = LCD_POWER_OFF; in ltv350qv_probe()
236 lcd->buffer = devm_kzalloc(&spi->dev, 8, GFP_KERNEL); in ltv350qv_probe()
237 if (!lcd->buffer) in ltv350qv_probe()
240 ld = devm_lcd_device_register(&spi->dev, "ltv350qv", &spi->dev, lcd, in ltv350qv_probe()
245 lcd->ld = ld; in ltv350qv_probe()
247 ret = ltv350qv_power(lcd, LCD_POWER_ON); in ltv350qv_probe()
251 spi_set_drvdata(spi, lcd); in ltv350qv_probe()
258 struct ltv350qv *lcd = spi_get_drvdata(spi); in ltv350qv_remove() local
260 ltv350qv_power(lcd, LCD_POWER_OFF); in ltv350qv_remove()
266 struct ltv350qv *lcd = dev_get_drvdata(dev); in ltv350qv_suspend() local
268 return ltv350qv_power(lcd, LCD_POWER_OFF); in ltv350qv_suspend()
273 struct ltv350qv *lcd = dev_get_drvdata(dev); in ltv350qv_resume() local
275 return ltv350qv_power(lcd, LCD_POWER_ON); in ltv350qv_resume()
284 struct ltv350qv *lcd = spi_get_drvdata(spi); in ltv350qv_shutdown() local
286 ltv350qv_power(lcd, LCD_POWER_OFF); in ltv350qv_shutdown()
303 MODULE_DESCRIPTION("Samsung LTV350QV LCD Driver");