#define SPRD_DRM_NAME "sprd"
-#define USE_TDM_HELPER_DFM_FD 1
-
static tdm_func_display sprd_func_display =
{
sprd_display_get_capabilitiy,
return fd;
}
-#ifdef USE_TDM_HELPER_DFM_FD
-static int
-_tdm_sprd_drm_user_handler(struct drm_event *event)
-{
- RETURN_VAL_IF_FAIL(event, -1);
-
- TDM_DBG("got event %d\n", event->type);
-
- if (event->type != DRM_SPRD_IPP_EVENT)
- return -1;
-
- tdm_sprd_pp_handler(-1, NULL, event);
- return 0;
-}
-#endif
void
tdm_sprd_deinit(tdm_backend_data *bdata)
{
return;
TDM_INFO("deinit");
-#ifdef USE_TDM_HELPER_DFM_FD
- drmRemoveUserHandler(tdm_helper_drm_fd, _tdm_sprd_drm_user_handler);
-#endif
tdm_sprd_display_destroy_output_list(sprd_data);
tdm_sprd_display_destroy_event_list(sprd_data);
sprd_data->dpy = dpy;
sprd_data->drm_fd = -1;
-#ifdef USE_TDM_HELPER_DFM_FD
- /* TODO: tdm_helper_drm_fd is external drm_fd which is opened by ecore_drm.
- * This is very tricky. But we can't remove tdm_helper_drm_fd now because
- * ecore_drm doesn't use tdm yet. When we make ecore_drm use tdm,
- * tdm_helper_drm_fd will be removed.
- */
- if (tdm_helper_drm_fd >= 0)
- {
- TDM_INFO("Use tdm_helper_drm_fd\n");
- sprd_data->drm_fd = tdm_helper_drm_fd;
- drmAddUserHandler(tdm_helper_drm_fd, _tdm_sprd_drm_user_handler);
- }
-#endif
if (sprd_data->drm_fd < 0)
sprd_data->drm_fd = _tdm_sprd_open_drm();
_tdm_sprd_display_do_commit(output_data);
- /* TODO: tdm_helper_drm_fd is external drm_fd which is opened by ecore_drm.
- * This is very tricky. But we can't remove tdm_helper_drm_fd now because
- * ecore_drm doesn't use tdm yet. When we make ecore_drm use tdm,
- * tdm_helper_drm_fd will be removed.
- */
- if (tdm_helper_drm_fd == -1)
- {
- tdm_sprd_vblank_data *vblank_data = calloc(1, sizeof(tdm_sprd_vblank_data));
- uint target_msc;
+ tdm_sprd_vblank_data *vblank_data = calloc (1, sizeof(tdm_sprd_vblank_data));
+ uint target_msc;
- if (!vblank_data)
- {
- TDM_ERR("alloc failed");
- return TDM_ERROR_OUT_OF_MEMORY;
- }
+ if (!vblank_data)
+ {
+ TDM_ERR("alloc failed");
+ return TDM_ERROR_OUT_OF_MEMORY;
+ }
- ret = _tdm_sprd_display_get_cur_msc(sprd_data->drm_fd, output_data->pipe, &target_msc);
- if (ret != TDM_ERROR_NONE)
- {
- free(vblank_data);
- return ret;
- }
+ ret = _tdm_sprd_display_get_cur_msc (sprd_data->drm_fd, output_data->pipe, &target_msc);
+ if (ret != TDM_ERROR_NONE)
+ {
+ free (vblank_data);
+ return ret;
+ }
- target_msc++;
+ target_msc++;
- vblank_data->type = VBLANK_TYPE_COMMIT;
- vblank_data->output_data = output_data;
- vblank_data->user_data = user_data;
+ vblank_data->type = VBLANK_TYPE_COMMIT;
+ vblank_data->output_data = output_data;
+ vblank_data->user_data = user_data;
- ret = _tdm_sprd_display_wait_vblank(sprd_data->drm_fd, output_data->pipe, &target_msc, vblank_data);
- if (ret != TDM_ERROR_NONE)
- {
- free(vblank_data);
- return ret;
- }
+ ret = _tdm_sprd_display_wait_vblank (sprd_data->drm_fd, output_data->pipe, &target_msc, vblank_data);
+ if (ret != TDM_ERROR_NONE)
+ {
+ free (vblank_data);
+ return ret;
}
return TDM_ERROR_NONE;