···2020config DRM_RCAR_LVDS2121 bool "R-Car DU LVDS Encoder Support"2222 depends on DRM_RCAR_DU2323+ select DRM_PANEL2324 help2425 Enable support for the R-Car Display Unit embedded LVDS encoders.2526
+22
drivers/gpu/drm/rcar-du/rcar_du_encoder.c
···1616#include <drm/drmP.h>1717#include <drm/drm_crtc.h>1818#include <drm/drm_crtc_helper.h>1919+#include <drm/drm_panel.h>19202021#include "rcar_du_drv.h"2122#include "rcar_du_encoder.h"···3433{3534 struct rcar_du_encoder *renc = to_rcar_encoder(encoder);36353636+ if (renc->connector && renc->connector->panel) {3737+ drm_panel_disable(renc->connector->panel);3838+ drm_panel_unprepare(renc->connector->panel);3939+ }4040+3741 if (renc->lvds)3842 rcar_du_lvdsenc_enable(renc->lvds, encoder->crtc, false);3943}···49435044 if (renc->lvds)5145 rcar_du_lvdsenc_enable(renc->lvds, encoder->crtc, true);4646+4747+ if (renc->connector && renc->connector->panel) {4848+ drm_panel_prepare(renc->connector->panel);4949+ drm_panel_enable(renc->connector->panel);5050+ }5251}53525453static int rcar_du_encoder_atomic_check(struct drm_encoder *encoder,···10089 struct rcar_du_encoder *renc = to_rcar_encoder(encoder);1019010291 rcar_du_crtc_route_output(crtc_state->crtc, renc->output);9292+9393+ if (!renc->lvds) {9494+ /*9595+ * The DU driver creates connectors only for the outputs of the9696+ * internal LVDS encoders.9797+ */9898+ renc->connector = NULL;9999+ return;100100+ }101101+102102+ renc->connector = to_rcar_connector(conn_state->connector);103103}104104105105static const struct drm_encoder_helper_funcs encoder_helper_funcs = {