Lines Matching +full:- +full:36000

1 // SPDX-License-Identifier: GPL-2.0+
7 * Based on the omapdrm-specific panel-tpo-td043mtea1 driver
70 /* -----------------------------------------------------------------------------
91 ret = spi_sync(lcd->spi, &msg); in td043mtea1_write()
93 dev_warn(&lcd->spi->dev, "failed to write to LCD reg (%d)\n", in td043mtea1_write()
101 const u16 *gamma = lcd->gamma; in td043mtea1_write_gamma()
127 if (lcd->vmirror) in td043mtea1_write_mirror()
137 if (lcd->powered_on) in td043mtea1_power_on()
140 ret = regulator_enable(lcd->vcc_reg); in td043mtea1_power_on()
147 gpiod_set_value(lcd->reset_gpio, 0); in td043mtea1_power_on()
149 td043mtea1_write(lcd, 2, TPO_R02_MODE(lcd->mode) | TPO_R02_NCLK_RISING); in td043mtea1_power_on()
156 lcd->powered_on = true; in td043mtea1_power_on()
163 if (!lcd->powered_on) in td043mtea1_power_off()
168 gpiod_set_value(lcd->reset_gpio, 1); in td043mtea1_power_off()
175 regulator_disable(lcd->vcc_reg); in td043mtea1_power_off()
177 lcd->powered_on = false; in td043mtea1_power_off()
180 /* -----------------------------------------------------------------------------
189 return sysfs_emit(buf, "%d\n", lcd->vmirror); in vmirror_show()
203 lcd->vmirror = !!val; in vmirror_store()
217 return sysfs_emit(buf, "%d\n", lcd->mode); in mode_show()
229 return -EINVAL; in mode_store()
231 lcd->mode = val; in mode_store()
247 for (i = 0; i < ARRAY_SIZE(lcd->gamma); i++) { in gamma_show()
248 ret = snprintf(buf + len, PAGE_SIZE - len, "%u ", in gamma_show()
249 lcd->gamma[i]); in gamma_show()
254 buf[len - 1] = '\n'; in gamma_show()
271 return -EINVAL; in gamma_store()
274 lcd->gamma[i] = g[i]; in gamma_store()
296 /* -----------------------------------------------------------------------------
304 if (!lcd->spi_suspended) in td043mtea1_unprepare()
319 if (lcd->spi_suspended) in td043mtea1_prepare()
324 dev_err(&lcd->spi->dev, "%s: power on failed (%d)\n", in td043mtea1_prepare()
333 .clock = 36000,
353 mode = drm_mode_duplicate(connector->dev, &td043mtea1_mode); in td043mtea1_get_modes()
355 return -ENOMEM; in td043mtea1_get_modes()
360 connector->display_info.width_mm = td043mtea1_mode.width_mm; in td043mtea1_get_modes()
361 connector->display_info.height_mm = td043mtea1_mode.height_mm; in td043mtea1_get_modes()
368 connector->display_info.bus_flags = DRM_BUS_FLAG_DE_HIGH in td043mtea1_get_modes()
381 /* -----------------------------------------------------------------------------
389 if (lcd->powered_on) { in td043mtea1_suspend()
391 lcd->powered_on = true; in td043mtea1_suspend()
394 lcd->spi_suspended = true; in td043mtea1_suspend()
404 lcd->spi_suspended = false; in td043mtea1_resume()
406 if (lcd->powered_on) { in td043mtea1_resume()
407 lcd->powered_on = false; in td043mtea1_resume()
424 lcd = devm_kzalloc(&spi->dev, sizeof(*lcd), GFP_KERNEL); in td043mtea1_probe()
426 return -ENOMEM; in td043mtea1_probe()
429 lcd->spi = spi; in td043mtea1_probe()
430 lcd->mode = TPO_R02_MODE_800x480; in td043mtea1_probe()
431 memcpy(lcd->gamma, td043mtea1_def_gamma, sizeof(lcd->gamma)); in td043mtea1_probe()
433 lcd->vcc_reg = devm_regulator_get(&spi->dev, "vcc"); in td043mtea1_probe()
434 if (IS_ERR(lcd->vcc_reg)) in td043mtea1_probe()
435 return dev_err_probe(&spi->dev, PTR_ERR(lcd->vcc_reg), in td043mtea1_probe()
438 lcd->reset_gpio = devm_gpiod_get(&spi->dev, "reset", GPIOD_OUT_HIGH); in td043mtea1_probe()
439 if (IS_ERR(lcd->reset_gpio)) in td043mtea1_probe()
440 return dev_err_probe(&spi->dev, PTR_ERR(lcd->reset_gpio), in td043mtea1_probe()
443 spi->bits_per_word = 16; in td043mtea1_probe()
444 spi->mode = SPI_MODE_0; in td043mtea1_probe()
448 dev_err(&spi->dev, "failed to setup SPI: %d\n", ret); in td043mtea1_probe()
452 ret = sysfs_create_group(&spi->dev.kobj, &td043mtea1_attr_group); in td043mtea1_probe()
454 dev_err(&spi->dev, "failed to create sysfs files\n"); in td043mtea1_probe()
458 drm_panel_init(&lcd->panel, &lcd->spi->dev, &td043mtea1_funcs, in td043mtea1_probe()
461 drm_panel_add(&lcd->panel); in td043mtea1_probe()
470 drm_panel_remove(&lcd->panel); in td043mtea1_remove()
471 drm_panel_disable(&lcd->panel); in td043mtea1_remove()
472 drm_panel_unprepare(&lcd->panel); in td043mtea1_remove()
474 sysfs_remove_group(&spi->dev.kobj, &td043mtea1_attr_group); in td043mtea1_remove()
496 .name = "panel-tpo-td043mtea1",