mirror of
https://github.com/gnif/vendor-reset.git
synced 2026-03-29 06:32:44 +02:00
Load and parse BIOS/firmware where possible
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
Vendor Reset - Vendor Specific Reset
|
||||
Copyright (C) 2020 Geoffrey McRae <geoff@hostfission.com>
|
||||
Copyright (C) 2020 Adam Madsen <adam@ajmadsen.com>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
@@ -19,33 +20,49 @@ Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#include "vendor-reset-dev.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "firmware.h"
|
||||
#include "amdgpu_discovery.h"
|
||||
#include "nv.h"
|
||||
|
||||
extern bool amdgpu_get_bios(struct amd_fake_dev *adev);
|
||||
|
||||
static int amd_navi10_reset(struct vendor_reset_dev *dev)
|
||||
{
|
||||
struct amd_vendor_private *priv = amd_private(dev);
|
||||
struct amd_fake_dev *adev;
|
||||
int ret;
|
||||
|
||||
priv->adev = (struct amd_fake_dev){
|
||||
.dev = &dev->pdev->dev,
|
||||
.private = priv,
|
||||
};
|
||||
adev = &priv->adev;
|
||||
ret = amd_fake_dev_init(adev, dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = amdgpu_discovery_reg_base_init(adev);
|
||||
if (ret < 0)
|
||||
{
|
||||
pci_info(dev->pdev,
|
||||
"amdgpu_discovery_reg_base_init failed, using legacy method");
|
||||
"amdgpu_discovery_reg_base_init failed, using legacy method\n");
|
||||
navi10_reg_base_init(adev);
|
||||
}
|
||||
|
||||
if (adev->mman.discovery_bin)
|
||||
amdgpu_discovery_fini(adev);
|
||||
if (!amdgpu_get_bios(adev))
|
||||
{
|
||||
pci_err(dev->pdev, "amdgpu_get_bios failed: %d\n", ret);
|
||||
ret = -ENOTSUPP;
|
||||
goto adev_free;
|
||||
}
|
||||
|
||||
return 0;
|
||||
ret = atom_bios_init(adev);
|
||||
if (ret)
|
||||
{
|
||||
pci_err(dev->pdev, "atom_bios_init failed: %d\n", ret);
|
||||
goto adev_free;
|
||||
}
|
||||
|
||||
adev_free:
|
||||
amd_fake_dev_fini(adev);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
const struct vendor_reset_ops amd_navi10_ops =
|
||||
|
||||
Reference in New Issue
Block a user