@@ -623,6 +623,16 @@ static const struct amdgpu_ip_block_version nv_common_ip_block =
623623 .funcs = & nv_common_ip_funcs ,
624624};
625625
626+ static bool nv_is_headless_sku (struct pci_dev * pdev )
627+ {
628+ if ((pdev -> device == 0x731E &&
629+ (pdev -> revision == 0xC6 || pdev -> revision == 0xC7 )) ||
630+ (pdev -> device == 0x7340 && pdev -> revision == 0xC9 ) ||
631+ (pdev -> device == 0x7360 && pdev -> revision == 0xC7 ))
632+ return true;
633+ return false;
634+ }
635+
626636static int nv_reg_base_init (struct amdgpu_device * adev )
627637{
628638 int r ;
@@ -635,6 +645,12 @@ static int nv_reg_base_init(struct amdgpu_device *adev)
635645 goto legacy_init ;
636646 }
637647
648+ amdgpu_discovery_harvest_ip (adev );
649+ if (nv_is_headless_sku (adev -> pdev )) {
650+ adev -> harvest_ip_mask |= AMD_HARVEST_IP_VCN_MASK ;
651+ adev -> harvest_ip_mask |= AMD_HARVEST_IP_JPEG_MASK ;
652+ }
653+
638654 return 0 ;
639655 }
640656
@@ -671,16 +687,6 @@ void nv_set_virt_ops(struct amdgpu_device *adev)
671687 adev -> virt .ops = & xgpu_nv_virt_ops ;
672688}
673689
674- static bool nv_is_headless_sku (struct pci_dev * pdev )
675- {
676- if ((pdev -> device == 0x731E &&
677- (pdev -> revision == 0xC6 || pdev -> revision == 0xC7 )) ||
678- (pdev -> device == 0x7340 && pdev -> revision == 0xC9 ) ||
679- (pdev -> device == 0x7360 && pdev -> revision == 0xC7 ))
680- return true;
681- return false;
682- }
683-
684690int nv_set_ip_blocks (struct amdgpu_device * adev )
685691{
686692 int r ;
@@ -728,8 +734,7 @@ int nv_set_ip_blocks(struct amdgpu_device *adev)
728734 if (adev -> firmware .load_type == AMDGPU_FW_LOAD_DIRECT &&
729735 !amdgpu_sriov_vf (adev ))
730736 amdgpu_device_ip_block_add (adev , & smu_v11_0_ip_block );
731- if (!nv_is_headless_sku (adev -> pdev ))
732- amdgpu_device_ip_block_add (adev , & vcn_v2_0_ip_block );
737+ amdgpu_device_ip_block_add (adev , & vcn_v2_0_ip_block );
733738 amdgpu_device_ip_block_add (adev , & jpeg_v2_0_ip_block );
734739 if (adev -> enable_mes )
735740 amdgpu_device_ip_block_add (adev , & mes_v10_1_ip_block );
@@ -752,8 +757,7 @@ int nv_set_ip_blocks(struct amdgpu_device *adev)
752757 if (adev -> firmware .load_type == AMDGPU_FW_LOAD_DIRECT &&
753758 !amdgpu_sriov_vf (adev ))
754759 amdgpu_device_ip_block_add (adev , & smu_v11_0_ip_block );
755- if (!nv_is_headless_sku (adev -> pdev ))
756- amdgpu_device_ip_block_add (adev , & vcn_v2_0_ip_block );
760+ amdgpu_device_ip_block_add (adev , & vcn_v2_0_ip_block );
757761 if (!amdgpu_sriov_vf (adev ))
758762 amdgpu_device_ip_block_add (adev , & jpeg_v2_0_ip_block );
759763 break ;
@@ -777,7 +781,6 @@ int nv_set_ip_blocks(struct amdgpu_device *adev)
777781 amdgpu_device_ip_block_add (adev , & vcn_v3_0_ip_block );
778782 if (!amdgpu_sriov_vf (adev ))
779783 amdgpu_device_ip_block_add (adev , & jpeg_v3_0_ip_block );
780-
781784 if (adev -> enable_mes )
782785 amdgpu_device_ip_block_add (adev , & mes_v10_1_ip_block );
783786 break ;
@@ -1149,6 +1152,11 @@ static int nv_common_early_init(void *handle)
11491152 return - EINVAL ;
11501153 }
11511154
1155+ if (adev -> harvest_ip_mask & AMD_HARVEST_IP_VCN_MASK )
1156+ adev -> pg_flags &= ~(AMD_PG_SUPPORT_VCN |
1157+ AMD_PG_SUPPORT_VCN_DPG |
1158+ AMD_PG_SUPPORT_JPEG );
1159+
11521160 if (amdgpu_sriov_vf (adev )) {
11531161 amdgpu_virt_init_setting (adev );
11541162 xgpu_nv_mailbox_set_irq_funcs (adev );
0 commit comments