]> Git Repo - linux.git/blobdiff - drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[linux.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_vcn.h
index 19661c645703e56809c584b61916d141d5ed32d0..dface275c81a39990af847a5294b3b2a498ef754 100644 (file)
 #define AMDGPU_VCN_FIRMWARE_OFFSET     256
 #define AMDGPU_VCN_MAX_ENC_RINGS       3
 
+#define AMDGPU_MAX_VCN_INSTANCES       2
+
+#define AMDGPU_VCN_HARVEST_VCN0 (1 << 0)
+#define AMDGPU_VCN_HARVEST_VCN1 (1 << 1)
+
 #define VCN_DEC_KMD_CMD                0x80000000
 #define VCN_DEC_CMD_FENCE              0x00000000
 #define VCN_DEC_CMD_TRAP               0x00000001
@@ -146,34 +151,49 @@ struct amdgpu_vcn_reg{
        unsigned        data1;
        unsigned        cmd;
        unsigned        nop;
+       unsigned        context_id;
+       unsigned        ib_vmid;
+       unsigned        ib_bar_low;
+       unsigned        ib_bar_high;
+       unsigned        ib_size;
+       unsigned        gp_scratch8;
        unsigned        scratch9;
        unsigned        jpeg_pitch;
 };
 
-struct amdgpu_vcn {
+struct amdgpu_vcn_inst {
        struct amdgpu_bo        *vcpu_bo;
        void                    *cpu_addr;
        uint64_t                gpu_addr;
-       unsigned                fw_version;
        void                    *saved_bo;
-       struct delayed_work     idle_work;
-       const struct firmware   *fw;    /* VCN firmware */
        struct amdgpu_ring      ring_dec;
        struct amdgpu_ring      ring_enc[AMDGPU_VCN_MAX_ENC_RINGS];
        struct amdgpu_ring      ring_jpeg;
        struct amdgpu_irq_src   irq;
+       struct amdgpu_vcn_reg   external;
+};
+
+struct amdgpu_vcn {
+       unsigned                fw_version;
+       struct delayed_work     idle_work;
+       const struct firmware   *fw;    /* VCN firmware */
        unsigned                num_enc_rings;
        enum amd_powergating_state cur_state;
        struct dpg_pause_state pause_state;
-       struct amdgpu_vcn_reg   internal, external;
-       int (*pause_dpg_mode)(struct amdgpu_device *adev,
-               struct dpg_pause_state *new_state);
 
        bool                    indirect_sram;
        struct amdgpu_bo        *dpg_sram_bo;
        void                    *dpg_sram_cpu_addr;
        uint64_t                dpg_sram_gpu_addr;
        uint32_t                *dpg_sram_curr_addr;
+
+       uint8_t num_vcn_inst;
+       struct amdgpu_vcn_inst  inst[AMDGPU_MAX_VCN_INSTANCES];
+       struct amdgpu_vcn_reg   internal;
+
+       unsigned        harvest_config;
+       int (*pause_dpg_mode)(struct amdgpu_device *adev,
+               struct dpg_pause_state *new_state);
 };
 
 int amdgpu_vcn_sw_init(struct amdgpu_device *adev);
This page took 0.036068 seconds and 4 git commands to generate.