Lines Matching +full:v1p8 +full:- +full:supply

1 // SPDX-License-Identifier: GPL-2.0
3 * Raydium RM67191 MIPI-DSI panel driver
23 /* Panel specific color-format bits */
239 u8 buffer[2] = { entry->cmd, entry->param }; in rad_panel_push_cmd_list()
269 if (rad->prepared) in rad_panel_prepare()
272 ret = regulator_bulk_enable(rad->num_supplies, rad->supplies); in rad_panel_prepare()
276 if (rad->reset) { in rad_panel_prepare()
277 gpiod_set_value_cansleep(rad->reset, 1); in rad_panel_prepare()
279 gpiod_set_value_cansleep(rad->reset, 0); in rad_panel_prepare()
283 rad->prepared = true; in rad_panel_prepare()
293 if (!rad->prepared) in rad_panel_unprepare()
301 if (rad->reset) { in rad_panel_unprepare()
302 gpiod_set_value_cansleep(rad->reset, 1); in rad_panel_unprepare()
304 gpiod_set_value_cansleep(rad->reset, 0); in rad_panel_unprepare()
307 ret = regulator_bulk_disable(rad->num_supplies, rad->supplies); in rad_panel_unprepare()
311 rad->prepared = false; in rad_panel_unprepare()
319 struct mipi_dsi_device *dsi = rad->dsi; in rad_panel_enable()
320 struct device *dev = &dsi->dev; in rad_panel_enable()
321 int color_format = color_format_from_dsi_format(dsi->format); in rad_panel_enable()
324 if (rad->enabled) in rad_panel_enable()
327 dsi->mode_flags |= MIPI_DSI_MODE_LPM; in rad_panel_enable()
389 backlight_enable(rad->backlight); in rad_panel_enable()
391 rad->enabled = true; in rad_panel_enable()
396 gpiod_set_value_cansleep(rad->reset, 1); in rad_panel_enable()
404 struct mipi_dsi_device *dsi = rad->dsi; in rad_panel_disable()
405 struct device *dev = &dsi->dev; in rad_panel_disable()
408 if (!rad->enabled) in rad_panel_disable()
411 dsi->mode_flags |= MIPI_DSI_MODE_LPM; in rad_panel_disable()
413 backlight_disable(rad->backlight); in rad_panel_disable()
431 rad->enabled = false; in rad_panel_disable()
441 mode = drm_mode_duplicate(connector->dev, &default_mode); in rad_panel_get_modes()
443 dev_err(panel->dev, "failed to add mode %ux%u@%u\n", in rad_panel_get_modes()
446 return -ENOMEM; in rad_panel_get_modes()
450 mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; in rad_panel_get_modes()
453 connector->display_info.width_mm = mode->width_mm; in rad_panel_get_modes()
454 connector->display_info.height_mm = mode->height_mm; in rad_panel_get_modes()
455 connector->display_info.bus_flags = rad_bus_flags; in rad_panel_get_modes()
457 drm_display_info_set_bus_formats(&connector->display_info, in rad_panel_get_modes()
470 if (!rad->prepared) in rad_bl_get_brightness()
473 dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; in rad_bl_get_brightness()
479 bl->props.brightness = brightness; in rad_bl_get_brightness()
490 if (!rad->prepared) in rad_bl_update_status()
493 dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; in rad_bl_update_status()
495 ret = mipi_dsi_dcs_set_display_brightness(dsi, bl->props.brightness); in rad_bl_update_status()
517 "v1p8",
522 struct device *dev = &rad->dsi->dev; in rad_init_regulators()
525 rad->num_supplies = ARRAY_SIZE(rad_supply_names); in rad_init_regulators()
526 rad->supplies = devm_kcalloc(dev, rad->num_supplies, in rad_init_regulators()
527 sizeof(*rad->supplies), GFP_KERNEL); in rad_init_regulators()
528 if (!rad->supplies) in rad_init_regulators()
529 return -ENOMEM; in rad_init_regulators()
531 for (i = 0; i < rad->num_supplies; i++) in rad_init_regulators()
532 rad->supplies[i].supply = rad_supply_names[i]; in rad_init_regulators()
534 return devm_regulator_bulk_get(dev, rad->num_supplies, rad->supplies); in rad_init_regulators()
539 struct device *dev = &dsi->dev; in rad_panel_probe()
540 struct device_node *np = dev->of_node; in rad_panel_probe()
546 panel = devm_kzalloc(&dsi->dev, sizeof(*panel), GFP_KERNEL); in rad_panel_probe()
548 return -ENOMEM; in rad_panel_probe()
552 panel->dsi = dsi; in rad_panel_probe()
554 dsi->format = MIPI_DSI_FMT_RGB888; in rad_panel_probe()
555 dsi->mode_flags = MIPI_DSI_MODE_VIDEO_HSE | MIPI_DSI_MODE_VIDEO; in rad_panel_probe()
557 ret = of_property_read_u32(np, "video-mode", &video_mode); in rad_panel_probe()
562 dsi->mode_flags |= MIPI_DSI_MODE_VIDEO_BURST; in rad_panel_probe()
565 /* non-burst mode with sync event */ in rad_panel_probe()
568 /* non-burst mode with sync pulse */ in rad_panel_probe()
569 dsi->mode_flags |= MIPI_DSI_MODE_VIDEO_SYNC_PULSE; in rad_panel_probe()
577 ret = of_property_read_u32(np, "dsi-lanes", &dsi->lanes); in rad_panel_probe()
579 dev_err(dev, "Failed to get dsi-lanes property (%d)\n", ret); in rad_panel_probe()
583 panel->reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW); in rad_panel_probe()
584 if (IS_ERR(panel->reset)) in rad_panel_probe()
585 return PTR_ERR(panel->reset); in rad_panel_probe()
592 panel->backlight = devm_backlight_device_register(dev, dev_name(dev), in rad_panel_probe()
595 if (IS_ERR(panel->backlight)) { in rad_panel_probe()
596 ret = PTR_ERR(panel->backlight); in rad_panel_probe()
605 drm_panel_init(&panel->panel, dev, &rad_panel_funcs, in rad_panel_probe()
609 drm_panel_add(&panel->panel); in rad_panel_probe()
613 drm_panel_remove(&panel->panel); in rad_panel_probe()
621 struct device *dev = &dsi->dev; in rad_panel_remove()
628 drm_panel_remove(&rad->panel); in rad_panel_remove()
637 rad_panel_disable(&rad->panel); in rad_panel_shutdown()
638 rad_panel_unprepare(&rad->panel); in rad_panel_shutdown()
649 .name = "panel-raydium-rm67191",