diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/cik.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/cik.c | 834 | 
1 files changed, 80 insertions, 754 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/cik.c b/drivers/gpu/drm/amd/amdgpu/cik.c index a845b6a93b79..302df85893ab 100644 --- a/drivers/gpu/drm/amd/amdgpu/cik.c +++ b/drivers/gpu/drm/amd/amdgpu/cik.c @@ -1189,18 +1189,6 @@ static int cik_gpu_pci_config_reset(struct amdgpu_device *adev)  	return r;  } -static void cik_set_bios_scratch_engine_hung(struct amdgpu_device *adev, bool hung) -{ -	u32 tmp = RREG32(mmBIOS_SCRATCH_3); - -	if (hung) -		tmp |= ATOM_S3_ASIC_GUI_ENGINE_HUNG; -	else -		tmp &= ~ATOM_S3_ASIC_GUI_ENGINE_HUNG; - -	WREG32(mmBIOS_SCRATCH_3, tmp); -} -  /**   * cik_asic_reset - soft reset GPU   * @@ -1213,11 +1201,12 @@ static void cik_set_bios_scratch_engine_hung(struct amdgpu_device *adev, bool hu  static int cik_asic_reset(struct amdgpu_device *adev)  {  	int r; -	cik_set_bios_scratch_engine_hung(adev, true); + +	amdgpu_atombios_scratch_regs_engine_hung(adev, true);  	r = cik_gpu_pci_config_reset(adev); -	cik_set_bios_scratch_engine_hung(adev, false); +	amdgpu_atombios_scratch_regs_engine_hung(adev, false);  	return r;  } @@ -1641,745 +1630,6 @@ static void cik_detect_hw_virtualization(struct amdgpu_device *adev)  		adev->virtualization.virtual_caps |= AMDGPU_PASSTHROUGH_MODE;  } -static const struct amdgpu_ip_block_version bonaire_ip_blocks[] = -{ -	/* ORDER MATTERS! */ -	{ -		.type = AMD_IP_BLOCK_TYPE_COMMON, -		.major = 1, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_common_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &gmc_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_IH, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_ih_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &amdgpu_pp_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_DCE, -		.major = 8, -		.minor = 2, -		.rev = 0, -		.funcs = &dce_v8_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GFX, -		.major = 7, -		.minor = 2, -		.rev = 0, -		.funcs = &gfx_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SDMA, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_sdma_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_UVD, -		.major = 4, -		.minor = 2, -		.rev = 0, -		.funcs = &uvd_v4_2_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_VCE, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &vce_v2_0_ip_funcs, -	}, -}; - -static const struct amdgpu_ip_block_version bonaire_ip_blocks_vd[] = -{ -	/* ORDER MATTERS! */ -	{ -		.type = AMD_IP_BLOCK_TYPE_COMMON, -		.major = 1, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_common_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &gmc_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_IH, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_ih_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &amdgpu_pp_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_DCE, -		.major = 8, -		.minor = 2, -		.rev = 0, -		.funcs = &dce_virtual_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GFX, -		.major = 7, -		.minor = 2, -		.rev = 0, -		.funcs = &gfx_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SDMA, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_sdma_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_UVD, -		.major = 4, -		.minor = 2, -		.rev = 0, -		.funcs = &uvd_v4_2_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_VCE, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &vce_v2_0_ip_funcs, -	}, -}; - -static const struct amdgpu_ip_block_version hawaii_ip_blocks[] = -{ -	/* ORDER MATTERS! */ -	{ -		.type = AMD_IP_BLOCK_TYPE_COMMON, -		.major = 1, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_common_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &gmc_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_IH, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_ih_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &amdgpu_pp_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_DCE, -		.major = 8, -		.minor = 5, -		.rev = 0, -		.funcs = &dce_v8_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GFX, -		.major = 7, -		.minor = 3, -		.rev = 0, -		.funcs = &gfx_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SDMA, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_sdma_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_UVD, -		.major = 4, -		.minor = 2, -		.rev = 0, -		.funcs = &uvd_v4_2_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_VCE, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &vce_v2_0_ip_funcs, -	}, -}; - -static const struct amdgpu_ip_block_version hawaii_ip_blocks_vd[] = -{ -	/* ORDER MATTERS! */ -	{ -		.type = AMD_IP_BLOCK_TYPE_COMMON, -		.major = 1, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_common_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &gmc_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_IH, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_ih_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &amdgpu_pp_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_DCE, -		.major = 8, -		.minor = 5, -		.rev = 0, -		.funcs = &dce_virtual_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GFX, -		.major = 7, -		.minor = 3, -		.rev = 0, -		.funcs = &gfx_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SDMA, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_sdma_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_UVD, -		.major = 4, -		.minor = 2, -		.rev = 0, -		.funcs = &uvd_v4_2_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_VCE, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &vce_v2_0_ip_funcs, -	}, -}; - -static const struct amdgpu_ip_block_version kabini_ip_blocks[] = -{ -	/* ORDER MATTERS! */ -	{ -		.type = AMD_IP_BLOCK_TYPE_COMMON, -		.major = 1, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_common_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &gmc_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_IH, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_ih_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &amdgpu_pp_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_DCE, -		.major = 8, -		.minor = 3, -		.rev = 0, -		.funcs = &dce_v8_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GFX, -		.major = 7, -		.minor = 2, -		.rev = 0, -		.funcs = &gfx_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SDMA, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_sdma_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_UVD, -		.major = 4, -		.minor = 2, -		.rev = 0, -		.funcs = &uvd_v4_2_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_VCE, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &vce_v2_0_ip_funcs, -	}, -}; - -static const struct amdgpu_ip_block_version kabini_ip_blocks_vd[] = -{ -	/* ORDER MATTERS! */ -	{ -		.type = AMD_IP_BLOCK_TYPE_COMMON, -		.major = 1, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_common_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &gmc_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_IH, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_ih_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &amdgpu_pp_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_DCE, -		.major = 8, -		.minor = 3, -		.rev = 0, -		.funcs = &dce_virtual_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GFX, -		.major = 7, -		.minor = 2, -		.rev = 0, -		.funcs = &gfx_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SDMA, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_sdma_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_UVD, -		.major = 4, -		.minor = 2, -		.rev = 0, -		.funcs = &uvd_v4_2_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_VCE, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &vce_v2_0_ip_funcs, -	}, -}; - -static const struct amdgpu_ip_block_version mullins_ip_blocks[] = -{ -	/* ORDER MATTERS! */ -	{ -		.type = AMD_IP_BLOCK_TYPE_COMMON, -		.major = 1, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_common_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &gmc_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_IH, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_ih_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &amdgpu_pp_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_DCE, -		.major = 8, -		.minor = 3, -		.rev = 0, -		.funcs = &dce_v8_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GFX, -		.major = 7, -		.minor = 2, -		.rev = 0, -		.funcs = &gfx_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SDMA, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_sdma_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_UVD, -		.major = 4, -		.minor = 2, -		.rev = 0, -		.funcs = &uvd_v4_2_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_VCE, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &vce_v2_0_ip_funcs, -	}, -}; - -static const struct amdgpu_ip_block_version mullins_ip_blocks_vd[] = -{ -	/* ORDER MATTERS! */ -	{ -		.type = AMD_IP_BLOCK_TYPE_COMMON, -		.major = 1, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_common_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &gmc_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_IH, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_ih_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &amdgpu_pp_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_DCE, -		.major = 8, -		.minor = 3, -		.rev = 0, -		.funcs = &dce_virtual_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GFX, -		.major = 7, -		.minor = 2, -		.rev = 0, -		.funcs = &gfx_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SDMA, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_sdma_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_UVD, -		.major = 4, -		.minor = 2, -		.rev = 0, -		.funcs = &uvd_v4_2_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_VCE, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &vce_v2_0_ip_funcs, -	}, -}; - -static const struct amdgpu_ip_block_version kaveri_ip_blocks[] = -{ -	/* ORDER MATTERS! */ -	{ -		.type = AMD_IP_BLOCK_TYPE_COMMON, -		.major = 1, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_common_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &gmc_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_IH, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_ih_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &amdgpu_pp_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_DCE, -		.major = 8, -		.minor = 1, -		.rev = 0, -		.funcs = &dce_v8_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GFX, -		.major = 7, -		.minor = 1, -		.rev = 0, -		.funcs = &gfx_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SDMA, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_sdma_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_UVD, -		.major = 4, -		.minor = 2, -		.rev = 0, -		.funcs = &uvd_v4_2_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_VCE, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &vce_v2_0_ip_funcs, -	}, -}; - -static const struct amdgpu_ip_block_version kaveri_ip_blocks_vd[] = -{ -	/* ORDER MATTERS! */ -	{ -		.type = AMD_IP_BLOCK_TYPE_COMMON, -		.major = 1, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_common_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &gmc_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_IH, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_ih_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SMC, -		.major = 7, -		.minor = 0, -		.rev = 0, -		.funcs = &amdgpu_pp_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_DCE, -		.major = 8, -		.minor = 1, -		.rev = 0, -		.funcs = &dce_virtual_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_GFX, -		.major = 7, -		.minor = 1, -		.rev = 0, -		.funcs = &gfx_v7_0_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_SDMA, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &cik_sdma_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_UVD, -		.major = 4, -		.minor = 2, -		.rev = 0, -		.funcs = &uvd_v4_2_ip_funcs, -	}, -	{ -		.type = AMD_IP_BLOCK_TYPE_VCE, -		.major = 2, -		.minor = 0, -		.rev = 0, -		.funcs = &vce_v2_0_ip_funcs, -	}, -}; - -int cik_set_ip_blocks(struct amdgpu_device *adev) -{ -	if (adev->enable_virtual_display) { -		switch (adev->asic_type) { -		case CHIP_BONAIRE: -			adev->ip_blocks = bonaire_ip_blocks_vd; -			adev->num_ip_blocks = ARRAY_SIZE(bonaire_ip_blocks_vd); -			break; -		case CHIP_HAWAII: -			adev->ip_blocks = hawaii_ip_blocks_vd; -			adev->num_ip_blocks = ARRAY_SIZE(hawaii_ip_blocks_vd); -			break; -		case CHIP_KAVERI: -			adev->ip_blocks = kaveri_ip_blocks_vd; -			adev->num_ip_blocks = ARRAY_SIZE(kaveri_ip_blocks_vd); -			break; -		case CHIP_KABINI: -			adev->ip_blocks = kabini_ip_blocks_vd; -			adev->num_ip_blocks = ARRAY_SIZE(kabini_ip_blocks_vd); -			break; -		case CHIP_MULLINS: -			adev->ip_blocks = mullins_ip_blocks_vd; -			adev->num_ip_blocks = ARRAY_SIZE(mullins_ip_blocks_vd); -			break; -		default: -			/* FIXME: not supported yet */ -			return -EINVAL; -		} -	} else { -		switch (adev->asic_type) { -		case CHIP_BONAIRE: -			adev->ip_blocks = bonaire_ip_blocks; -			adev->num_ip_blocks = ARRAY_SIZE(bonaire_ip_blocks); -			break; -		case CHIP_HAWAII: -			adev->ip_blocks = hawaii_ip_blocks; -			adev->num_ip_blocks = ARRAY_SIZE(hawaii_ip_blocks); -			break; -		case CHIP_KAVERI: -			adev->ip_blocks = kaveri_ip_blocks; -			adev->num_ip_blocks = ARRAY_SIZE(kaveri_ip_blocks); -			break; -		case CHIP_KABINI: -			adev->ip_blocks = kabini_ip_blocks; -			adev->num_ip_blocks = ARRAY_SIZE(kabini_ip_blocks); -			break; -		case CHIP_MULLINS: -			adev->ip_blocks = mullins_ip_blocks; -			adev->num_ip_blocks = ARRAY_SIZE(mullins_ip_blocks); -			break; -		default: -			/* FIXME: not supported yet */ -			return -EINVAL; -		} -	} - -	return 0; -} -  static const struct amdgpu_asic_funcs cik_asic_funcs =  {  	.read_disabled_bios = &cik_read_disabled_bios, @@ -2612,7 +1862,7 @@ static int cik_common_set_powergating_state(void *handle,  	return 0;  } -const struct amd_ip_funcs cik_common_ip_funcs = { +static const struct amd_ip_funcs cik_common_ip_funcs = {  	.name = "cik_common",  	.early_init = cik_common_early_init,  	.late_init = NULL, @@ -2628,3 +1878,79 @@ const struct amd_ip_funcs cik_common_ip_funcs = {  	.set_clockgating_state = cik_common_set_clockgating_state,  	.set_powergating_state = cik_common_set_powergating_state,  }; + +static const struct amdgpu_ip_block_version cik_common_ip_block = +{ +	.type = AMD_IP_BLOCK_TYPE_COMMON, +	.major = 1, +	.minor = 0, +	.rev = 0, +	.funcs = &cik_common_ip_funcs, +}; + +int cik_set_ip_blocks(struct amdgpu_device *adev) +{ +	switch (adev->asic_type) { +	case CHIP_BONAIRE: +		amdgpu_ip_block_add(adev, &cik_common_ip_block); +		amdgpu_ip_block_add(adev, &gmc_v7_0_ip_block); +		amdgpu_ip_block_add(adev, &cik_ih_ip_block); +		amdgpu_ip_block_add(adev, &amdgpu_pp_ip_block); +		if (adev->enable_virtual_display) +			amdgpu_ip_block_add(adev, &dce_virtual_ip_block); +		else +			amdgpu_ip_block_add(adev, &dce_v8_2_ip_block); +		amdgpu_ip_block_add(adev, &gfx_v7_2_ip_block); +		amdgpu_ip_block_add(adev, &cik_sdma_ip_block); +		amdgpu_ip_block_add(adev, &uvd_v4_2_ip_block); +		amdgpu_ip_block_add(adev, &vce_v2_0_ip_block); +		break; +	case CHIP_HAWAII: +		amdgpu_ip_block_add(adev, &cik_common_ip_block); +		amdgpu_ip_block_add(adev, &gmc_v7_0_ip_block); +		amdgpu_ip_block_add(adev, &cik_ih_ip_block); +		amdgpu_ip_block_add(adev, &amdgpu_pp_ip_block); +		if (adev->enable_virtual_display) +			amdgpu_ip_block_add(adev, &dce_virtual_ip_block); +		else +			amdgpu_ip_block_add(adev, &dce_v8_5_ip_block); +		amdgpu_ip_block_add(adev, &gfx_v7_3_ip_block); +		amdgpu_ip_block_add(adev, &cik_sdma_ip_block); +		amdgpu_ip_block_add(adev, &uvd_v4_2_ip_block); +		amdgpu_ip_block_add(adev, &vce_v2_0_ip_block); +		break; +	case CHIP_KAVERI: +		amdgpu_ip_block_add(adev, &cik_common_ip_block); +		amdgpu_ip_block_add(adev, &gmc_v7_0_ip_block); +		amdgpu_ip_block_add(adev, &cik_ih_ip_block); +		amdgpu_ip_block_add(adev, &amdgpu_pp_ip_block); +		if (adev->enable_virtual_display) +			amdgpu_ip_block_add(adev, &dce_virtual_ip_block); +		else +			amdgpu_ip_block_add(adev, &dce_v8_1_ip_block); +		amdgpu_ip_block_add(adev, &gfx_v7_1_ip_block); +		amdgpu_ip_block_add(adev, &cik_sdma_ip_block); +		amdgpu_ip_block_add(adev, &uvd_v4_2_ip_block); +		amdgpu_ip_block_add(adev, &vce_v2_0_ip_block); +		break; +	case CHIP_KABINI: +	case CHIP_MULLINS: +		amdgpu_ip_block_add(adev, &cik_common_ip_block); +		amdgpu_ip_block_add(adev, &gmc_v7_0_ip_block); +		amdgpu_ip_block_add(adev, &cik_ih_ip_block); +		amdgpu_ip_block_add(adev, &amdgpu_pp_ip_block); +		if (adev->enable_virtual_display) +			amdgpu_ip_block_add(adev, &dce_virtual_ip_block); +		else +			amdgpu_ip_block_add(adev, &dce_v8_3_ip_block); +		amdgpu_ip_block_add(adev, &gfx_v7_2_ip_block); +		amdgpu_ip_block_add(adev, &cik_sdma_ip_block); +		amdgpu_ip_block_add(adev, &uvd_v4_2_ip_block); +		amdgpu_ip_block_add(adev, &vce_v2_0_ip_block); +		break; +	default: +		/* FIXME: not supported yet */ +		return -EINVAL; +	} +	return 0; +}  | 
