int radeondrm_ioctl(struct drm_device *dev, u_long cmd, caddr_t data, struct drm_file *file_priv) { if (file_priv->authenticated == 1) { switch (cmd) { case DRM_IOCTL_RADEON_CP_IDLE: return (radeon_cp_idle(dev, data, file_priv)); case DRM_IOCTL_RADEON_CP_RESUME: return (radeon_cp_resume(dev)); case DRM_IOCTL_RADEON_SWAP: return (radeon_cp_swap(dev, data, file_priv)); case DRM_IOCTL_RADEON_CLEAR: return (radeon_cp_clear(dev, data, file_priv)); case DRM_IOCTL_RADEON_TEXTURE: return (radeon_cp_texture(dev, data, file_priv)); case DRM_IOCTL_RADEON_STIPPLE: return (radeon_cp_stipple(dev, data, file_priv)); case DRM_IOCTL_RADEON_CMDBUF: return (radeon_cp_cmdbuf(dev, data, file_priv)); case DRM_IOCTL_RADEON_GETPARAM: return (radeon_cp_getparam(dev, data, file_priv)); case DRM_IOCTL_RADEON_FLIP: return (radeon_cp_flip(dev, data, file_priv)); case DRM_IOCTL_RADEON_ALLOC: return (radeon_mem_alloc(dev, data, file_priv)); case DRM_IOCTL_RADEON_FREE: return (radeon_mem_free(dev, data, file_priv)); case DRM_IOCTL_RADEON_IRQ_EMIT: return (radeon_irq_emit(dev, data, file_priv)); case DRM_IOCTL_RADEON_IRQ_WAIT: return (radeon_irq_wait(dev, data, file_priv)); case DRM_IOCTL_RADEON_SETPARAM: return (radeon_cp_setparam(dev, data, file_priv)); case DRM_IOCTL_RADEON_SURF_ALLOC: return (radeon_surface_alloc(dev, data, file_priv)); case DRM_IOCTL_RADEON_SURF_FREE: return (radeon_surface_free(dev, data, file_priv)); case DRM_IOCTL_RADEON_CS: return (radeon_cs_ioctl(dev, data, file_priv)); } } if (file_priv->master == 1) { switch (cmd) { case DRM_IOCTL_RADEON_CP_INIT: return (radeon_cp_init(dev, data, file_priv)); case DRM_IOCTL_RADEON_CP_START: return (radeon_cp_start(dev, data, file_priv)); case DRM_IOCTL_RADEON_CP_STOP: return (radeon_cp_stop(dev, data, file_priv)); case DRM_IOCTL_RADEON_CP_RESET: return (radeon_cp_reset(dev, data, file_priv)); case DRM_IOCTL_RADEON_INDIRECT: return (radeon_cp_indirect(dev, data, file_priv)); case DRM_IOCTL_RADEON_INIT_HEAP: return (radeon_mem_init_heap(dev, data, file_priv)); } } return (EINVAL); }
int radeon_ioctl_kms(struct drm_device *dev, u_long cmd, caddr_t data, struct drm_file *file_priv) { if (file_priv->authenticated == 1) { switch (cmd) { case DRM_IOCTL_RADEON_CP_IDLE: return (radeon_cp_idle_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_CP_RESUME: return (radeon_cp_resume_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_RESET: return (radeon_engine_reset_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_FULLSCREEN: return (radeon_fullscreen_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_SWAP: return (radeon_cp_swap_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_CLEAR: return (radeon_cp_clear_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_VERTEX: return (radeon_cp_vertex_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_INDICES: return (radeon_cp_indices_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_TEXTURE: return (radeon_cp_texture_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_STIPPLE: return (radeon_cp_stipple_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_VERTEX2: return (radeon_cp_vertex2_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_CMDBUF: return (radeon_cp_cmdbuf_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_GETPARAM: return (radeon_cp_getparam_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_FLIP: return (radeon_cp_flip_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_ALLOC: return (radeon_mem_alloc_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_FREE: return (radeon_mem_free_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_IRQ_EMIT: return (radeon_irq_emit_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_IRQ_WAIT: return (radeon_irq_wait_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_SETPARAM: return (radeon_cp_setparam_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_SURF_ALLOC: return (radeon_surface_alloc_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_SURF_FREE: return (radeon_surface_free_kms(dev, data, file_priv)); /* KMS */ case DRM_IOCTL_RADEON_GEM_INFO: return (radeon_gem_info_ioctl(dev, data, file_priv)); case DRM_IOCTL_RADEON_GEM_CREATE: return (radeon_gem_create_ioctl(dev, data, file_priv)); case DRM_IOCTL_RADEON_GEM_MMAP: return (radeon_gem_mmap_ioctl(dev, data, file_priv)); case DRM_IOCTL_RADEON_GEM_SET_DOMAIN: return (radeon_gem_set_domain_ioctl(dev, data, file_priv)); case DRM_IOCTL_RADEON_GEM_PREAD: return (radeon_gem_pread_ioctl(dev, data, file_priv)); case DRM_IOCTL_RADEON_GEM_PWRITE: return (radeon_gem_pwrite_ioctl(dev, data, file_priv)); case DRM_IOCTL_RADEON_GEM_WAIT_IDLE: return (radeon_gem_wait_idle_ioctl(dev, data, file_priv)); case DRM_IOCTL_RADEON_CS: return (radeon_cs_ioctl(dev, data, file_priv)); case DRM_IOCTL_RADEON_INFO: return (radeon_info_ioctl(dev, data, file_priv)); case DRM_IOCTL_RADEON_GEM_SET_TILING: return (radeon_gem_set_tiling_ioctl(dev, data, file_priv)); case DRM_IOCTL_RADEON_GEM_GET_TILING: return (radeon_gem_get_tiling_ioctl(dev, data, file_priv)); case DRM_IOCTL_RADEON_GEM_BUSY: return (radeon_gem_busy_ioctl(dev, data, file_priv)); case DRM_IOCTL_RADEON_GEM_VA: return (radeon_gem_va_ioctl(dev, data, file_priv)); } } if (file_priv->master == 1) { switch (cmd) { case DRM_IOCTL_RADEON_CP_INIT: return (radeon_cp_init_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_CP_START: return (radeon_cp_start_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_CP_STOP: return (radeon_cp_stop_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_CP_RESET: return (radeon_cp_reset_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_INDIRECT: return (radeon_cp_indirect_kms(dev, data, file_priv)); case DRM_IOCTL_RADEON_INIT_HEAP: return (radeon_mem_init_heap_kms(dev, data, file_priv)); } } return -EINVAL; }