mirror of https://gitee.com/openkylin/linux.git
gma500: add an mmap ioctl
This does the same as the dumb mmap but we want them separated in the ABI in case a future extension to the dumb interface means we can't treat them the same way. Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
bd7b9f91dd
commit
7dfe43c52d
|
@ -261,3 +261,11 @@ int psb_gem_create_ioctl(struct drm_device *dev, void *data,
|
|||
return psb_gem_create(file, dev, args->size, &args->handle);
|
||||
}
|
||||
|
||||
int psb_gem_mmap_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file)
|
||||
{
|
||||
struct drm_psb_gem_mmap *args = data;
|
||||
return dev->driver->dumb_map_offset(file, dev,
|
||||
args->handle, &args->offset);
|
||||
}
|
||||
|
||||
|
|
|
@ -162,6 +162,7 @@ struct drm_psb_register_rw_arg {
|
|||
|
||||
#define DRM_PSB_GEM_CREATE 0x10
|
||||
#define DRM_PSB_2D_OP 0x11
|
||||
#define DRM_PSB_GEM_MMAP 0x12
|
||||
#define DRM_PSB_DPST 0x1B
|
||||
#define DRM_PSB_GAMMA 0x1C
|
||||
#define DRM_PSB_DPST_BL 0x1D
|
||||
|
@ -203,4 +204,15 @@ struct drm_psb_2d_op {
|
|||
__u32 cmd[PSB_2D_OP_BUFLEN];
|
||||
};
|
||||
|
||||
struct drm_psb_gem_mmap {
|
||||
__u32 handle;
|
||||
__u32 pad;
|
||||
/**
|
||||
* Fake offset to use for subsequent mmap call
|
||||
*
|
||||
* This is a fixed-size type for 32/64 compatibility.
|
||||
*/
|
||||
__u64 offset;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -127,6 +127,9 @@ MODULE_DEVICE_TABLE(pci, pciidlist);
|
|||
#define DRM_IOCTL_PSB_2D_OP \
|
||||
DRM_IOW(DRM_PSB_2D_OP + DRM_COMMAND_BASE, \
|
||||
struct drm_psb_2d_op)
|
||||
#define DRM_IOCTL_PSB_GEM_MMAP \
|
||||
DRM_IOWR(DRM_PSB_GEM_MMAP + DRM_COMMAND_BASE, \
|
||||
struct drm_psb_gem_mmap)
|
||||
|
||||
static int psb_sizes_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
|
@ -167,7 +170,10 @@ static struct drm_ioctl_desc psb_ioctls[] = {
|
|||
psb_intel_get_pipe_from_crtc_id, 0),
|
||||
PSB_IOCTL_DEF(DRM_IOCTL_PSB_GEM_CREATE, psb_gem_create_ioctl,
|
||||
DRM_UNLOCKED | DRM_AUTH),
|
||||
PSB_IOCTL_DEF(DRM_IOCTL_PSB_2D_OP, psb_accel_ioctl, DRM_UNLOCKED),
|
||||
PSB_IOCTL_DEF(DRM_IOCTL_PSB_2D_OP, psb_accel_ioctl,
|
||||
DRM_UNLOCKED| DRM_AUTH),
|
||||
PSB_IOCTL_DEF(DRM_IOCTL_PSB_GEM_MMAP, psb_gem_mmap_ioctl,
|
||||
DRM_UNLOCKED | DRM_AUTH),
|
||||
};
|
||||
|
||||
static void psb_lastclose(struct drm_device *dev)
|
||||
|
|
|
@ -799,6 +799,8 @@ extern int psb_gem_dumb_map_gtt(struct drm_file *file, struct drm_device *dev,
|
|||
extern int psb_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf);
|
||||
extern int psb_gem_create_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file);
|
||||
extern int psb_gem_mmap_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file);
|
||||
|
||||
/* psb_device.c */
|
||||
extern const struct psb_ops psb_chip_ops;
|
||||
|
|
Loading…
Reference in New Issue