diff --git a/drivers/gpu/drm/amd/amdgpu/Kconfig b/drivers/gpu/drm/amd/amdgpu/Kconfig
index a04f2fc7bf37..d7186dd88dbc 100644
--- a/drivers/gpu/drm/amd/amdgpu/Kconfig
+++ b/drivers/gpu/drm/amd/amdgpu/Kconfig
@@ -24,6 +24,13 @@ config DRM_AMDGPU_CIK
 
 	  radeon.cik_support=0 amdgpu.cik_support=1
 
+config DRM_AMDGPU_SOC15
+	bool "Enable amdgpu support for SOC15 parts"
+	depends on DRM_AMDGPU
+	select DRM_AMD_DC
+	help
+	  Choose this option if you want to enable support for SOC15 asics.
+
 config DRM_AMDGPU_USERPTR
 	bool "Always enable userptr write support"
 	depends on DRM_AMDGPU
diff --git a/drivers/gpu/drm/amd/amdgpu/Makefile b/drivers/gpu/drm/amd/amdgpu/Makefile
index 3f5329906fce..e95ae468eaa1 100644
--- a/drivers/gpu/drm/amd/amdgpu/Makefile
+++ b/drivers/gpu/drm/amd/amdgpu/Makefile
@@ -64,9 +64,10 @@ amdgpu-$(CONFIG_DRM_AMDGPU_CIK)+= cik.o cik_ih.o kv_smc.o kv_dpm.o \
 
 amdgpu-$(CONFIG_DRM_AMDGPU_SI)+= si.o gmc_v6_0.o gfx_v6_0.o si_ih.o si_dma.o dce_v6_0.o si_dpm.o si_smc.o
 
-amdgpu-y += \
-	vi.o mxgpu_vi.o nbio_v6_1.o soc15.o emu_soc.o mxgpu_ai.o nbio_v7_0.o vega10_reg_init.o \
-	vega20_reg_init.o nbio_v7_4.o nbio_v2_3.o nv.o navi10_reg_init.o navi14_reg_init.o
+amdgpu-y += vi.o mxgpu_vi.o emu_soc.o nbio_v7_4.o
+
+amdgpu-$(CONFIG_DRM_AMDGPU_SOC15) += gmc_v9_0.o nbio_v6_1.o soc15.o mxgpu_ai.o nbio_v7_0.o \
+	vega10_reg_init.o vega20_reg_init.o nbio_v2_3.o nv.o navi10_reg_init.o navi14_reg_init.o
 
 # add DF block
 amdgpu-y += \
@@ -77,7 +78,10 @@ amdgpu-y += \
 amdgpu-y += \
 	gmc_v7_0.o \
 	gmc_v8_0.o \
-	gfxhub_v1_0.o mmhub_v1_0.o gmc_v9_0.o gfxhub_v1_1.o \
+	gfxhub_v1_0.o mmhub_v1_0.o gfxhub_v1_1.o
+
+amdgpu-$(CONFIG_DRM_AMDGPU_SOC15) += \
+	gmc_v9_0.o \
 	gfxhub_v2_0.o mmhub_v2_0.o gmc_v10_0.o
 
 # add IH block
@@ -86,7 +90,9 @@ amdgpu-y += \
 	amdgpu_ih.o \
 	iceland_ih.o \
 	tonga_ih.o \
-	cz_ih.o \
+	cz_ih.o
+
+amdgpu-$(CONFIG_DRM_AMDGPU_SOC15) += \
 	vega10_ih.o \
 	navi10_ih.o
 
@@ -111,7 +117,9 @@ amdgpu-y += \
 amdgpu-y += \
 	amdgpu_gfx.o \
 	amdgpu_rlc.o \
-	gfx_v8_0.o \
+	gfx_v8_0.o
+
+amdgpu-$(CONFIG_DRM_AMDGPU_SOC15) += \
 	gfx_v9_0.o \
 	gfx_v10_0.o
 
@@ -119,12 +127,14 @@ amdgpu-y += \
 amdgpu-y += \
 	amdgpu_sdma.o \
 	sdma_v2_4.o \
-	sdma_v3_0.o \
+	sdma_v3_0.o
+
+amdgpu-$(CONFIG_DRM_AMDGPU_SOC15) += \
 	sdma_v4_0.o \
 	sdma_v5_0.o
 
 # add MES block
-amdgpu-y += \
+amdgpu-$(CONFIG_DRM_AMDGPU_SOC15) += \
 	mes_v10_1.o
 
 # add UVD block
@@ -161,8 +171,10 @@ amdgpu-y += \
 	 amdgpu_amdkfd_fence.o \
 	 amdgpu_amdkfd_gpuvm.o \
 	 amdgpu_amdkfd_gfx_v8.o \
-	 amdgpu_amdkfd_gfx_v9.o \
-	 amdgpu_amdkfd_gfx_v10.o
+
+amdgpu-$(CONFIG_DRM_AMDGPU_SOC15) += \
+	amdgpu_amdkfd_gfx_v9.o \
+	amdgpu_amdkfd_gfx_v10.o
 
 ifneq ($(CONFIG_DRM_AMDGPU_CIK),)
 amdgpu-y += amdgpu_amdkfd_gfx_v7.o
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
index 9fa4f25a3745..101d806ff996 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
@@ -81,6 +81,7 @@ void amdgpu_amdkfd_device_probe(struct amdgpu_device *adev)
 	case CHIP_VEGAM:
 		kfd2kgd = amdgpu_amdkfd_gfx_8_0_get_functions();
 		break;
+#ifdef CONFIG_DRM_AMDGPU_SOC15
 	case CHIP_VEGA10:
 	case CHIP_VEGA12:
 	case CHIP_VEGA20:
@@ -90,6 +91,7 @@ void amdgpu_amdkfd_device_probe(struct amdgpu_device *adev)
 	case CHIP_NAVI10:
 		kfd2kgd = amdgpu_amdkfd_gfx_10_0_get_functions();
 		break;
+#endif
 	default:
 		dev_info(adev->dev, "kfd not supported on this ASIC\n");
 		return;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index a02ccce7bf53..2a6447febcb0 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -1530,6 +1530,7 @@ static int amdgpu_device_ip_early_init(struct amdgpu_device *adev)
 			return r;
 		break;
 #endif
+#ifdef CONFIG_DRM_AMDGPU_SOC15
 	case CHIP_VEGA10:
 	case CHIP_VEGA12:
 	case CHIP_VEGA20:
@@ -1551,6 +1552,7 @@ static int amdgpu_device_ip_early_init(struct amdgpu_device *adev)
 		if (r)
 			return r;
 		break;
+#endif
 	default:
 		/* FIXME: not supported yet */
 		return -EINVAL;
