static int sti_tvout_bind(struct device *dev, struct device *master, void *data) { struct sti_tvout *tvout = dev_get_drvdata(dev); struct drm_device *drm_dev = data; unsigned int i; int ret; tvout->drm_dev = drm_dev; /* set preformatter matrix */ for (i = 0; i < 8; i++) { tvout_write(tvout, rgb_to_ycbcr_601[i], TVO_CSC_MAIN_M0 + (i * 4)); tvout_write(tvout, rgb_to_ycbcr_601[i], TVO_CSC_AUX_M0 + (i * 4)); } sti_tvout_create_encoders(drm_dev, tvout); ret = component_bind_all(dev, drm_dev); if (ret) sti_tvout_destroy_encoders(tvout); return ret; }
static void sti_tvout_unbind(struct device *dev, struct device *master, void *data) { struct sti_tvout *tvout = dev_get_drvdata(dev); sti_tvout_destroy_encoders(tvout); }