drm: Replace filp in ioctl arguments with drm_file *file_priv.
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / char / drm / r300_cmdbuf.c
index 032a022ec6a8d81cc8c1f322ffcbdf0392ebcc47..59b2944811c50c7c9e0269585ba525ce88a49a4e 100644 (file)
@@ -55,7 +55,7 @@ static const int r300_cliprect_cntl[4] = {
 static int r300_emit_cliprects(drm_radeon_private_t *dev_priv,
                               drm_radeon_kcmd_buffer_t *cmdbuf, int n)
 {
-       drm_clip_rect_t box;
+       struct drm_clip_rect box;
        int nr;
        int i;
        RING_LOCALS;
@@ -74,7 +74,7 @@ static int r300_emit_cliprects(drm_radeon_private_t *dev_priv,
                        if (DRM_COPY_FROM_USER_UNCHECKED
                            (&box, &cmdbuf->boxes[n + i], sizeof(box))) {
                                DRM_ERROR("copy cliprect faulted\n");
-                               return DRM_ERR(EFAULT);
+                               return -EFAULT;
                        }
 
                        box.x1 =
@@ -148,15 +148,16 @@ void r300_init_reg_flags(void)
 
        /* these match cmducs() command in r300_driver/r300/r300_cmdbuf.c */
        ADD_RANGE(R300_SE_VPORT_XSCALE, 6);
-       ADD_RANGE(0x2080, 1);
+       ADD_RANGE(R300_VAP_CNTL, 1);
        ADD_RANGE(R300_SE_VTE_CNTL, 2);
        ADD_RANGE(0x2134, 2);
-       ADD_RANGE(0x2140, 1);
+       ADD_RANGE(R300_VAP_CNTL_STATUS, 1);
        ADD_RANGE(R300_VAP_INPUT_CNTL_0, 2);
        ADD_RANGE(0x21DC, 1);
-       ADD_RANGE(0x221C, 1);
-       ADD_RANGE(0x2220, 4);
-       ADD_RANGE(0x2288, 1);
+       ADD_RANGE(R300_VAP_UNKNOWN_221C, 1);
+       ADD_RANGE(R300_VAP_CLIP_X_0, 4);
+       ADD_RANGE(R300_VAP_PVS_WAITIDLE, 1);
+       ADD_RANGE(R300_VAP_UNKNOWN_2288, 1);
        ADD_RANGE(R300_VAP_OUTPUT_VTX_FMT_0, 2);
        ADD_RANGE(R300_VAP_PVS_CNTL_1, 3);
        ADD_RANGE(R300_GB_ENABLE, 1);
@@ -168,13 +169,13 @@ void r300_init_reg_flags(void)
        ADD_RANGE(R300_RE_POINTSIZE, 1);
        ADD_RANGE(0x4230, 3);
        ADD_RANGE(R300_RE_LINE_CNT, 1);
-       ADD_RANGE(0x4238, 1);
+       ADD_RANGE(R300_RE_UNK4238, 1);
        ADD_RANGE(0x4260, 3);
-       ADD_RANGE(0x4274, 4);
-       ADD_RANGE(0x4288, 5);
-       ADD_RANGE(0x42A0, 1);
+       ADD_RANGE(R300_RE_SHADE, 4);
+       ADD_RANGE(R300_RE_POLYGON_MODE, 5);
+       ADD_RANGE(R300_RE_ZBIAS_CNTL, 1);
        ADD_RANGE(R300_RE_ZBIAS_T_FACTOR, 4);
-       ADD_RANGE(0x42B4, 1);
+       ADD_RANGE(R300_RE_OCCLUSION_CNTL, 1);
        ADD_RANGE(R300_RE_CULL_CNTL, 1);
        ADD_RANGE(0x42C0, 2);
        ADD_RANGE(R300_RS_CNTL_0, 2);
@@ -190,22 +191,22 @@ void r300_init_reg_flags(void)
        ADD_RANGE(R300_PFS_INSTR1_0, 64);
        ADD_RANGE(R300_PFS_INSTR2_0, 64);
        ADD_RANGE(R300_PFS_INSTR3_0, 64);
-       ADD_RANGE(0x4BC0, 1);
-       ADD_RANGE(0x4BC8, 3);
+       ADD_RANGE(R300_RE_FOG_STATE, 1);
+       ADD_RANGE(R300_FOG_COLOR_R, 3);
        ADD_RANGE(R300_PP_ALPHA_TEST, 2);
        ADD_RANGE(0x4BD8, 1);
        ADD_RANGE(R300_PFS_PARAM_0_X, 64);
        ADD_RANGE(0x4E00, 1);
        ADD_RANGE(R300_RB3D_CBLEND, 2);
        ADD_RANGE(R300_RB3D_COLORMASK, 1);
-       ADD_RANGE(0x4E10, 3);
+       ADD_RANGE(R300_RB3D_BLEND_COLOR, 3);
        ADD_RANGE_MARK(R300_RB3D_COLOROFFSET0, 1, MARK_CHECK_OFFSET);   /* check offset */
        ADD_RANGE(R300_RB3D_COLORPITCH0, 1);
        ADD_RANGE(0x4E50, 9);
        ADD_RANGE(0x4E88, 1);
        ADD_RANGE(0x4EA0, 2);
        ADD_RANGE(R300_RB3D_ZSTENCIL_CNTL_0, 3);
-       ADD_RANGE(0x4F10, 4);
+       ADD_RANGE(R300_RB3D_ZSTENCIL_FORMAT, 4);
        ADD_RANGE_MARK(R300_RB3D_DEPTHOFFSET, 1, MARK_CHECK_OFFSET);    /* check offset */
        ADD_RANGE(R300_RB3D_DEPTHPITCH, 1);
        ADD_RANGE(0x4F28, 1);
@@ -224,7 +225,7 @@ void r300_init_reg_flags(void)
        ADD_RANGE(R300_TX_BORDER_COLOR_0, 16);
 
        /* Sporadic registers used as primitives are emitted */
-       ADD_RANGE(0x4f18, 1);
+       ADD_RANGE(R300_RB3D_ZCACHE_CTLSTAT, 1);
        ADD_RANGE(R300_RB3D_DSTCACHE_CTLSTAT, 1);
        ADD_RANGE(R300_VAP_INPUT_ROUTE_0_0, 8);
        ADD_RANGE(R300_VAP_INPUT_ROUTE_1_0, 8);
@@ -262,7 +263,7 @@ static __inline__ int r300_emit_carefully_checked_packet0(drm_radeon_private_t *
                DRM_ERROR
                    ("Cannot emit more than 64 values at a time (reg=%04x sz=%d)\n",
                     reg, sz);
-               return DRM_ERR(EINVAL);
+               return -EINVAL;
        }
        for (i = 0; i < sz; i++) {
                values[i] = ((int *)cmdbuf->buf)[i];
@@ -274,13 +275,13 @@ static __inline__ int r300_emit_carefully_checked_packet0(drm_radeon_private_t *
                                DRM_ERROR
                                    ("Offset failed range check (reg=%04x sz=%d)\n",
                                     reg, sz);
-                               return DRM_ERR(EINVAL);
+                               return -EINVAL;
                        }
                        break;
                default:
                        DRM_ERROR("Register %04x failed check as flag=%02x\n",
                                  reg + i * 4, r300_reg_flags[(reg >> 2) + i]);
-                       return DRM_ERR(EINVAL);
+                       return -EINVAL;
                }
        }
 
@@ -316,12 +317,12 @@ static __inline__ int r300_emit_packet0(drm_radeon_private_t *dev_priv,
                return 0;
 
        if (sz * 4 > cmdbuf->bufsz)
-               return DRM_ERR(EINVAL);
+               return -EINVAL;
 
        if (reg + sz * 4 >= 0x10000) {
                DRM_ERROR("No such registers in hardware reg=%04x sz=%d\n", reg,
                          sz);
-               return DRM_ERR(EINVAL);
+               return -EINVAL;
        }
 
        if (r300_check_range(reg, sz)) {
@@ -361,7 +362,7 @@ static __inline__ int r300_emit_vpu(drm_radeon_private_t *dev_priv,
        if (!sz)
                return 0;
        if (sz * 16 > cmdbuf->bufsz)
-               return DRM_ERR(EINVAL);
+               return -EINVAL;
 
        BEGIN_RING(5 + sz * 4);
        /* Wait for VAP to come to senses.. */
@@ -390,7 +391,7 @@ static __inline__ int r300_emit_clear(drm_radeon_private_t *dev_priv,
        RING_LOCALS;
 
        if (8 * 4 > cmdbuf->bufsz)
-               return DRM_ERR(EINVAL);
+               return -EINVAL;
 
        BEGIN_RING(10);
        OUT_RING(CP_PACKET3(R200_3D_DRAW_IMMD_2, 8));
@@ -420,7 +421,7 @@ static __inline__ int r300_emit_3d_load_vbpntr(drm_radeon_private_t *dev_priv,
        if ((count + 1) > MAX_ARRAY_PACKET) {
                DRM_ERROR("Too large payload in 3D_LOAD_VBPNTR (count=%d)\n",
                          count);
-               return DRM_ERR(EINVAL);
+               return -EINVAL;
        }
        memset(payload, 0, MAX_ARRAY_PACKET * 4);
        memcpy(payload, cmdbuf->buf + 4, (count + 1) * 4);
@@ -436,7 +437,7 @@ static __inline__ int r300_emit_3d_load_vbpntr(drm_radeon_private_t *dev_priv,
                        DRM_ERROR
                            ("Offset failed range check (k=%d i=%d) while processing 3D_LOAD_VBPNTR packet.\n",
                             k, i);
-                       return DRM_ERR(EINVAL);
+                       return -EINVAL;
                }
                k++;
                i++;
@@ -447,7 +448,7 @@ static __inline__ int r300_emit_3d_load_vbpntr(drm_radeon_private_t *dev_priv,
                        DRM_ERROR
                            ("Offset failed range check (k=%d i=%d) while processing 3D_LOAD_VBPNTR packet.\n",
                             k, i);
-                       return DRM_ERR(EINVAL);
+                       return -EINVAL;
                }
                k++;
                i++;
@@ -457,7 +458,7 @@ static __inline__ int r300_emit_3d_load_vbpntr(drm_radeon_private_t *dev_priv,
                DRM_ERROR
                    ("Malformed 3D_LOAD_VBPNTR packet (k=%d i=%d narrays=%d count+1=%d).\n",
                     k, i, narrays, count + 1);
-               return DRM_ERR(EINVAL);
+               return -EINVAL;
        }
 
        /* all clear, output packet */
@@ -491,7 +492,7 @@ static __inline__ int r300_emit_bitblt_multi(drm_radeon_private_t *dev_priv,
                        ret = !radeon_check_offset(dev_priv, offset);
                        if (ret) {
                                DRM_ERROR("Invalid bitblt first offset is %08X\n", offset);
-                               return DRM_ERR(EINVAL);
+                               return -EINVAL;
                        }
                }
 
@@ -501,7 +502,7 @@ static __inline__ int r300_emit_bitblt_multi(drm_radeon_private_t *dev_priv,
                        ret = !radeon_check_offset(dev_priv, offset);
                        if (ret) {
                                DRM_ERROR("Invalid bitblt second offset is %08X\n", offset);
-                               return DRM_ERR(EINVAL);
+                               return -EINVAL;
                        }
                        
                }
@@ -529,12 +530,12 @@ static __inline__ int r300_emit_indx_buffer(drm_radeon_private_t *dev_priv,
 
        if ((cmd[1] & 0x8000ffff) != 0x80000810) {
                DRM_ERROR("Invalid indx_buffer reg address %08X\n", cmd[1]);
-               return DRM_ERR(EINVAL);
+               return -EINVAL;
        }
        ret = !radeon_check_offset(dev_priv, cmd[2]);
        if (ret) {
                DRM_ERROR("Invalid indx_buffer offset is %08X\n", cmd[2]);
-               return DRM_ERR(EINVAL);
+               return -EINVAL;
        }
 
        BEGIN_RING(count+2);
@@ -556,7 +557,7 @@ static __inline__ int r300_emit_raw_packet3(drm_radeon_private_t *dev_priv,
        RING_LOCALS;
 
        if (4 > cmdbuf->bufsz)
-               return DRM_ERR(EINVAL);
+               return -EINVAL;
 
        /* Fixme !! This simply emits a packet without much checking.
           We need to be smarter. */
@@ -567,7 +568,7 @@ static __inline__ int r300_emit_raw_packet3(drm_radeon_private_t *dev_priv,
        /* Is it packet 3 ? */
        if ((header >> 30) != 0x3) {
                DRM_ERROR("Not a packet3 header (0x%08x)\n", header);
-               return DRM_ERR(EINVAL);
+               return -EINVAL;
        }
 
        count = (header >> 16) & 0x3fff;
@@ -577,7 +578,7 @@ static __inline__ int r300_emit_raw_packet3(drm_radeon_private_t *dev_priv,
                DRM_ERROR
                    ("Expected packet3 of length %d but have only %d bytes left\n",
                     (count + 2) * 4, cmdbuf->bufsz);
-               return DRM_ERR(EINVAL);
+               return -EINVAL;
        }
 
        /* Is it a packet type we know about ? */
@@ -599,7 +600,7 @@ static __inline__ int r300_emit_raw_packet3(drm_radeon_private_t *dev_priv,
                break;
        default:
                DRM_ERROR("Unknown packet3 header (0x%08x)\n", header);
-               return DRM_ERR(EINVAL);
+               return -EINVAL;
        }
 
        BEGIN_RING(count + 2);
@@ -663,7 +664,7 @@ static __inline__ int r300_emit_packet3(drm_radeon_private_t *dev_priv,
                        DRM_ERROR("bad packet3 type %i at %p\n",
                                  header.packet3.packet,
                                  cmdbuf->buf - sizeof(header));
-                       return DRM_ERR(EINVAL);
+                       return -EINVAL;
                }
 
                n += R300_SIMULTANEOUS_CLIPRECTS;
@@ -692,9 +693,9 @@ static __inline__ void r300_pacify(drm_radeon_private_t *dev_priv)
 
        BEGIN_RING(6);
        OUT_RING(CP_PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0));
-       OUT_RING(0xa);
-       OUT_RING(CP_PACKET0(0x4f18, 0));
-       OUT_RING(0x3);
+       OUT_RING(R300_RB3D_DSTCACHE_UNKNOWN_0A);
+       OUT_RING(CP_PACKET0(R300_RB3D_ZCACHE_CTLSTAT, 0));
+       OUT_RING(R300_RB3D_ZCACHE_UNKNOWN_03);
        OUT_RING(CP_PACKET3(RADEON_CP_NOP, 0));
        OUT_RING(0x0);
        ADVANCE_RING();
@@ -705,7 +706,7 @@ static __inline__ void r300_pacify(drm_radeon_private_t *dev_priv)
  * The actual age emit is done by r300_do_cp_cmdbuf, which is why you must
  * be careful about how this function is called.
  */
-static void r300_discard_buffer(drm_device_t * dev, drm_buf_t * buf)
+static void r300_discard_buffer(struct drm_device * dev, struct drm_buf * buf)
 {
        drm_radeon_private_t *dev_priv = dev->dev_private;
        drm_radeon_buf_priv_t *buf_priv = buf->dev_private;
@@ -725,11 +726,11 @@ static int r300_scratch(drm_radeon_private_t *dev_priv,
        
        if (cmdbuf->bufsz < 
            (sizeof(u64) + header.scratch.n_bufs * sizeof(buf_idx))) {
-               return DRM_ERR(EINVAL);
+               return -EINVAL;
        }
        
        if (header.scratch.reg >= 5) {
-               return DRM_ERR(EINVAL);
+               return -EINVAL;
        }
        
        dev_priv->scratch_ages[header.scratch.reg]++;
@@ -744,21 +745,21 @@ static int r300_scratch(drm_radeon_private_t *dev_priv,
                buf_idx *= 2; /* 8 bytes per buf */
                
                if (DRM_COPY_TO_USER(ref_age_base + buf_idx, &dev_priv->scratch_ages[header.scratch.reg], sizeof(u32))) {
-                       return DRM_ERR(EINVAL);
+                       return -EINVAL;
                }
                                        
                if (DRM_COPY_FROM_USER(&h_pending, ref_age_base + buf_idx + 1, sizeof(u32))) {
-                       return DRM_ERR(EINVAL);
+                       return -EINVAL;
                }
                                        
                if (h_pending == 0) {
-                       return DRM_ERR(EINVAL);
+                       return -EINVAL;
                }
                                        
                h_pending--;
                                                
                if (DRM_COPY_TO_USER(ref_age_base + buf_idx + 1, &h_pending, sizeof(u32))) {
-                       return DRM_ERR(EINVAL);
+                       return -EINVAL;
                }
                                        
                cmdbuf->buf += sizeof(buf_idx);
@@ -766,8 +767,8 @@ static int r300_scratch(drm_radeon_private_t *dev_priv,
        }
        
        BEGIN_RING(2);
-       OUT_RING(CP_PACKET0(RADEON_SCRATCH_REG0 + header.scratch.reg * 4, 0));
-       OUT_RING(dev_priv->scratch_ages[header.scratch.reg]);
+       OUT_RING( CP_PACKET0( RADEON_SCRATCH_REG0 + header.scratch.reg * 4, 0 ) );
+       OUT_RING( dev_priv->scratch_ages[header.scratch.reg] );
        ADVANCE_RING();
        
        return 0;
@@ -778,14 +779,13 @@ static int r300_scratch(drm_radeon_private_t *dev_priv,
  * commands on the DMA ring buffer.
  * Called by the ioctl handler function radeon_cp_cmdbuf.
  */
-int r300_do_cp_cmdbuf(drm_device_t *dev,
-                     DRMFILE filp,
-                     drm_file_t *filp_priv,
+int r300_do_cp_cmdbuf(struct drm_device *dev,
+                     struct drm_file *file_priv,
                      drm_radeon_kcmd_buffer_t *cmdbuf)
 {
        drm_radeon_private_t *dev_priv = dev->dev_private;
-       drm_device_dma_t *dma = dev->dma;
-       drm_buf_t *buf = NULL;
+       struct drm_device_dma *dma = dev->dma;
+       struct drm_buf *buf = NULL;
        int emit_dispatch_age = 0;
        int ret = 0;
 
@@ -878,15 +878,16 @@ int r300_do_cp_cmdbuf(drm_device_t *dev,
                        if (idx < 0 || idx >= dma->buf_count) {
                                DRM_ERROR("buffer index %d (of %d max)\n",
                                          idx, dma->buf_count - 1);
-                               ret = DRM_ERR(EINVAL);
+                               ret = -EINVAL;
                                goto cleanup;
                        }
 
                        buf = dma->buflist[idx];
-                       if (buf->filp != filp || buf->pending) {
+                       if (buf->file_priv != file_priv || buf->pending) {
                                DRM_ERROR("bad buffer %p %p %d\n",
-                                         buf->filp, filp, buf->pending);
-                               ret = DRM_ERR(EINVAL);
+                                         buf->file_priv, file_priv,
+                                         buf->pending);
+                               ret = -EINVAL;
                                goto cleanup;
                        }
 
@@ -923,7 +924,7 @@ int r300_do_cp_cmdbuf(drm_device_t *dev,
                        DRM_ERROR("bad cmd_type %i at %p\n",
                                  header.header.cmd_type,
                                  cmdbuf->buf - sizeof(header));
-                       ret = DRM_ERR(EINVAL);
+                       ret = -EINVAL;
                        goto cleanup;
                }
        }