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; int dual = ldb->ldb_ctrl & LDB_SPLIT_MODE_EN; u32 bus_format; switch (imx_ldb_ch->bus_format) { default: dev_warn(ldb->dev, "could not determine data mapping, default to 18-bit \"spwg\"\n"); /* fallthrough */ case MEDIA_BUS_FMT_RGB666_1X7X3_SPWG: bus_format = MEDIA_BUS_FMT_RGB666_1X18; break; case MEDIA_BUS_FMT_RGB888_1X7X4_SPWG: bus_format = MEDIA_BUS_FMT_RGB888_1X24; if (imx_ldb_ch->chno == 0 || dual) ldb->ldb_ctrl |= LDB_DATA_WIDTH_CH0_24; if (imx_ldb_ch->chno == 1 || dual) ldb->ldb_ctrl |= LDB_DATA_WIDTH_CH1_24; break; case MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA: bus_format = MEDIA_BUS_FMT_RGB888_1X24; if (imx_ldb_ch->chno == 0 || dual) ldb->ldb_ctrl |= LDB_DATA_WIDTH_CH0_24 | LDB_BIT_MAP_CH0_JEIDA; if (imx_ldb_ch->chno == 1 || dual) ldb->ldb_ctrl |= LDB_DATA_WIDTH_CH1_24 | LDB_BIT_MAP_CH1_JEIDA; break; } imx_drm_set_bus_format(encoder, bus_format); }
static void dw_hdmi_imx_encoder_prepare(struct drm_encoder *encoder) { imx_drm_set_bus_format(encoder, MEDIA_BUS_FMT_RGB888_1X24); }
static void imx_pd_encoder_prepare(struct drm_encoder *encoder) { struct imx_parallel_display *imxpd = enc_to_imxpd(encoder); imx_drm_set_bus_format(encoder, imxpd->bus_format); }