static void imx_hdmi_encoder_prepare(struct drm_encoder *encoder) { struct imx_hdmi *hdmi = container_of(encoder, struct imx_hdmi, encoder); imx_hdmi_poweroff(hdmi); imx_drm_panel_format(encoder, V4L2_PIX_FMT_RGB24); }
static void imx_ldb_encoder_prepare(struct drm_encoder *encoder) { struct imx_ldb_channel *imx_ldb_ch = enc_to_imx_ldb_ch(encoder); struct imx_ldb *ldb = imx_ldb_ch->ldb; struct drm_display_mode *mode = &encoder->crtc->mode; u32 pixel_fmt; unsigned long serial_clk; unsigned long di_clk = mode->clock * 1000; int mux = imx_drm_encoder_get_mux_id(imx_ldb_ch->child, encoder); if (ldb->ldb_ctrl & LDB_SPLIT_MODE_EN) { /* dual channel LVDS mode */ serial_clk = 3500UL * mode->clock; imx_ldb_set_clock(ldb, mux, 0, serial_clk, di_clk); imx_ldb_set_clock(ldb, mux, 1, serial_clk, di_clk); } else { serial_clk = 7000UL * mode->clock; imx_ldb_set_clock(ldb, mux, imx_ldb_ch->chno, serial_clk, di_clk); } switch (imx_ldb_ch->chno) { case 0: pixel_fmt = (ldb->ldb_ctrl & LDB_DATA_WIDTH_CH0_24) ? V4L2_PIX_FMT_RGB24 : V4L2_PIX_FMT_BGR666; break; case 1: pixel_fmt = (ldb->ldb_ctrl & LDB_DATA_WIDTH_CH1_24) ? V4L2_PIX_FMT_RGB24 : V4L2_PIX_FMT_BGR666; break; default: dev_err(ldb->dev, "unable to config di%d panel format\n", imx_ldb_ch->chno); pixel_fmt = V4L2_PIX_FMT_RGB24; } imx_drm_panel_format(encoder, pixel_fmt); }
static void imx_ldb_encoder_prepare(struct drm_encoder *encoder) { struct imx_ldb_channel *imx_ldb_ch = enc_to_imx_ldb_ch(encoder); struct imx_ldb *ldb = imx_ldb_ch->ldb; u32 pixel_fmt; switch (imx_ldb_ch->chno) { case 0: pixel_fmt = (ldb->ldb_ctrl & LDB_DATA_WIDTH_CH0_24) ? V4L2_PIX_FMT_RGB24 : V4L2_PIX_FMT_BGR666; break; case 1: pixel_fmt = (ldb->ldb_ctrl & LDB_DATA_WIDTH_CH1_24) ? V4L2_PIX_FMT_RGB24 : V4L2_PIX_FMT_BGR666; break; default: dev_err(ldb->dev, "unable to config di%d panel format\n", imx_ldb_ch->chno); pixel_fmt = V4L2_PIX_FMT_RGB24; } imx_drm_panel_format(encoder, pixel_fmt); }
static void imx_pd_encoder_prepare(struct drm_encoder *encoder) { struct imx_parallel_display *imxpd = enc_to_imxpd(encoder); imx_drm_panel_format(encoder, imxpd->interface_pix_fmt); }