adev->vcn.num_enc_rings = 1;
 
        } else {
-               if (adev->asic_type == CHIP_SIENNA_CICHLID) {
+               if (adev->ip_versions[UVD_HWIP] == IP_VERSION(3, 0, 0)) {
                        u32 harvest;
 
                        adev->vcn.num_vcn_inst = VCN_INSTANCES_SIENNA_CICHLID;
                } else
                        adev->vcn.num_vcn_inst = 1;
 
-               if (adev->asic_type == CHIP_BEIGE_GOBY)
+               if (adev->ip_versions[UVD_HWIP] == IP_VERSION(3, 0, 33))
                        adev->vcn.num_enc_rings = 0;
                else
                        adev->vcn.num_enc_rings = 2;
                fw_shared->rb.wptr = lower_32_bits(ring->wptr);
                fw_shared->multi_queue.decode_queue_mode &= cpu_to_le32(~FW_QUEUE_RING_RESET);
 
-               if (adev->asic_type != CHIP_BEIGE_GOBY) {
+               if (adev->ip_versions[UVD_HWIP] != IP_VERSION(3, 0, 33)) {
                        fw_shared->multi_queue.encode_generalpurpose_queue_mode |= cpu_to_le32(FW_QUEUE_RING_RESET);
                        ring = &adev->vcn.inst[i].ring_enc[0];
                        WREG32_SOC15(VCN, i, mmUVD_RB_RPTR, lower_32_bits(ring->wptr));
                                        UVD_POWER_STATUS__STALL_DPG_POWER_UP_MASK,
                                        ~UVD_POWER_STATUS__STALL_DPG_POWER_UP_MASK);
 
-                               if (adev->asic_type != CHIP_BEIGE_GOBY) {
+                               if (adev->ip_versions[UVD_HWIP] != IP_VERSION(3, 0, 33)) {
                                        /* Restore */
                                        fw_shared = adev->vcn.inst[inst_idx].fw_shared_cpu_addr;
                                        fw_shared->multi_queue.encode_generalpurpose_queue_mode |= cpu_to_le32(FW_QUEUE_RING_RESET);