gpu: pvr: move debugfs infrastructure to its own files
[sgx.git] / pvr / sgxapi_km.h
index 8a43ed0..39ec960 100644 (file)
 
 
 #include "sgxdefs.h"
+#include "img_types.h"
 
+#if defined(__KERNEL__)
+#include <linux/unistd.h>
+#else
+#include <unistd.h>
+#endif
 
-#define SGX_GENERAL_HEAP_ID                    0
-#define SGX_TADATA_HEAP_ID                     1
-#define SGX_KERNEL_CODE_HEAP_ID                        2
-#define SGX_VIDEO_CODE_HEAP_ID                 3
-#define SGX_KERNEL_VIDEO_DATA_HEAP_ID          4
-#define SGX_PIXELSHADER_HEAP_ID                        5
-#define SGX_VERTEXSHADER_HEAP_ID               6
-#define SGX_PDSPIXEL_CODEDATA_HEAP_ID          7
-#define SGX_PDSVERTEX_CODEDATA_HEAP_ID         8
-#define SGX_SYNCINFO_HEAP_ID                   9
-#define SGX_3DPARAMETERS_HEAP_ID               10
-#define SGX_GENERAL_MAPPING_HEAP_ID            11
-#define SGX_UNDEFINED_HEAP_ID                  (~0LU)
-
-#define SGX_ALT_MAPPING_HEAP_ID                        12
-#define SGX_FB_MAPPING_HEAP_ID                 13
-#define SGX_MAX_HEAP_ID                                14
-
-#define SGX_MAX_TA_STATUS_VALS                 32
-#define SGX_MAX_3D_STATUS_VALS                 2
-
-#define SGX_MAX_SRC_SYNCS                      4
-
-struct SGX_SLAVE_PORT {
-       void *pvData;
-       u32 ui32DataRange;
-       u32 *pui32Offset;
-       struct IMG_SYS_PHYADDR sPhysBase;
+#define SGX_UNDEFINED_HEAP_ID                          (~0LU)
+#define SGX_GENERAL_HEAP_ID                            0
+#define SGX_TADATA_HEAP_ID                             1
+#define SGX_KERNEL_CODE_HEAP_ID                                2
+#define SGX_KERNEL_DATA_HEAP_ID                                3
+#define SGX_PIXELSHADER_HEAP_ID                                4
+#define SGX_VERTEXSHADER_HEAP_ID                       5
+#define SGX_PDSPIXEL_CODEDATA_HEAP_ID                  6
+#define SGX_PDSVERTEX_CODEDATA_HEAP_ID                 7
+#define SGX_SYNCINFO_HEAP_ID                           8
+#define SGX_3DPARAMETERS_HEAP_ID                       9
+#define SGX_MAX_HEAP_ID                                        10
+
+#define SGX_MAX_TA_STATUS_VALS                         32
+#define SGX_MAX_3D_STATUS_VALS                         4
+
+#define SGX_MAX_SRC_SYNCS                              4
+
+#define        PVRSRV_SGX_HWPERF_NUM_COUNTERS                  9
+
+#define PVRSRV_SGX_HWPERF_INVALID                      0x1
+
+#define PVRSRV_SGX_HWPERF_TRANSFER                     0x2
+#define PVRSRV_SGX_HWPERF_TA                           0x3
+#define PVRSRV_SGX_HWPERF_3D                           0x4
+#define PVRSRV_SGX_HWPERF_2D                           0x5
+
+#define PVRSRV_SGX_HWPERF_MK_EVENT                     0x101
+#define PVRSRV_SGX_HWPERF_MK_TA                                0x102
+#define PVRSRV_SGX_HWPERF_MK_3D                                0x103
+#define PVRSRV_SGX_HWPERF_MK_2D                                0x104
+
+#define PVRSRV_SGX_HWPERF_TYPE_STARTEND_BIT            28
+#define PVRSRV_SGX_HWPERF_TYPE_OP_MASK                                 \
+       ((1 << PVRSRV_SGX_HWPERF_TYPE_STARTEND_BIT) - 1)
+#define PVRSRV_SGX_HWPERF_TYPE_OP_START                                        \
+       (0 << PVRSRV_SGX_HWPERF_TYPE_STARTEND_BIT)
+#define PVRSRV_SGX_HWPERF_TYPE_OP_END                                  \
+       (1 << PVRSRV_SGX_HWPERF_TYPE_STARTEND_BIT)
+
+#define PVRSRV_SGX_HWPERF_TYPE_TRANSFER_START                          \
+       (PVRSRV_SGX_HWPERF_TRANSFER | PVRSRV_SGX_HWPERF_TYPE_OP_START)
+#define PVRSRV_SGX_HWPERF_TYPE_TRANSFER_END                            \
+       (PVRSRV_SGX_HWPERF_TRANSFER | PVRSRV_SGX_HWPERF_TYPE_OP_END)
+#define PVRSRV_SGX_HWPERF_TYPE_TA_START                                        \
+       (PVRSRV_SGX_HWPERF_TA | PVRSRV_SGX_HWPERF_TYPE_OP_START)
+#define PVRSRV_SGX_HWPERF_TYPE_TA_END                                  \
+       (PVRSRV_SGX_HWPERF_TA | PVRSRV_SGX_HWPERF_TYPE_OP_END)
+#define PVRSRV_SGX_HWPERF_TYPE_3D_START                                        \
+       (PVRSRV_SGX_HWPERF_3D | PVRSRV_SGX_HWPERF_TYPE_OP_START)
+#define PVRSRV_SGX_HWPERF_TYPE_3D_END                                  \
+       (PVRSRV_SGX_HWPERF_3D | PVRSRV_SGX_HWPERF_TYPE_OP_END)
+#define PVRSRV_SGX_HWPERF_TYPE_2D_START                                        \
+       (PVRSRV_SGX_HWPERF_2D | PVRSRV_SGX_HWPERF_TYPE_OP_START)
+#define PVRSRV_SGX_HWPERF_TYPE_2D_END                                  \
+       (PVRSRV_SGX_HWPERF_2D | PVRSRV_SGX_HWPERF_TYPE_OP_END)
+
+#define PVRSRV_SGX_HWPERF_TYPE_MK_EVENT_START                          \
+       (PVRSRV_SGX_HWPERF_MK_EVENT | PVRSRV_SGX_HWPERF_TYPE_OP_START)
+#define PVRSRV_SGX_HWPERF_TYPE_MK_EVENT_END                            \
+       (PVRSRV_SGX_HWPERF_MK_EVENT | PVRSRV_SGX_HWPERF_TYPE_OP_END)
+#define PVRSRV_SGX_HWPERF_TYPE_MK_TA_START                             \
+       (PVRSRV_SGX_HWPERF_MK_TA | PVRSRV_SGX_HWPERF_TYPE_OP_START)
+#define PVRSRV_SGX_HWPERF_TYPE_MK_TA_END                               \
+       (PVRSRV_SGX_HWPERF_MK_TA | PVRSRV_SGX_HWPERF_TYPE_OP_END)
+#define PVRSRV_SGX_HWPERF_TYPE_MK_3D_START                             \
+       (PVRSRV_SGX_HWPERF_MK_3D | PVRSRV_SGX_HWPERF_TYPE_OP_START)
+#define PVRSRV_SGX_HWPERF_TYPE_MK_3D_END                               \
+       (PVRSRV_SGX_HWPERF_MK_3D | PVRSRV_SGX_HWPERF_TYPE_OP_END)
+#define PVRSRV_SGX_HWPERF_TYPE_MK_2D_START                             \
+       (PVRSRV_SGX_HWPERF_MK_2D | PVRSRV_SGX_HWPERF_TYPE_OP_START)
+#define PVRSRV_SGX_HWPERF_TYPE_MK_2D_END                               \
+       (PVRSRV_SGX_HWPERF_MK_2D | PVRSRV_SGX_HWPERF_TYPE_OP_END)
+
+#define PVRSRV_SGX_HWPERF_OFF                                  0x0
+#define PVRSRV_SGX_HWPERF_GRAPHICS_ON                          (1UL << 0)
+#define PVRSRV_SGX_HWPERF_MK_EXECUTION_ON                      (1UL << 1)
+
+struct PVRSRV_SGX_HWPERF_CB_ENTRY {
+       u32 ui32FrameNo;
+       u32 ui32Type;
+       u32 ui32Ordinal;
+       u32 ui32Clocksx16;
+       u32 ui32Counters[PVRSRV_SGX_HWPERF_NUM_COUNTERS];
 };
 
-#define PVRSRV_SGX_HWPERF_CBSIZE               0x100
-
-#define PVRSRV_SGX_HWPERF_INVALID              1
-#define PVRSRV_SGX_HWPERF_TRANSFER             2
-#define PVRSRV_SGX_HWPERF_TA                   3
-#define PVRSRV_SGX_HWPERF_3D                   4
-
-#define PVRSRV_SGX_HWPERF_ON                   0x40
-
 struct PVRSRV_SGX_HWPERF_CBDATA {
        u32 ui32FrameNo;
        u32 ui32Type;
@@ -81,13 +134,6 @@ struct PVRSRV_SGX_HWPERF_CBDATA {
        u32 ui32TimeMax;
 };
 
-struct PVRSRV_SGX_HWPERF_CB {
-       u32 ui32Woff;
-       u32 ui32Roff;
-       struct PVRSRV_SGX_HWPERF_CBDATA
-                           psHWPerfCBData[PVRSRV_SGX_HWPERF_CBSIZE];
-};
-
 struct SGX_MISC_INFO_HWPERF_RETRIEVE_CB {
        struct PVRSRV_SGX_HWPERF_CBDATA *psHWPerfData;
        u32 ui32ArraySize;
@@ -95,28 +141,64 @@ struct SGX_MISC_INFO_HWPERF_RETRIEVE_CB {
        u32 ui32Time;
 };
 
+struct CTL_STATUS {
+       struct IMG_DEV_VIRTADDR sStatusDevAddr;
+       u32 ui32StatusValue;
+};
+
 enum SGX_MISC_INFO_REQUEST {
        SGX_MISC_INFO_REQUEST_CLOCKSPEED = 0,
+       SGX_MISC_INFO_REQUEST_SGXREV,
+       SGX_MISC_INFO_REQUEST_DRIVER_SGXREV,
+       SGX_MISC_INFO_REQUEST_SET_HWPERF_STATUS,
        SGX_MISC_INFO_REQUEST_HWPERF_CB_ON,
        SGX_MISC_INFO_REQUEST_HWPERF_CB_OFF,
        SGX_MISC_INFO_REQUEST_HWPERF_RETRIEVE_CB,
        SGX_MISC_INFO_REQUEST_FORCE_I16 = 0x7fff
 };
 
+struct PVRSRV_SGX_MISCINFO_FEATURES {
+       u32 ui32CoreRev;
+       u32 ui32CoreID;
+       u32 ui32DDKVersion;
+       u32 ui32DDKBuild;
+       u32 ui32CoreIdSW;
+       u32 ui32CoreRevSW;
+       u32 ui32BuildOptions;
+};
+
 struct SGX_MISC_INFO {
        enum SGX_MISC_INFO_REQUEST eRequest;
 
        union {
                u32 reserved;
+               struct PVRSRV_SGX_MISCINFO_FEATURES sSGXFeatures;
                u32 ui32SGXClockSpeed;
+               u32 ui32NewHWPerfStatus;
                struct SGX_MISC_INFO_HWPERF_RETRIEVE_CB sRetrieveCB;
        } uData;
 };
 
+enum render_state_buf_type {
+       RSB_USSE_VERTEX_PROG,
+       RSB_USSE_FRAGMENT_PROG,
+};
+
+struct render_state_buf_info {
+       u32                             buf_id;
+       u32                             offset;
+       u32                             size;
+       enum render_state_buf_type      type;
+};
+
+struct render_state_buf_list {
+       u32                             cnt;
+       struct render_state_buf_info    info[20];
+};
 
-#define PVR3DIF4_KICKTA_DUMPBITMAP_MAX_NAME_LENGTH             256
+#define SGX_KICKTA_DUMPBITMAP_MAX_NAME_LENGTH          256
 
-struct PVR3DIF4_KICKTA_DUMPBITMAP {
+struct SGX_KICKTA_DUMPBITMAP {
        struct IMG_DEV_VIRTADDR sDevBaseAddr;
        u32 ui32Flags;
        u32 ui32Width;
@@ -124,16 +206,16 @@ struct PVR3DIF4_KICKTA_DUMPBITMAP {
        u32 ui32Stride;
        u32 ui32PDUMPFormat;
        u32 ui32BytesPP;
-       char pszName[PVR3DIF4_KICKTA_DUMPBITMAP_MAX_NAME_LENGTH];
+       char pszName[SGX_KICKTA_DUMPBITMAP_MAX_NAME_LENGTH];
 };
 
-#define PVRSRV_SGX_PDUMP_CONTEXT_MAX_BITMAP_ARRAY_SIZE (16)
+#define PVRSRV_SGX_PDUMP_CONTEXT_MAX_BITMAP_ARRAY_SIZE 16
 
 struct PVRSRV_SGX_PDUMP_CONTEXT {
        u32 ui32CacheControl;
 };
 
-struct PVR3DIF4_KICKTA_DUMP_ROFF {
+struct SGX_KICKTA_DUMP_ROFF {
        void *hKernelMemInfo;
        u32 uiAllocIndex;
        u32 ui32Offset;
@@ -141,7 +223,7 @@ struct PVR3DIF4_KICKTA_DUMP_ROFF {
        char *pszName;
 };
 
-struct PVR3DIF4_KICKTA_DUMP_BUFFER {
+struct SGX_KICKTA_DUMP_BUFFER {
        u32 ui32SpaceUsed;
        u32 ui32Start;
        u32 ui32End;
@@ -149,19 +231,20 @@ struct PVR3DIF4_KICKTA_DUMP_BUFFER {
        u32 ui32BackEndLength;
        u32 uiAllocIndex;
        void *hKernelMemInfo;
+       void *pvLinAddr;
        char *pszName;
 };
 
 #ifdef PDUMP
-struct PVR3DIF4_KICKTA_PDUMP {
+struct SGX_KICKTA_PDUMP {
 
-       struct PVR3DIF4_KICKTA_DUMPBITMAP *psPDumpBitmapArray;
+       struct SGX_KICKTA_DUMPBITMAP *psPDumpBitmapArray;
        u32 ui32PDumpBitmapSize;
 
-       struct PVR3DIF4_KICKTA_DUMP_BUFFER *psBufferArray;
+       struct SGX_KICKTA_DUMP_BUFFER *psBufferArray;
        u32 ui32BufferArraySize;
 
-       struct PVR3DIF4_KICKTA_DUMP_ROFF *psROffArray;
+       struct SGX_KICKTA_DUMP_ROFF *psROffArray;
        u32 ui32ROffArraySize;
 };
 #endif