Add stub {get,set}param ioctls.
authorBen Skeggs <darktama@iinet.net.au>
Wed, 30 Aug 2006 06:55:02 +0000 (16:55 +1000)
committerBen Skeggs <darktama@iinet.net.au>
Wed, 30 Aug 2006 06:55:02 +0000 (16:55 +1000)
shared-core/nouveau_drm.h
shared-core/nouveau_drv.h
shared-core/nouveau_fifo.c
shared-core/nouveau_state.c

index eab8ca2..76fb3a1 100644 (file)
@@ -79,6 +79,18 @@ typedef struct drm_nouveau_mem_free {
 }
 drm_nouveau_mem_free_t;
 
+typedef struct drm_nouveau_getparam {
+       unsigned int param;
+       unsigned int value;
+}
+drm_nouveau_getparam_t;
+
+typedef struct drm_nouveau_setparam {
+       unsigned int param;
+       unsigned int value;
+}
+drm_nouveau_setparam_t;
+
 enum nouveau_card_type {
        NV_UNKNOWN =0,
        NV_01      =1,
@@ -114,6 +126,8 @@ drm_nouveau_sarea_t;
 #define DRM_NOUVEAU_DMA_OBJECT_INIT 0x03 // We don't want this eventually..
 #define DRM_NOUVEAU_MEM_ALLOC       0x04
 #define DRM_NOUVEAU_MEM_FREE        0x05
+#define DRM_NOUVEAU_GETPARAM        0x06
+#define DRM_NOUVEAU_SETPARAM        0x07
 
 #endif /* __NOUVEAU_DRM_H__ */
 
index c4f9718..d701401 100644 (file)
@@ -131,6 +131,8 @@ extern void nouveau_preclose(drm_device_t * dev, DRMFILE filp);
 extern int nouveau_load(struct drm_device *dev, unsigned long flags);
 extern int nouveau_firstopen(struct drm_device *dev);
 extern int nouveau_unload(struct drm_device *dev);
+extern int nouveau_ioctl_getparam(DRM_IOCTL_ARGS);
+extern int nouveau_ioctl_setparam(DRM_IOCTL_ARGS);
 
 /* nouveau_mem.c */
 extern uint64_t          nouveau_mem_fb_amount(struct drm_device *dev);
index 18ad7c5..c0d54b3 100644 (file)
@@ -263,6 +263,8 @@ drm_ioctl_desc_t nouveau_ioctls[] = {
        [DRM_IOCTL_NR(DRM_NOUVEAU_DMA_OBJECT_INIT)] = {nouveau_ioctl_dma_object_init, DRM_AUTH},
        [DRM_IOCTL_NR(DRM_NOUVEAU_MEM_ALLOC)] = {nouveau_ioctl_mem_alloc, DRM_AUTH},
        [DRM_IOCTL_NR(DRM_NOUVEAU_MEM_FREE)] = {nouveau_ioctl_mem_free, DRM_AUTH},
+       [DRM_IOCTL_NR(DRM_NOUVEAU_GETPARAM)] = {nouveau_ioctl_getparam, DRM_AUTH},
+       [DRM_IOCTL_NR(DRM_NOUVEAU_SETPARAM)] = {nouveau_ioctl_setparam, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY},     
 };
 
 int nouveau_max_ioctl = DRM_ARRAY_SIZE(nouveau_ioctls);
index 3bfa99c..01ebbc8 100644 (file)
@@ -132,3 +132,39 @@ int nouveau_unload(struct drm_device *dev)
        return 0;
 }
 
+int nouveau_ioctl_getparam(DRM_IOCTL_ARGS)
+{
+       DRM_DEVICE;
+       drm_nouveau_getparam_t getparam;
+
+       DRM_COPY_FROM_USER_IOCTL(getparam, (drm_nouveau_getparam_t __user *)data,
+                       sizeof(getparam));
+
+       switch (getparam.param) {
+       default:
+               DRM_ERROR("unknown parameter %d\n", getparam.param);
+               return DRM_ERR(EINVAL);
+       }
+
+       DRM_COPY_TO_USER_IOCTL((drm_nouveau_getparam_t __user *)data, getparam,
+                       sizeof(getparam));
+       return 0;
+}
+
+int nouveau_ioctl_setparam(DRM_IOCTL_ARGS)
+{
+       DRM_DEVICE;
+       drm_nouveau_setparam_t setparam;
+
+       DRM_COPY_FROM_USER_IOCTL(setparam, (drm_nouveau_setparam_t __user *)data,
+                       sizeof(setparam));
+
+       switch (setparam.param) {
+       default:
+               DRM_ERROR("unknown parameter %d\n", setparam.param);
+               return DRM_ERR(EINVAL);
+       }
+
+       return 0;
+}
+