Lines Matching full:dp

3  * Rockchip SoC DP (Display Port) interface driver.
117 static int rockchip_dp_pre_init(struct rockchip_dp_device *dp) in rockchip_dp_pre_init() argument
119 reset_control_assert(dp->rst); in rockchip_dp_pre_init()
121 reset_control_deassert(dp->rst); in rockchip_dp_pre_init()
123 reset_control_assert(dp->apbrst); in rockchip_dp_pre_init()
125 reset_control_deassert(dp->apbrst); in rockchip_dp_pre_init()
132 struct rockchip_dp_device *dp = pdata_encoder_to_dp(plat_data); in rockchip_dp_poweron() local
135 ret = clk_prepare_enable(dp->pclk); in rockchip_dp_poweron()
137 DRM_DEV_ERROR(dp->dev, "failed to enable pclk %d\n", ret); in rockchip_dp_poweron()
141 ret = rockchip_dp_pre_init(dp); in rockchip_dp_poweron()
143 DRM_DEV_ERROR(dp->dev, "failed to dp pre init %d\n", ret); in rockchip_dp_poweron()
144 clk_disable_unprepare(dp->pclk); in rockchip_dp_poweron()
148 ret = rockchip_grf_field_write(dp->grf, &dp->data->edp_mode, 1); in rockchip_dp_poweron()
150 DRM_DEV_ERROR(dp->dev, "failed to set edp mode %d\n", ret); in rockchip_dp_poweron()
157 struct rockchip_dp_device *dp = pdata_encoder_to_dp(plat_data); in rockchip_dp_powerdown() local
160 ret = rockchip_grf_field_write(dp->grf, &dp->data->edp_mode, 0); in rockchip_dp_powerdown()
162 DRM_DEV_ERROR(dp->dev, "failed to set edp mode %d\n", ret); in rockchip_dp_powerdown()
164 clk_disable_unprepare(dp->pclk); in rockchip_dp_powerdown()
223 struct rockchip_dp_device *dp = encoder_to_dp(encoder); in rockchip_dp_drm_encoder_enable() local
241 ret = clk_prepare_enable(dp->grfclk); in rockchip_dp_drm_encoder_enable()
243 DRM_DEV_ERROR(dp->dev, "failed to enable grfclk %d\n", ret); in rockchip_dp_drm_encoder_enable()
247 ret = drm_of_encoder_active_endpoint(dp->dev->of_node, encoder, &endpoint); in rockchip_dp_drm_encoder_enable()
264 DRM_DEV_DEBUG(dp->dev, "vop %s output to dp\n", (ret) ? "LIT" : "BIG"); in rockchip_dp_drm_encoder_enable()
267 ret = rockchip_grf_field_write(dp->grf, &dp->data->lcdc_sel, endpoint.id); in rockchip_dp_drm_encoder_enable()
269 DRM_DEV_ERROR(dp->dev, "Could not write to GRF: %d\n", ret); in rockchip_dp_drm_encoder_enable()
271 clk_disable_unprepare(dp->grfclk); in rockchip_dp_drm_encoder_enable()
277 struct rockchip_dp_device *dp = encoder_to_dp(encoder); in rockchip_dp_drm_encoder_disable() local
294 DRM_DEV_ERROR(dp->dev, "line flag irq timed out\n"); in rockchip_dp_drm_encoder_disable()
328 static int rockchip_dp_of_probe(struct rockchip_dp_device *dp) in rockchip_dp_of_probe() argument
330 struct device *dev = dp->dev; in rockchip_dp_of_probe()
333 dp->grf = syscon_regmap_lookup_by_phandle(np, "rockchip,grf"); in rockchip_dp_of_probe()
334 if (IS_ERR(dp->grf)) in rockchip_dp_of_probe()
335 return dev_err_probe(dev, PTR_ERR(dp->grf), in rockchip_dp_of_probe()
338 dp->grfclk = devm_clk_get_optional(dev, "grf"); in rockchip_dp_of_probe()
339 if (IS_ERR(dp->grfclk)) in rockchip_dp_of_probe()
340 return dev_err_probe(dev, PTR_ERR(dp->grfclk), in rockchip_dp_of_probe()
343 dp->pclk = devm_clk_get(dev, "pclk"); in rockchip_dp_of_probe()
344 if (IS_ERR(dp->pclk)) in rockchip_dp_of_probe()
345 return dev_err_probe(dev, PTR_ERR(dp->pclk), in rockchip_dp_of_probe()
348 dp->rst = devm_reset_control_get(dev, "dp"); in rockchip_dp_of_probe()
349 if (IS_ERR(dp->rst)) in rockchip_dp_of_probe()
350 return dev_err_probe(dev, PTR_ERR(dp->rst), in rockchip_dp_of_probe()
351 "failed to get dp reset control\n"); in rockchip_dp_of_probe()
353 dp->apbrst = devm_reset_control_get_optional(dev, "apb"); in rockchip_dp_of_probe()
354 if (IS_ERR(dp->apbrst)) in rockchip_dp_of_probe()
355 return dev_err_probe(dev, PTR_ERR(dp->apbrst), in rockchip_dp_of_probe()
361 static int rockchip_dp_drm_create_encoder(struct rockchip_dp_device *dp) in rockchip_dp_drm_create_encoder() argument
363 struct drm_encoder *encoder = &dp->encoder.encoder; in rockchip_dp_drm_create_encoder()
364 struct drm_device *drm_dev = dp->drm_dev; in rockchip_dp_drm_create_encoder()
365 struct device *dev = dp->dev; in rockchip_dp_drm_create_encoder()
387 struct rockchip_dp_device *dp = dev_get_drvdata(dev); in rockchip_dp_bind() local
391 dp->drm_dev = drm_dev; in rockchip_dp_bind()
393 ret = rockchip_dp_drm_create_encoder(dp); in rockchip_dp_bind()
399 rockchip_drm_encoder_set_crtc_endpoint_id(&dp->encoder, in rockchip_dp_bind()
402 dp->plat_data.encoder = &dp->encoder.encoder; in rockchip_dp_bind()
404 ret = analogix_dp_bind(dp->adp, drm_dev); in rockchip_dp_bind()
410 dp->encoder.encoder.funcs->destroy(&dp->encoder.encoder); in rockchip_dp_bind()
417 struct rockchip_dp_device *dp = dev_get_drvdata(dev); in rockchip_dp_unbind() local
419 analogix_dp_unbind(dp->adp); in rockchip_dp_unbind()
420 dp->encoder.encoder.funcs->destroy(&dp->encoder.encoder); in rockchip_dp_unbind()
431 struct rockchip_dp_device *dp = pdata_encoder_to_dp(plat_data); in rockchip_dp_link_panel() local
436 * or bridge nodes. The driver should go on for the driver-free bridge or the DP in rockchip_dp_link_panel()
439 ret = drm_of_find_panel_or_bridge(dp->dev->of_node, 1, 0, &plat_data->panel, NULL); in rockchip_dp_link_panel()
443 return component_add(dp->dev, &rockchip_dp_component_ops); in rockchip_dp_link_panel()
450 struct rockchip_dp_device *dp; in rockchip_dp_probe() local
459 dp = devm_kzalloc(dev, sizeof(*dp), GFP_KERNEL); in rockchip_dp_probe()
460 if (!dp) in rockchip_dp_probe()
468 dp->data = &dp_data[i]; in rockchip_dp_probe()
475 if (!dp->data) in rockchip_dp_probe()
479 dp->dev = dev; in rockchip_dp_probe()
480 dp->adp = ERR_PTR(-ENODEV); in rockchip_dp_probe()
481 dp->plat_data.dev_type = dp->data->chip_type; in rockchip_dp_probe()
482 dp->plat_data.power_on = rockchip_dp_poweron; in rockchip_dp_probe()
483 dp->plat_data.power_off = rockchip_dp_powerdown; in rockchip_dp_probe()
484 dp->plat_data.get_modes = rockchip_dp_get_modes; in rockchip_dp_probe()
486 ret = rockchip_dp_of_probe(dp); in rockchip_dp_probe()
490 platform_set_drvdata(pdev, dp); in rockchip_dp_probe()
492 dp->adp = analogix_dp_probe(dev, &dp->plat_data); in rockchip_dp_probe()
493 if (IS_ERR(dp->adp)) in rockchip_dp_probe()
494 return PTR_ERR(dp->adp); in rockchip_dp_probe()
496 ret = devm_of_dp_aux_populate_bus(analogix_dp_get_aux(dp->adp), rockchip_dp_link_panel); in rockchip_dp_probe()
506 return dev_err_probe(dp->dev, ret, "failed to populate aux bus\n"); in rockchip_dp_probe()
508 return rockchip_dp_link_panel(analogix_dp_get_aux(dp->adp)); in rockchip_dp_probe()
521 struct rockchip_dp_device *dp = dev_get_drvdata(dev); in rockchip_dp_suspend() local
523 if (IS_ERR(dp->adp)) in rockchip_dp_suspend()
526 return analogix_dp_suspend(dp->adp); in rockchip_dp_suspend()
531 struct rockchip_dp_device *dp = dev_get_drvdata(dev); in rockchip_dp_resume() local
533 if (IS_ERR(dp->adp)) in rockchip_dp_resume()
536 return analogix_dp_resume(dp->adp); in rockchip_dp_resume()
575 {.compatible = "rockchip,rk3288-dp", .data = &rk3288_dp },
586 .name = "rockchip-dp",