Lines Matching +full:vcom +full:- +full:mode

1 // SPDX-License-Identifier: GPL-2.0-only
3 * tdo24m - SPI-based drivers for Toppoly TDO24M series LCD panels
32 int (*adj_mode)(struct tdo24m *lcd, int mode);
36 int mode; member
44 #define CMD_NULL (-1)
146 CMD1(0xba, 0x01), /* Display mode (1) */
147 CMD1(0xbb, 0x00), /* Display mode (2) */
148 CMD1(0x3a, 0x60), /* Display mode 18-bit RGB */
151 CMD1(0xb2, 0x33), /* Booster mode setup */
155 CMD1(0xb6, 0x40), /* VCOM voltage */
176 struct spi_transfer *x = &lcd->xfer; in tdo24m_writes()
182 if (!lcd->color_invert && *p == CMD0(0x21)) in tdo24m_writes()
187 data = *p << (7 - nparams); in tdo24m_writes()
190 lcd->buf[0] = (data >> 8) & 0xff; in tdo24m_writes()
191 lcd->buf[1] = data & 0xff; in tdo24m_writes()
194 lcd->buf[0] = (data >> 16) & 0xff; in tdo24m_writes()
195 lcd->buf[1] = (data >> 8) & 0xff; in tdo24m_writes()
196 lcd->buf[2] = data & 0xff; in tdo24m_writes()
199 lcd->buf[0] = (data >> 24) & 0xff; in tdo24m_writes()
200 lcd->buf[1] = (data >> 16) & 0xff; in tdo24m_writes()
201 lcd->buf[2] = (data >> 8) & 0xff; in tdo24m_writes()
202 lcd->buf[3] = data & 0xff; in tdo24m_writes()
207 x->len = nparams + 2; in tdo24m_writes()
208 err = spi_sync(lcd->spi_dev, &lcd->msg); in tdo24m_writes()
216 static int tdo24m_adj_mode(struct tdo24m *lcd, int mode) in tdo24m_adj_mode() argument
218 switch (mode) { in tdo24m_adj_mode()
230 return -EINVAL; in tdo24m_adj_mode()
233 lcd->mode = mode; in tdo24m_adj_mode()
237 static int tdo35s_adj_mode(struct tdo24m *lcd, int mode) in tdo35s_adj_mode() argument
239 switch (mode) { in tdo35s_adj_mode()
251 return -EINVAL; in tdo35s_adj_mode()
254 lcd->mode = mode; in tdo35s_adj_mode()
270 err = lcd->adj_mode(lcd, lcd->mode); in tdo24m_power_on()
284 if (POWER_IS_ON(power) && !POWER_IS_ON(lcd->power)) in tdo24m_power()
286 else if (!POWER_IS_ON(power) && POWER_IS_ON(lcd->power)) in tdo24m_power()
290 lcd->power = power; in tdo24m_power()
307 return lcd->power; in tdo24m_get_power()
313 int mode = MODE_QVGA; in tdo24m_set_mode() local
316 mode = MODE_VGA; in tdo24m_set_mode()
318 if (lcd->mode == mode) in tdo24m_set_mode()
321 return lcd->adj_mode(lcd, mode); in tdo24m_set_mode()
339 pdata = dev_get_platdata(&spi->dev); in tdo24m_probe()
341 model = pdata->model; in tdo24m_probe()
345 spi->bits_per_word = 8; in tdo24m_probe()
346 spi->mode = SPI_MODE_3; in tdo24m_probe()
351 lcd = devm_kzalloc(&spi->dev, sizeof(struct tdo24m), GFP_KERNEL); in tdo24m_probe()
353 return -ENOMEM; in tdo24m_probe()
355 lcd->spi_dev = spi; in tdo24m_probe()
356 lcd->power = LCD_POWER_OFF; in tdo24m_probe()
357 lcd->mode = MODE_VGA; /* default to VGA */ in tdo24m_probe()
359 lcd->buf = devm_kzalloc(&spi->dev, TDO24M_SPI_BUFF_SIZE, GFP_KERNEL); in tdo24m_probe()
360 if (lcd->buf == NULL) in tdo24m_probe()
361 return -ENOMEM; in tdo24m_probe()
363 m = &lcd->msg; in tdo24m_probe()
364 x = &lcd->xfer; in tdo24m_probe()
368 x->cs_change = 0; in tdo24m_probe()
369 x->tx_buf = &lcd->buf[0]; in tdo24m_probe()
374 lcd->color_invert = 1; in tdo24m_probe()
375 lcd->adj_mode = tdo24m_adj_mode; in tdo24m_probe()
378 lcd->adj_mode = tdo35s_adj_mode; in tdo24m_probe()
379 lcd->color_invert = 0; in tdo24m_probe()
382 dev_err(&spi->dev, "Unsupported model"); in tdo24m_probe()
383 return -EINVAL; in tdo24m_probe()
386 lcd->lcd_dev = devm_lcd_device_register(&spi->dev, "tdo24m", &spi->dev, in tdo24m_probe()
388 if (IS_ERR(lcd->lcd_dev)) in tdo24m_probe()
389 return PTR_ERR(lcd->lcd_dev); in tdo24m_probe()