mirror of
https://git.proxmox.com/git/fwupd
synced 2025-07-27 09:25:38 +00:00
trivial: add a plugin to show VBIOS version for AMD APUs
The VBIOS version is actually fetched by udev, this plugin sets up the relationship so it's displayed in the right place.
This commit is contained in:
parent
088359a381
commit
c6731e56f2
11
plugins/amd-gpu/README.md
Normal file
11
plugins/amd-gpu/README.md
Normal file
@ -0,0 +1,11 @@
|
||||
---
|
||||
title: Plugin: AMDGPU
|
||||
---
|
||||
|
||||
## Introduction
|
||||
|
||||
This plugin reports the vbios version of APU devices supported by amdgpu.
|
||||
|
||||
## External Interface Access
|
||||
|
||||
This plugin requires read only access to attributes located within `/sys/bus/pci/drivers/*/amdgpu`.
|
2
plugins/amd-gpu/amd-gpu.quirk
Normal file
2
plugins/amd-gpu/amd-gpu.quirk
Normal file
@ -0,0 +1,2 @@
|
||||
[PCI\DRIVER_amdgpu]
|
||||
Plugin = amdgpu
|
47
plugins/amd-gpu/fu-amd-gpu-device.c
Normal file
47
plugins/amd-gpu/fu-amd-gpu-device.c
Normal file
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Advanced Micro Devices Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: LGPL-2.1+
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <fwupdplugin.h>
|
||||
|
||||
#include "fu-amd-gpu-device.h"
|
||||
struct _FuAmdGpuDevice {
|
||||
FuUdevDevice parent_instance;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE(FuAmdGpuDevice, fu_amd_gpu_device, FU_TYPE_UDEV_DEVICE)
|
||||
|
||||
static gboolean
|
||||
fu_amd_gpu_device_probe(FuDevice *device, GError **error)
|
||||
{
|
||||
const gchar *base;
|
||||
g_autofree gchar *rom = NULL;
|
||||
|
||||
/* heuristic to detect !APU since we don't have sysfs file to indicate IS_APU */
|
||||
base = fu_udev_device_get_sysfs_path(FU_UDEV_DEVICE(device));
|
||||
rom = g_build_filename(base, "rom", NULL);
|
||||
if (g_file_test(rom, G_FILE_TEST_EXISTS)) {
|
||||
g_set_error_literal(error, FWUPD_ERROR, FWUPD_ERROR_NOT_SUPPORTED, "only for APU");
|
||||
return FALSE;
|
||||
}
|
||||
fu_device_add_parent_guid(device, "cpu");
|
||||
fu_device_add_flag(device, FWUPD_DEVICE_FLAG_INTERNAL);
|
||||
return fu_udev_device_set_physical_id(FU_UDEV_DEVICE(device), "pci", error);
|
||||
}
|
||||
|
||||
static void
|
||||
fu_amd_gpu_device_init(FuAmdGpuDevice *self)
|
||||
{
|
||||
fu_device_set_name(FU_DEVICE(self), "Graphics Processing Unit (GPU)");
|
||||
}
|
||||
|
||||
static void
|
||||
fu_amd_gpu_device_class_init(FuAmdGpuDeviceClass *klass)
|
||||
{
|
||||
FuDeviceClass *klass_device = FU_DEVICE_CLASS(klass);
|
||||
klass_device->probe = fu_amd_gpu_device_probe;
|
||||
}
|
12
plugins/amd-gpu/fu-amd-gpu-device.h
Normal file
12
plugins/amd-gpu/fu-amd-gpu-device.h
Normal file
@ -0,0 +1,12 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Advanced Micro Devices Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: LGPL-2.1+
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <fwupdplugin.h>
|
||||
|
||||
#define FU_TYPE_AMDGPU_DEVICE (fu_amd_gpu_device_get_type())
|
||||
G_DECLARE_FINAL_TYPE(FuAmdGpuDevice, fu_amd_gpu_device, FU, AMDGPU_DEVICE, FuUdevDevice)
|
36
plugins/amd-gpu/fu-amd-gpu-plugin.c
Normal file
36
plugins/amd-gpu/fu-amd-gpu-plugin.c
Normal file
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Advanced Micro Devices Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: LGPL-2.1+
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "fu-amd-gpu-device.h"
|
||||
#include "fu-amd-gpu-plugin.h"
|
||||
|
||||
struct _FuAmdGpuPlugin {
|
||||
FuPlugin parent_instance;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE(FuAmdGpuPlugin, fu_amd_gpu_plugin, FU_TYPE_PLUGIN)
|
||||
|
||||
static void
|
||||
fu_amd_gpu_plugin_init(FuAmdGpuPlugin *self)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
fu_amd_gpu_plugin_constructed(GObject *obj)
|
||||
{
|
||||
FuPlugin *plugin = FU_PLUGIN(obj);
|
||||
fu_plugin_add_udev_subsystem(plugin, "pci");
|
||||
fu_plugin_add_device_gtype(plugin, FU_TYPE_AMDGPU_DEVICE);
|
||||
}
|
||||
|
||||
static void
|
||||
fu_amd_gpu_plugin_class_init(FuAmdGpuPluginClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS(klass);
|
||||
object_class->constructed = fu_amd_gpu_plugin_constructed;
|
||||
}
|
11
plugins/amd-gpu/fu-amd-gpu-plugin.h
Normal file
11
plugins/amd-gpu/fu-amd-gpu-plugin.h
Normal file
@ -0,0 +1,11 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Advanced Micro Devices Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: LGPL-2.1+
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <fwupdplugin.h>
|
||||
|
||||
G_DECLARE_FINAL_TYPE(FuAmdGpuPlugin, fu_amd_gpu_plugin, FU, AMDGPU_PLUGIN, FuPlugin)
|
15
plugins/amd-gpu/meson.build
Normal file
15
plugins/amd-gpu/meson.build
Normal file
@ -0,0 +1,15 @@
|
||||
if gudev.found()
|
||||
cargs = ['-DG_LOG_DOMAIN="FuPluginAmdGpu"']
|
||||
|
||||
plugin_quirks += files('amd-gpu.quirk')
|
||||
plugin_builtins += static_library('fu_plugin_amd_gpu',
|
||||
sources: [
|
||||
'fu-amd-gpu-plugin.c',
|
||||
'fu-amd-gpu-device.c',
|
||||
],
|
||||
include_directories: plugin_incdirs,
|
||||
link_with: plugin_libs,
|
||||
c_args: cargs,
|
||||
dependencies: plugin_deps,
|
||||
)
|
||||
endif
|
@ -19,6 +19,7 @@ plugins = [
|
||||
'acpi-ivrs',
|
||||
'acpi-phat',
|
||||
'amd-pmc',
|
||||
'amd-gpu',
|
||||
'analogix',
|
||||
'android-boot',
|
||||
'ata',
|
||||
|
Loading…
Reference in New Issue
Block a user