• Home
  • Raw
  • Download

Lines Matching +full:ips +full:- +full:supply

1 // SPDX-License-Identifier: GPL-2.0
3 * NewVision NV3052C IPS LCD panel driver
12 #include <linux/media-bus-format.h>
35 struct regulator *supply; member
244 struct mipi_dbi *dbi = &priv->dbi; in nv3052c_prepare()
248 err = regulator_enable(priv->supply); in nv3052c_prepare()
250 dev_err(priv->dev, "Failed to enable power supply: %d\n", err); in nv3052c_prepare()
255 gpiod_set_value_cansleep(priv->reset_gpio, 1); in nv3052c_prepare()
257 gpiod_set_value_cansleep(priv->reset_gpio, 0); in nv3052c_prepare()
265 dev_err(priv->dev, "Unable to set register: %d\n", err); in nv3052c_prepare()
272 dev_err(priv->dev, "Unable to exit sleep mode: %d\n", err); in nv3052c_prepare()
279 regulator_disable(priv->supply); in nv3052c_prepare()
286 struct mipi_dbi *dbi = &priv->dbi; in nv3052c_unprepare()
291 dev_err(priv->dev, "Unable to enter sleep mode: %d\n", err); in nv3052c_unprepare()
293 gpiod_set_value_cansleep(priv->reset_gpio, 1); in nv3052c_unprepare()
294 regulator_disable(priv->supply); in nv3052c_unprepare()
302 struct mipi_dbi *dbi = &priv->dbi; in nv3052c_enable()
307 dev_err(priv->dev, "Unable to enable display: %d\n", err); in nv3052c_enable()
311 if (panel->backlight) { in nv3052c_enable()
322 struct mipi_dbi *dbi = &priv->dbi; in nv3052c_disable()
327 dev_err(priv->dev, "Unable to disable display: %d\n", err); in nv3052c_disable()
338 const struct nv3052c_panel_info *panel_info = priv->panel_info; in nv3052c_get_modes()
342 for (i = 0; i < panel_info->num_modes; i++) { in nv3052c_get_modes()
343 mode = drm_mode_duplicate(connector->dev, in nv3052c_get_modes()
344 &panel_info->display_modes[i]); in nv3052c_get_modes()
346 return -ENOMEM; in nv3052c_get_modes()
350 mode->type = DRM_MODE_TYPE_DRIVER; in nv3052c_get_modes()
351 if (panel_info->num_modes == 1) in nv3052c_get_modes()
352 mode->type |= DRM_MODE_TYPE_PREFERRED; in nv3052c_get_modes()
357 connector->display_info.bpc = 8; in nv3052c_get_modes()
358 connector->display_info.width_mm = panel_info->width_mm; in nv3052c_get_modes()
359 connector->display_info.height_mm = panel_info->height_mm; in nv3052c_get_modes()
361 drm_display_info_set_bus_formats(&connector->display_info, in nv3052c_get_modes()
362 &panel_info->bus_format, 1); in nv3052c_get_modes()
363 connector->display_info.bus_flags = panel_info->bus_flags; in nv3052c_get_modes()
365 return panel_info->num_modes; in nv3052c_get_modes()
378 struct device *dev = &spi->dev; in nv3052c_probe()
384 return -ENOMEM; in nv3052c_probe()
386 priv->dev = dev; in nv3052c_probe()
388 priv->panel_info = of_device_get_match_data(dev); in nv3052c_probe()
389 if (!priv->panel_info) in nv3052c_probe()
390 return -EINVAL; in nv3052c_probe()
392 priv->supply = devm_regulator_get(dev, "power"); in nv3052c_probe()
393 if (IS_ERR(priv->supply)) in nv3052c_probe()
394 return dev_err_probe(dev, PTR_ERR(priv->supply), "Failed to get power supply\n"); in nv3052c_probe()
396 priv->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); in nv3052c_probe()
397 if (IS_ERR(priv->reset_gpio)) in nv3052c_probe()
398 return dev_err_probe(dev, PTR_ERR(priv->reset_gpio), "Failed to get reset GPIO\n"); in nv3052c_probe()
400 err = mipi_dbi_spi_init(spi, &priv->dbi, NULL); in nv3052c_probe()
404 priv->dbi.read_commands = NULL; in nv3052c_probe()
408 drm_panel_init(&priv->panel, dev, &nv3052c_funcs, in nv3052c_probe()
411 err = drm_panel_of_backlight(&priv->panel); in nv3052c_probe()
415 drm_panel_add(&priv->panel); in nv3052c_probe()
424 drm_panel_remove(&priv->panel); in nv3052c_remove()
425 drm_panel_disable(&priv->panel); in nv3052c_remove()
426 drm_panel_unprepare(&priv->panel); in nv3052c_remove()