[PATCH] drm/amdgpu/nv: add asic func for fetching vbios from rom directly

Yuan, Xiaojie Xiaojie.Yuan at amd.com
Fri Nov 15 16:50:15 UTC 2019


Reviewed-by: Xiaojie Yuan <xiaojie.yuan at amd.com>

BR,
Xiaojie

> On Nov 16, 2019, at 12:12 AM, Alex Deucher <alexdeucher at gmail.com> wrote:
> 
> Ping?
> 
>> On Wed, Nov 13, 2019 at 2:29 PM Alex Deucher <alexdeucher at gmail.com> wrote:
>> 
>> Needed as a fallback if the vbios can't be fetched by other means.
>> 
>> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
>> ---
>> drivers/gpu/drm/amd/amdgpu/nv.c | 24 ++++++++++++++++++++++--
>> 1 file changed, 22 insertions(+), 2 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/amd/amdgpu/nv.c b/drivers/gpu/drm/amd/amdgpu/nv.c
>> index 7283d6198b89..ad04d1d6e9c7 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/nv.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/nv.c
>> @@ -40,6 +40,7 @@
>> #include "gc/gc_10_1_0_sh_mask.h"
>> #include "hdp/hdp_5_0_0_offset.h"
>> #include "hdp/hdp_5_0_0_sh_mask.h"
>> +#include "smuio/smuio_11_0_0_offset.h"
>> 
>> #include "soc15.h"
>> #include "soc15_common.h"
>> @@ -156,8 +157,27 @@ static bool nv_read_disabled_bios(struct amdgpu_device *adev)
>> static bool nv_read_bios_from_rom(struct amdgpu_device *adev,
>>                                  u8 *bios, u32 length_bytes)
>> {
>> -       /* TODO: will implement it when SMU header is available */
>> -       return false;
>> +       u32 *dw_ptr;
>> +       u32 i, length_dw;
>> +
>> +       if (bios == NULL)
>> +               return false;
>> +       if (length_bytes == 0)
>> +               return false;
>> +       /* APU vbios image is part of sbios image */
>> +       if (adev->flags & AMD_IS_APU)
>> +               return false;
>> +
>> +       dw_ptr = (u32 *)bios;
>> +       length_dw = ALIGN(length_bytes, 4) / 4;
>> +
>> +       /* set rom index to 0 */
>> +       WREG32(SOC15_REG_OFFSET(SMUIO, 0, mmROM_INDEX), 0);
>> +       /* read out the rom data */
>> +       for (i = 0; i < length_dw; i++)
>> +               dw_ptr[i] = RREG32(SOC15_REG_OFFSET(SMUIO, 0, mmROM_DATA));
>> +
>> +       return true;
>> }
>> 
>> static struct soc15_allowed_register_entry nv_allowed_read_registers[] = {
>> --
>> 2.23.0
>> 
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list