[linux-yocto] [PATCH 2/2] emgd-1.18: Fix ioctl handling

Tom Zanussi tom.zanussi at linux.intel.com
Mon Oct 14 11:33:53 PDT 2013


commit e4fda9f [drm: Perform ioctl command validation on the stored
kernel values] causes a couple problems that need to be fixed.

One is that ioctl.cmd_drv needs to be given an appropriate value
instead of 0 since it's now used as the cmd value in the handler -
EMGD_IOCTL_DEF_DRV() is introduced and used instead of
EMGD_IOCTL_DEF().

The other problem is that the above exposes the fact that the cmds
that userspace is sending are not what the kernel says it's expecting
e.g. the kernel says IOR but what's being passed in is IOWR, which
causes different (correct) kernel handling, but that doesn't match the
kernel code.  So the kernel code is wrong, and if not corrected makes
video inoperable.  Since we don't have access to the userland code
that sends the commands, we need to change the affected kernel ioctl
values to match.

Signed-off-by: Tom Zanussi <tom.zanussi at linux.intel.com>
---
 drivers/gpu/drm/emgd/emgd/drm/emgd_drv.c | 142 +++++++++++++++----------------
 drivers/gpu/drm/emgd/include/emgd_drm.h  |   8 +-
 2 files changed, 75 insertions(+), 75 deletions(-)

diff --git a/drivers/gpu/drm/emgd/emgd/drm/emgd_drv.c b/drivers/gpu/drm/emgd/emgd/drm/emgd_drv.c
index 21f1c41..11a53b0 100755
--- a/drivers/gpu/drm/emgd/emgd/drm/emgd_drv.c
+++ b/drivers/gpu/drm/emgd/emgd/drm/emgd_drv.c
@@ -267,12 +267,12 @@ static struct pci_device_id pciidlist[] = {
 };
 
 /*
- * To use DRM_IOCTL_DEF, the first arg should be the local (zero based)
- * IOCTL number, not the global number.
+ * To use DRM_IOCTL_DEF_DRV, the first arg should be the local (zero
+ * based) IOCTL number, not the global number.
  */
-#define EMGD_IOCTL_DEF(ioctl, _func, _flags) \
-	[DRM_IOCTL_NR(ioctl) - DRM_COMMAND_BASE] = \
-		{.cmd = ioctl, .func = _func, .flags = _flags}
+#define EMGD_IOCTL_DEF_DRV(ioctl, _func, _flags) \
+	[DRM_IOCTL_NR(DRM_IOCTL_##ioctl) - DRM_COMMAND_BASE] = \
+	{.cmd = DRM_##ioctl, .func = _func, .flags = _flags, .cmd_drv = DRM_IOCTL_##ioctl, .name = #ioctl}
 
 static struct drm_ioctl_desc emgd_ioctl[] = {
 	/*
@@ -291,141 +291,141 @@ static struct drm_ioctl_desc emgd_ioctl[] = {
 	 * DRM_UNLOCKED private EMGD ioctl's can run/work in serial mode only,
 	 * one by one.
 	 */
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_ALTER_CURSOR, emgd_alter_cursor,
+	EMGD_IOCTL_DEF_DRV(IGD_ALTER_CURSOR, emgd_alter_cursor,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_ALTER_CURSOR_POS, emgd_alter_cursor_pos,
+	EMGD_IOCTL_DEF_DRV(IGD_ALTER_CURSOR_POS, emgd_alter_cursor_pos,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_ALTER_DISPLAYS, emgd_alter_displays,
+	EMGD_IOCTL_DEF_DRV(IGD_ALTER_DISPLAYS, emgd_alter_displays,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_ALTER_OVL, emgd_alter_ovl, DRM_MASTER|DRM_UNLOCKED),
+	EMGD_IOCTL_DEF_DRV(IGD_ALTER_OVL, emgd_alter_ovl, DRM_MASTER|DRM_UNLOCKED),
 	/* Making DRM_IOCTL_IGD_ALTER_OVL2 DRM_AUTH so that libva wayland can 
 	 * call alter_ovl without going through X server.
 	 */
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_ALTER_OVL2, emgd_alter_ovl2, DRM_AUTH|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_APPCTX_ALLOC, emgd_appcontext_alloc,
+	EMGD_IOCTL_DEF_DRV(IGD_ALTER_OVL2, emgd_alter_ovl2, DRM_AUTH|DRM_UNLOCKED),
+	EMGD_IOCTL_DEF_DRV(IGD_APPCTX_ALLOC, emgd_appcontext_alloc,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_APPCTX_FREE, emgd_appcontext_free,
+	EMGD_IOCTL_DEF_DRV(IGD_APPCTX_FREE, emgd_appcontext_free,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_DRIVER_SAVE_RESTORE, emgd_driver_save_restore,
+	EMGD_IOCTL_DEF_DRV(IGD_DRIVER_SAVE_RESTORE, emgd_driver_save_restore,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_ENABLE_PORT, emgd_enable_port, DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_GET_ATTRS, emgd_get_attrs, DRM_MASTER|DRM_UNLOCKED),
+	EMGD_IOCTL_DEF_DRV(IGD_ENABLE_PORT, emgd_enable_port, DRM_MASTER|DRM_UNLOCKED),
+	EMGD_IOCTL_DEF_DRV(IGD_GET_ATTRS, emgd_get_attrs, DRM_MASTER|DRM_UNLOCKED),
 	/* Making DRM_IOCTL_IGD_GET_DISPLAY DRM_AUTH so that libva wayland can
 	 * obtain the display handle without going through x server.
 	 */ 
-    EMGD_IOCTL_DEF(DRM_IOCTL_IGD_GET_DISPLAY, emgd_get_display, DRM_AUTH|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_GET_DRM_CONFIG, emgd_get_drm_config,
+    EMGD_IOCTL_DEF_DRV(IGD_GET_DISPLAY, emgd_get_display, DRM_AUTH|DRM_UNLOCKED),
+	EMGD_IOCTL_DEF_DRV(IGD_GET_DRM_CONFIG, emgd_get_drm_config,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_GET_EDID_BLOCK, emgd_get_EDID_block,
+	EMGD_IOCTL_DEF_DRV(IGD_GET_EDID_BLOCK, emgd_get_EDID_block,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_GET_EDID_INFO, emgd_get_EDID_info,
+	EMGD_IOCTL_DEF_DRV(IGD_GET_EDID_INFO, emgd_get_EDID_info,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_GET_PIXELFORMATS, emgd_get_pixelformats,
+	EMGD_IOCTL_DEF_DRV(IGD_GET_PIXELFORMATS, emgd_get_pixelformats,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_GET_PORT_INFO, emgd_get_port_info,
+	EMGD_IOCTL_DEF_DRV(IGD_GET_PORT_INFO, emgd_get_port_info,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_GMM_ALLOC_REGION, emgd_gmm_alloc_region,
+	EMGD_IOCTL_DEF_DRV(IGD_GMM_ALLOC_REGION, emgd_gmm_alloc_region,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_GMM_ALLOC_SURFACE, emgd_gmm_alloc_surface,
+	EMGD_IOCTL_DEF_DRV(IGD_GMM_ALLOC_SURFACE, emgd_gmm_alloc_surface,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_GMM_GET_NUM_SURFACE, emgd_gmm_get_num_surface,
+	EMGD_IOCTL_DEF_DRV(IGD_GMM_GET_NUM_SURFACE, emgd_gmm_get_num_surface,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_GMM_GET_SURFACE_LIST,emgd_gmm_get_surface_list,
+	EMGD_IOCTL_DEF_DRV(IGD_GMM_GET_SURFACE_LIST,emgd_gmm_get_surface_list,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_GMM_FREE, emgd_gmm_free,
+	EMGD_IOCTL_DEF_DRV(IGD_GMM_FREE, emgd_gmm_free,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_GMM_FLUSH_CACHE, emgd_gmm_flush_cache,
+	EMGD_IOCTL_DEF_DRV(IGD_GMM_FLUSH_CACHE, emgd_gmm_flush_cache,
 		DRM_MASTER|DRM_UNLOCKED),
 	/*
 	 * Externally handled IOCTL's. These are routed to the Imagination Tech
 	 * kernel services.
 	 *   function prototypes in services4/srvkm/env/linux/pvr_drm.h
 	 */
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_RESERVED_1, PVRSRV_BridgeDispatchKM, DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_RESERVED_2, PVRDRM_Dummy_ioctl, DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_RESERVED_3, PVRDRM_Dummy_ioctl, DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_RESERVED_4, PVRDRMIsMaster, DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_RESERVED_5, PVRDRMUnprivCmd, DRM_UNLOCKED),
+	EMGD_IOCTL_DEF_DRV(IGD_RESERVED_1, PVRSRV_BridgeDispatchKM, DRM_UNLOCKED),
+	EMGD_IOCTL_DEF_DRV(IGD_RESERVED_2, PVRDRM_Dummy_ioctl, DRM_UNLOCKED),
+	EMGD_IOCTL_DEF_DRV(IGD_RESERVED_3, PVRDRM_Dummy_ioctl, DRM_UNLOCKED),
+	EMGD_IOCTL_DEF_DRV(IGD_RESERVED_4, PVRDRMIsMaster, DRM_MASTER|DRM_UNLOCKED),
+	EMGD_IOCTL_DEF_DRV(IGD_RESERVED_5, PVRDRMUnprivCmd, DRM_UNLOCKED),
 
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_PAN_DISPLAY, emgd_pan_display,
+	EMGD_IOCTL_DEF_DRV(IGD_PAN_DISPLAY, emgd_pan_display,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_POWER_DISPLAY, emgd_power_display,
+	EMGD_IOCTL_DEF_DRV(IGD_POWER_DISPLAY, emgd_power_display,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_PWR_ALTER, emgd_pwr_alter, DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_QUERY_DC, emgd_query_dc,
+	EMGD_IOCTL_DEF_DRV(IGD_PWR_ALTER, emgd_pwr_alter, DRM_MASTER|DRM_UNLOCKED),
+	EMGD_IOCTL_DEF_DRV(IGD_QUERY_DC, emgd_query_dc,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_QUERY_MAX_SIZE_OVL, emgd_query_max_size_ovl,
+	EMGD_IOCTL_DEF_DRV(IGD_QUERY_MAX_SIZE_OVL, emgd_query_max_size_ovl,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_QUERY_OVL, emgd_query_ovl, DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_QUERY_MODE_LIST, emgd_query_mode_list,
+	EMGD_IOCTL_DEF_DRV(IGD_QUERY_OVL, emgd_query_ovl, DRM_MASTER|DRM_UNLOCKED),
+	EMGD_IOCTL_DEF_DRV(IGD_QUERY_MODE_LIST, emgd_query_mode_list,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_GET_GOLDEN_HTOTAL, emgd_get_golden_htotal,
+	EMGD_IOCTL_DEF_DRV(IGD_GET_GOLDEN_HTOTAL, emgd_get_golden_htotal,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_CONTROL_PLANE_FORMAT, emgd_control_plane_format,
+	EMGD_IOCTL_DEF_DRV(IGD_CONTROL_PLANE_FORMAT, emgd_control_plane_format,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_SET_OVERLAY_DISPLAY, emgd_set_overlay_display,
+	EMGD_IOCTL_DEF_DRV(IGD_SET_OVERLAY_DISPLAY, emgd_set_overlay_display,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_QUERY_2D_CAPS_HWHINT, emgd_query_2d_caps_hwhint,
+	EMGD_IOCTL_DEF_DRV(IGD_QUERY_2D_CAPS_HWHINT, emgd_query_2d_caps_hwhint,
 		DRM_MASTER|DRM_UNLOCKED),
 	/*
 	 * For PDUMP
 	 */
 #if defined(PDUMP)
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_RESERVED_6, dbgdrv_ioctl, 0),
+	EMGD_IOCTL_DEF_DRV(IGD_RESERVED_6, dbgdrv_ioctl, 0),
 #else
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_RESERVED_6, NULL, 0),
+	EMGD_IOCTL_DEF_DRV(IGD_RESERVED_6, NULL, 0),
 #endif
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_SET_ATTRS, emgd_set_attrs, DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_SET_PALETTE_ENTRY, emgd_set_palette_entry,
+	EMGD_IOCTL_DEF_DRV(IGD_SET_ATTRS, emgd_set_attrs, DRM_MASTER|DRM_UNLOCKED),
+	EMGD_IOCTL_DEF_DRV(IGD_SET_PALETTE_ENTRY, emgd_set_palette_entry,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_SET_SURFACE, emgd_set_surface, DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_SYNC, emgd_sync, DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_DRIVER_PRE_INIT, emgd_driver_pre_init,
+	EMGD_IOCTL_DEF_DRV(IGD_SET_SURFACE, emgd_set_surface, DRM_MASTER|DRM_UNLOCKED),
+	EMGD_IOCTL_DEF_DRV(IGD_SYNC, emgd_sync, DRM_MASTER|DRM_UNLOCKED),
+	EMGD_IOCTL_DEF_DRV(IGD_DRIVER_PRE_INIT, emgd_driver_pre_init,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_DRIVER_GET_PORTS, emgd_driver_get_ports,
+	EMGD_IOCTL_DEF_DRV(IGD_DRIVER_GET_PORTS, emgd_driver_get_ports,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_GET_OVL_INIT_PARAMS, emgd_get_ovl_init_params,
+	EMGD_IOCTL_DEF_DRV(IGD_GET_OVL_INIT_PARAMS, emgd_get_ovl_init_params,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_GET_PAGE_LIST, emgd_get_page_list,
+	EMGD_IOCTL_DEF_DRV(IGD_GET_PAGE_LIST, emgd_get_page_list,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_START_PVRSRV, emgd_start_pvrsrv,
+	EMGD_IOCTL_DEF_DRV(IGD_START_PVRSRV, emgd_start_pvrsrv,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_TEST_PVRSRV, emgd_test_pvrsrv,
+	EMGD_IOCTL_DEF_DRV(IGD_TEST_PVRSRV, emgd_test_pvrsrv,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_GET_CHIPSET_INFO, emgd_get_chipset_info,
+	EMGD_IOCTL_DEF_DRV(IGD_GET_CHIPSET_INFO, emgd_get_chipset_info,
 		DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_DIHCLONE_SET_SURFACE, emgd_dihclone_set_surface, DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_PREINIT_MMU, emgd_preinit_mmu, DRM_MASTER|DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_UNLOCK_PLANES, emgd_unlock_planes, DRM_MASTER|DRM_UNLOCKED),
+	EMGD_IOCTL_DEF_DRV(IGD_DIHCLONE_SET_SURFACE, emgd_dihclone_set_surface, DRM_MASTER|DRM_UNLOCKED),
+	EMGD_IOCTL_DEF_DRV(IGD_PREINIT_MMU, emgd_preinit_mmu, DRM_MASTER|DRM_UNLOCKED),
+	EMGD_IOCTL_DEF_DRV(IGD_UNLOCK_PLANES, emgd_unlock_planes, DRM_MASTER|DRM_UNLOCKED),
 
 	/*
 	 * For VIDEO (MSVDX/TOPAZ
 	 */
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_VIDEO_CMD_BUF, emgd_video_cmd_buf,
+	EMGD_IOCTL_DEF_DRV(IGD_VIDEO_CMD_BUF, emgd_video_cmd_buf,
 			DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_INIT_VIDEO, emgd_init_video,
+	EMGD_IOCTL_DEF_DRV(IGD_INIT_VIDEO, emgd_init_video,
 			DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_GET_DEVICE_INFO, emgd_get_device_info,
+	EMGD_IOCTL_DEF_DRV(IGD_GET_DEVICE_INFO, emgd_get_device_info,
 			DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_VIDEO_GET_INFO, emgd_video_get_info,
+	EMGD_IOCTL_DEF_DRV(IGD_VIDEO_GET_INFO, emgd_video_get_info,
 			DRM_UNLOCKED),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_VIDEO_FLUSH_TLB, emgd_video_flush_tlb,
+	EMGD_IOCTL_DEF_DRV(IGD_VIDEO_FLUSH_TLB, emgd_video_flush_tlb,
 			DRM_UNLOCKED),
 
 	/* For Buffer Class of Texture Stream */
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_BC_TS_INIT, emgd_bc_ts_cmd_init,
+	EMGD_IOCTL_DEF_DRV(IGD_BC_TS_INIT, emgd_bc_ts_cmd_init,
 		DRM_AUTH),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_BC_TS_UNINIT, emgd_bc_ts_cmd_uninit,
+	EMGD_IOCTL_DEF_DRV(IGD_BC_TS_UNINIT, emgd_bc_ts_cmd_uninit,
 		DRM_AUTH),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_BC_TS_REQUEST_BUFFERS, emgd_bc_ts_cmd_request_buffers,
+	EMGD_IOCTL_DEF_DRV(IGD_BC_TS_REQUEST_BUFFERS, emgd_bc_ts_cmd_request_buffers,
 		DRM_AUTH),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_BC_TS_RELEASE_BUFFERS, emgd_bc_ts_cmd_release_buffers,
+	EMGD_IOCTL_DEF_DRV(IGD_BC_TS_RELEASE_BUFFERS, emgd_bc_ts_cmd_release_buffers,
 		DRM_AUTH),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_BC_TS_SET_BUFFER_INFO, emgd_bc_ts_set_buffer_info,
+	EMGD_IOCTL_DEF_DRV(IGD_BC_TS_SET_BUFFER_INFO, emgd_bc_ts_set_buffer_info,
 		DRM_AUTH),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_BC_TS_GET_BUFFERS_COUNT, emgd_bc_ts_get_buffers_count,
+	EMGD_IOCTL_DEF_DRV(IGD_BC_TS_GET_BUFFERS_COUNT, emgd_bc_ts_get_buffers_count,
 		DRM_AUTH),
-	EMGD_IOCTL_DEF(DRM_IOCTL_IGD_BC_TS_GET_BUFFER_INDEX, emgd_bc_ts_get_buffer_index,
+	EMGD_IOCTL_DEF_DRV(IGD_BC_TS_GET_BUFFER_INDEX, emgd_bc_ts_get_buffer_index,
 		DRM_AUTH),
 };
 
diff --git a/drivers/gpu/drm/emgd/include/emgd_drm.h b/drivers/gpu/drm/emgd/include/emgd_drm.h
index a1d946d..42a5e56 100755
--- a/drivers/gpu/drm/emgd/include/emgd_drm.h
+++ b/drivers/gpu/drm/emgd/include/emgd_drm.h
@@ -902,19 +902,19 @@ typedef struct _kdrm_unlock_planes {
 #define DRM_IOCTL_IGD_RESERVED_6       DRM_IO(DRM_IGD_RESERVED_6 + BASE)
 
 /* For Video (MXVDX/TOPAZ) */
-#define DRM_IOCTL_IGD_VIDEO_CMD_BUF    DRM_IOR(DRM_IGD_VIDEO_CMD_BUF + BASE,\
+#define DRM_IOCTL_IGD_VIDEO_CMD_BUF    DRM_IOWR(DRM_IGD_VIDEO_CMD_BUF + BASE,\
 		emgd_drm_video_cmd_buf_t)
 #define DRM_IOCTL_IGD_GET_DEVICE_INFO  DRM_IOR(DRM_IGD_GET_DEVICE_INFO + BASE,\
 		emgd_drm_device_info_t)
 #define DRM_IOCTL_IGD_GET_PAGE_LIST    DRM_IOR(DRM_IGD_GET_PAGE_LIST + BASE,\
 		emgd_drm_get_page_list_t)
-#define DRM_IOCTL_IGD_INIT_VIDEO       DRM_IOR(DRM_IGD_INIT_VIDEO + BASE,\
+#define DRM_IOCTL_IGD_INIT_VIDEO       DRM_IOWR(DRM_IGD_INIT_VIDEO + BASE,\
 		emgd_drm_init_video_t)
-#define DRM_IOCTL_IGD_VIDEO_GET_INFO  DRM_IOR(DRM_IGD_VIDEO_GET_INFO + BASE,\
+#define DRM_IOCTL_IGD_VIDEO_GET_INFO  DRM_IOWR(DRM_IGD_VIDEO_GET_INFO + BASE,\
 		emgd_drm_video_get_info_t)
 #define DRM_IOCTL_IGD_VIDEO_FLUSH_TLB  DRM_IOR(DRM_IGD_VIDEO_FLUSH_TLB + BASE,\
 		emgd_drm_video_flush_tlb_t)
-#define DRM_IOCTL_IGD_PREINIT_MMU  DRM_IOR(DRM_IGD_PREINIT_MMU + BASE,\
+#define DRM_IOCTL_IGD_PREINIT_MMU  DRM_IOWR(DRM_IGD_PREINIT_MMU + BASE,\
 		emgd_drm_preinit_mmu_t)
 #define DRM_IOCTL_IGD_UNLOCK_PLANES  DRM_IOR(DRM_IGD_UNLOCK_PLANES + BASE,\
 		emgd_drm_unlock_planes_t)
-- 
1.7.11.4




More information about the linux-yocto mailing list