Lines Matching defs:lcd

74 static int td043mtea1_write(struct td043mtea1_panel *lcd, u8 addr, u8 value)
91 ret = spi_sync(lcd->spi, &msg);
93 dev_warn(&lcd->spi->dev, "failed to write to LCD reg (%d)\n",
99 static void td043mtea1_write_gamma(struct td043mtea1_panel *lcd)
101 const u16 *gamma = lcd->gamma;
108 td043mtea1_write(lcd, 0x11, val);
112 td043mtea1_write(lcd, 0x12, val);
116 td043mtea1_write(lcd, 0x13, val);
120 td043mtea1_write(lcd, 0x14 + i, gamma[i] & 0xff);
123 static int td043mtea1_write_mirror(struct td043mtea1_panel *lcd)
127 if (lcd->vmirror)
130 return td043mtea1_write(lcd, 4, reg4);
133 static int td043mtea1_power_on(struct td043mtea1_panel *lcd)
137 if (lcd->powered_on)
140 ret = regulator_enable(lcd->vcc_reg);
147 gpiod_set_value(lcd->reset_gpio, 0);
149 td043mtea1_write(lcd, 2, TPO_R02_MODE(lcd->mode) | TPO_R02_NCLK_RISING);
150 td043mtea1_write(lcd, 3, TPO_R03_VAL_NORMAL);
151 td043mtea1_write(lcd, 0x20, 0xf0);
152 td043mtea1_write(lcd, 0x21, 0xf0);
153 td043mtea1_write_mirror(lcd);
154 td043mtea1_write_gamma(lcd);
156 lcd->powered_on = true;
161 static void td043mtea1_power_off(struct td043mtea1_panel *lcd)
163 if (!lcd->powered_on)
166 td043mtea1_write(lcd, 3, TPO_R03_VAL_STANDBY | TPO_R03_EN_PWM);
168 gpiod_set_value(lcd->reset_gpio, 1);
173 td043mtea1_write(lcd, 3, TPO_R03_VAL_STANDBY);
175 regulator_disable(lcd->vcc_reg);
177 lcd->powered_on = false;
187 struct td043mtea1_panel *lcd = dev_get_drvdata(dev);
189 return sysfs_emit(buf, "%d\n", lcd->vmirror);
195 struct td043mtea1_panel *lcd = dev_get_drvdata(dev);
203 lcd->vmirror = !!val;
205 ret = td043mtea1_write_mirror(lcd);
215 struct td043mtea1_panel *lcd = dev_get_drvdata(dev);
217 return sysfs_emit(buf, "%d\n", lcd->mode);
223 struct td043mtea1_panel *lcd = dev_get_drvdata(dev);
231 lcd->mode = val;
234 td043mtea1_write(lcd, 2, val);
242 struct td043mtea1_panel *lcd = dev_get_drvdata(dev);
247 for (i = 0; i < ARRAY_SIZE(lcd->gamma); i++) {
249 lcd->gamma[i]);
262 struct td043mtea1_panel *lcd = dev_get_drvdata(dev);
274 lcd->gamma[i] = g[i];
276 td043mtea1_write_gamma(lcd);
302 struct td043mtea1_panel *lcd = to_td043mtea1_device(panel);
304 if (!lcd->spi_suspended)
305 td043mtea1_power_off(lcd);
312 struct td043mtea1_panel *lcd = to_td043mtea1_device(panel);
319 if (lcd->spi_suspended)
322 ret = td043mtea1_power_on(lcd);
324 dev_err(&lcd->spi->dev, "%s: power on failed (%d)\n",
387 struct td043mtea1_panel *lcd = dev_get_drvdata(dev);
389 if (lcd->powered_on) {
390 td043mtea1_power_off(lcd);
391 lcd->powered_on = true;
394 lcd->spi_suspended = true;
401 struct td043mtea1_panel *lcd = dev_get_drvdata(dev);
404 lcd->spi_suspended = false;
406 if (lcd->powered_on) {
407 lcd->powered_on = false;
408 ret = td043mtea1_power_on(lcd);
421 struct td043mtea1_panel *lcd;
424 lcd = devm_drm_panel_alloc(&spi->dev, struct td043mtea1_panel, panel,
426 if (IS_ERR(lcd))
427 return PTR_ERR(lcd);
429 spi_set_drvdata(spi, lcd);
430 lcd->spi = spi;
431 lcd->mode = TPO_R02_MODE_800x480;
432 memcpy(lcd->gamma, td043mtea1_def_gamma, sizeof(lcd->gamma));
434 lcd->vcc_reg = devm_regulator_get(&spi->dev, "vcc");
435 if (IS_ERR(lcd->vcc_reg))
436 return dev_err_probe(&spi->dev, PTR_ERR(lcd->vcc_reg),
439 lcd->reset_gpio = devm_gpiod_get(&spi->dev, "reset", GPIOD_OUT_HIGH);
440 if (IS_ERR(lcd->reset_gpio))
441 return dev_err_probe(&spi->dev, PTR_ERR(lcd->reset_gpio),
459 drm_panel_add(&lcd->panel);
466 struct td043mtea1_panel *lcd = spi_get_drvdata(spi);
468 drm_panel_remove(&lcd->panel);
469 drm_panel_disable(&lcd->panel);
470 drm_panel_unprepare(&lcd->panel);