return container_of(base, struct imx8qxp_ldb, base);
}
+static void imx8qxp_ldb_bridge_destroy(struct drm_bridge *bridge)
+{
+ struct ldb_channel *ldb_ch = bridge->driver_private;
+ struct ldb *ldb = ldb_ch->ldb;
+ struct imx8qxp_ldb *imx8qxp_ldb = base_to_imx8qxp_ldb(ldb);
+
+ drm_bridge_put(imx8qxp_ldb->companion);
+}
+
static void imx8qxp_ldb_set_phy_cfg(struct imx8qxp_ldb *imx8qxp_ldb,
unsigned long di_clk, bool is_split,
struct phy_configure_opts_lvds *phy_cfg)
}
static const struct drm_bridge_funcs imx8qxp_ldb_bridge_funcs = {
+ .destroy = imx8qxp_ldb_bridge_destroy,
.atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_bridge_destroy_state,
.atomic_reset = drm_atomic_helper_bridge_reset,
goto out;
}
- imx8qxp_ldb->companion = of_drm_find_bridge(companion_port);
+ imx8qxp_ldb->companion = of_drm_find_and_get_bridge(companion_port);
if (!imx8qxp_ldb->companion) {
ret = -EPROBE_DEFER;
DRM_DEV_DEBUG_DRIVER(dev,