On Wed, Jan 13, 2021 at 7:30 AM Huang Rui <ray.huang@xxxxxxx> wrote: > > This patch is to update atomfirmware parser for the memory type and > bandwidth of DDR5 and DDR4. > > Signed-off-by: Huang Rui <ray.huang@xxxxxxx> Reviewed-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > .../gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c | 53 +++++++++++++------ > 1 file changed, 36 insertions(+), 17 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c > index 306077884a67..6107ac91db25 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c > @@ -112,6 +112,7 @@ int amdgpu_atomfirmware_allocate_fb_scratch(struct amdgpu_device *adev) > union igp_info { > struct atom_integrated_system_info_v1_11 v11; > struct atom_integrated_system_info_v1_12 v12; > + struct atom_integrated_system_info_v2_1 v21; > }; > > union umc_info { > @@ -209,24 +210,42 @@ amdgpu_atomfirmware_get_vram_info(struct amdgpu_device *adev, > if (adev->flags & AMD_IS_APU) { > igp_info = (union igp_info *) > (mode_info->atom_context->bios + data_offset); > - switch (crev) { > - case 11: > - mem_channel_number = igp_info->v11.umachannelnumber; > - /* channel width is 64 */ > - if (vram_width) > - *vram_width = mem_channel_number * 64; > - mem_type = igp_info->v11.memorytype; > - if (vram_type) > - *vram_type = convert_atom_mem_type_to_vram_type(adev, mem_type); > + switch (frev) { > + case 1: > + switch (crev) { > + case 11: > + case 12: > + mem_channel_number = igp_info->v11.umachannelnumber; > + if (!mem_channel_number) > + mem_channel_number = 1; > + /* channel width is 64 */ > + if (vram_width) > + *vram_width = mem_channel_number * 64; > + mem_type = igp_info->v11.memorytype; > + if (vram_type) > + *vram_type = convert_atom_mem_type_to_vram_type(adev, mem_type); > + break; > + default: > + return -EINVAL; > + } > break; > - case 12: > - mem_channel_number = igp_info->v12.umachannelnumber; > - /* channel width is 64 */ > - if (vram_width) > - *vram_width = mem_channel_number * 64; > - mem_type = igp_info->v12.memorytype; > - if (vram_type) > - *vram_type = convert_atom_mem_type_to_vram_type(adev, mem_type); > + case 2: > + switch (crev) { > + case 1: > + case 2: > + mem_channel_number = igp_info->v21.umachannelnumber; > + if (!mem_channel_number) > + mem_channel_number = 1; > + /* channel width is 64 */ > + if (vram_width) > + *vram_width = mem_channel_number * 64; > + mem_type = igp_info->v21.memorytype; > + if (vram_type) > + *vram_type = convert_atom_mem_type_to_vram_type(adev, mem_type); > + break; > + default: > + return -EINVAL; > + } > break; > default: > return -EINVAL; > -- > 2.25.1 > > _______________________________________________ > amd-gfx mailing list > amd-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx