Lines Matching +full:com +full:- +full:mode
1 // SPDX-License-Identifier: GPL-2.0-only
5 * Copyright (c) 2004-2006 Richard Purdie
11 * by Eric Miao <eric.miao@marvell.com>
43 #define POWER1_GVSS_ON 0x02 /* GVSS(-8V) Power Supply ON */
44 #define POWER1_VDD_ON 0x04 /* VDD(8V),SVSS(-4V) Power Supply ON */
47 #define POWER1_GVSS_OFF 0x00 /* GVSS(-8V) Power Supply OFF */
48 #define POWER1_VDD_OFF 0x00 /* VDD(8V),SVSS(-4V) Power Supply OFF */
50 #define POWER0_COM_DCLK 0x01 /* COM Voltage DC Bias DAC Serial Data Clock */
51 #define POWER0_COM_DOUT 0x02 /* COM Voltage DC Bias DAC Serial Data Out */
53 #define POWER0_COM_ON 0x08 /* COM Power Supply ON */
57 #define POWER0_COM_OFF 0x00 /* COM Power Supply OFF */
90 int mode; member
176 .tx_buf = lcd->buf, in corgi_ssp_lcdtg_send()
179 lcd->buf[0] = ((adrs & 0x07) << 5) | (data & 0x1f); in corgi_ssp_lcdtg_send()
183 return spi_sync(lcd->spi_dev, &msg); in corgi_ssp_lcdtg_send()
187 static void lcdtg_set_phadadj(struct corgi_lcd *lcd, int mode) in lcdtg_set_phadadj() argument
191 switch (mode) { in lcdtg_set_phadadj()
225 /* VDD(+8V), SVSS(-4V) ON */ in corgi_lcd_power_on()
253 /* GVSS(-8V) ON, VDD ON */ in corgi_lcd_power_on()
258 /* COM SIGNAL ON (PICTL[3] = L) */ in corgi_lcd_power_on()
261 /* COM ON, DAC ON, VCC5_ON */ in corgi_lcd_power_on()
274 lcdtg_set_phadadj(lcd, lcd->mode); in corgi_lcd_power_on()
283 switch (lcd->mode) { in corgi_lcd_power_on()
303 /* (2)COM OFF */ in corgi_lcd_power_off()
337 int mode = CORGI_LCD_MODE_QVGA; in corgi_lcd_set_mode() local
339 if (m->xres == 640 || m->xres == 480) in corgi_lcd_set_mode()
340 mode = CORGI_LCD_MODE_VGA; in corgi_lcd_set_mode()
342 if (lcd->mode == mode) in corgi_lcd_set_mode()
345 lcdtg_set_phadadj(lcd, mode); in corgi_lcd_set_mode()
347 switch (mode) { in corgi_lcd_set_mode()
357 lcd->mode = mode; in corgi_lcd_set_mode()
365 if (POWER_IS_ON(power) && !POWER_IS_ON(lcd->power)) in corgi_lcd_set_power()
368 if (!POWER_IS_ON(power) && POWER_IS_ON(lcd->power)) in corgi_lcd_set_power()
371 lcd->power = power; in corgi_lcd_set_power()
379 return lcd->power; in corgi_lcd_get_power()
392 return lcd->intensity; in corgi_bl_get_intensity()
407 if (lcd->backlight_cont) in corgi_bl_set_intensity()
408 gpiod_set_value_cansleep(lcd->backlight_cont, cont); in corgi_bl_set_intensity()
410 if (lcd->backlight_on) in corgi_bl_set_intensity()
411 gpiod_set_value_cansleep(lcd->backlight_on, intensity); in corgi_bl_set_intensity()
413 if (lcd->kick_battery) in corgi_bl_set_intensity()
414 lcd->kick_battery(); in corgi_bl_set_intensity()
416 lcd->intensity = intensity; in corgi_bl_set_intensity()
428 if ((corgibl_flags & CORGIBL_BATTLOW) && intensity > lcd->limit_mask) in corgi_bl_update_status()
429 intensity = lcd->limit_mask; in corgi_bl_update_status()
441 backlight_update_status(the_corgi_lcd->bl_dev); in corgi_lcd_limit_intensity()
457 corgi_lcd_set_power(lcd->lcd_dev, FB_BLANK_POWERDOWN); in corgi_lcd_suspend()
466 corgi_lcd_set_power(lcd->lcd_dev, FB_BLANK_UNBLANK); in corgi_lcd_resume()
467 backlight_update_status(lcd->bl_dev); in corgi_lcd_resume()
477 struct spi_device *spi = lcd->spi_dev; in setup_gpio_backlight()
479 lcd->backlight_on = devm_gpiod_get_optional(&spi->dev, in setup_gpio_backlight()
481 if (IS_ERR(lcd->backlight_on)) in setup_gpio_backlight()
482 return PTR_ERR(lcd->backlight_on); in setup_gpio_backlight()
484 lcd->backlight_cont = devm_gpiod_get_optional(&spi->dev, "BL_CONT", in setup_gpio_backlight()
486 if (IS_ERR(lcd->backlight_cont)) in setup_gpio_backlight()
487 return PTR_ERR(lcd->backlight_cont); in setup_gpio_backlight()
495 struct corgi_lcd_platform_data *pdata = dev_get_platdata(&spi->dev); in corgi_lcd_probe()
500 dev_err(&spi->dev, "platform data not available\n"); in corgi_lcd_probe()
501 return -EINVAL; in corgi_lcd_probe()
504 lcd = devm_kzalloc(&spi->dev, sizeof(struct corgi_lcd), GFP_KERNEL); in corgi_lcd_probe()
506 return -ENOMEM; in corgi_lcd_probe()
508 lcd->spi_dev = spi; in corgi_lcd_probe()
510 lcd->lcd_dev = devm_lcd_device_register(&spi->dev, "corgi_lcd", in corgi_lcd_probe()
511 &spi->dev, lcd, &corgi_lcd_ops); in corgi_lcd_probe()
512 if (IS_ERR(lcd->lcd_dev)) in corgi_lcd_probe()
513 return PTR_ERR(lcd->lcd_dev); in corgi_lcd_probe()
515 lcd->power = FB_BLANK_POWERDOWN; in corgi_lcd_probe()
516 lcd->mode = (pdata) ? pdata->init_mode : CORGI_LCD_MODE_VGA; in corgi_lcd_probe()
520 props.max_brightness = pdata->max_intensity; in corgi_lcd_probe()
521 lcd->bl_dev = devm_backlight_device_register(&spi->dev, "corgi_bl", in corgi_lcd_probe()
522 &spi->dev, lcd, &corgi_bl_ops, in corgi_lcd_probe()
524 if (IS_ERR(lcd->bl_dev)) in corgi_lcd_probe()
525 return PTR_ERR(lcd->bl_dev); in corgi_lcd_probe()
527 lcd->bl_dev->props.brightness = pdata->default_intensity; in corgi_lcd_probe()
528 lcd->bl_dev->props.power = FB_BLANK_UNBLANK; in corgi_lcd_probe()
534 lcd->kick_battery = pdata->kick_battery; in corgi_lcd_probe()
537 corgi_lcd_set_power(lcd->lcd_dev, FB_BLANK_UNBLANK); in corgi_lcd_probe()
538 backlight_update_status(lcd->bl_dev); in corgi_lcd_probe()
540 lcd->limit_mask = pdata->limit_mask; in corgi_lcd_probe()
549 lcd->bl_dev->props.power = FB_BLANK_UNBLANK; in corgi_lcd_remove()
550 lcd->bl_dev->props.brightness = 0; in corgi_lcd_remove()
551 backlight_update_status(lcd->bl_dev); in corgi_lcd_remove()
552 corgi_lcd_set_power(lcd->lcd_dev, FB_BLANK_POWERDOWN); in corgi_lcd_remove()
558 .name = "corgi-lcd",
568 MODULE_AUTHOR("Eric Miao <eric.miao@marvell.com>");
570 MODULE_ALIAS("spi:corgi-lcd");