mirror of
https://git.proxmox.com/git/fwupd
synced 2025-05-16 11:57:32 +00:00
trivial: dell: don't disable plugin if UEFI capsule isn't supported
It now supports enabling things for other plugins too, so rather mark any devices created by Dell as only readable, not flashable when UEFI capsule is off.
This commit is contained in:
parent
908b17e1fb
commit
cd87fcae5a
@ -233,6 +233,27 @@ fu_plugin_get_dock_key (FuPlugin *plugin,
|
||||
return g_strdup_printf ("%s_%s", platform_id, guid);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
fu_plugin_dell_capsule_supported (void)
|
||||
{
|
||||
gint uefi_supported;
|
||||
|
||||
/* If ESRT is not turned on, fwupd will have already created an
|
||||
* unlock device (if compiled with support).
|
||||
*
|
||||
* Once unlocked, that will enable flashing capsules here too.
|
||||
*
|
||||
* that means we should only look for supported = 1
|
||||
*/
|
||||
uefi_supported = fwup_supported ();
|
||||
if (uefi_supported != 1) {
|
||||
g_debug("UEFI capsule firmware updating not supported (%x)",
|
||||
(guint) uefi_supported);
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
fu_plugin_dock_node (FuPlugin *plugin, GUsbDevice *device,
|
||||
guint8 type, const efi_guid_t *guid_raw,
|
||||
@ -285,8 +306,9 @@ fu_plugin_dock_node (FuPlugin *plugin, GUsbDevice *device,
|
||||
fu_device_add_flag (item->device, FWUPD_DEVICE_FLAG_REQUIRE_AC);
|
||||
if (version != NULL) {
|
||||
fu_device_set_version (item->device, version);
|
||||
fu_device_add_flag (item->device,
|
||||
FWUPD_DEVICE_FLAG_ALLOW_OFFLINE);
|
||||
if (fu_plugin_dell_capsule_supported ())
|
||||
fu_device_add_flag (item->device,
|
||||
FWUPD_DEVICE_FLAG_ALLOW_OFFLINE);
|
||||
}
|
||||
|
||||
g_hash_table_insert (data->devices, g_strdup (dock_key), item);
|
||||
@ -669,7 +691,8 @@ fu_plugin_dell_detect_tpm (FuPlugin *plugin, GError **error)
|
||||
fu_device_add_flag (dev, FWUPD_DEVICE_FLAG_INTERNAL);
|
||||
fu_device_add_flag (dev, FWUPD_DEVICE_FLAG_REQUIRE_AC);
|
||||
if (out->flashes_left > 0) {
|
||||
fu_device_add_flag (dev, FWUPD_DEVICE_FLAG_ALLOW_OFFLINE);
|
||||
if (fu_plugin_dell_capsule_supported ())
|
||||
fu_device_add_flag (dev, FWUPD_DEVICE_FLAG_ALLOW_OFFLINE);
|
||||
fu_device_set_flashes_left (dev, out->flashes_left);
|
||||
}
|
||||
fu_plugin_device_add (plugin, dev);
|
||||
@ -902,7 +925,6 @@ fu_plugin_startup (FuPlugin *plugin, GError **error)
|
||||
{
|
||||
FuPluginData *data = fu_plugin_get_data (plugin);
|
||||
guint8 dell_supported = 0;
|
||||
gint uefi_supported = 0;
|
||||
struct smbios_struct *de_table;
|
||||
|
||||
/* get USB */
|
||||
@ -933,26 +955,6 @@ fu_plugin_startup (FuPlugin *plugin, GError **error)
|
||||
dell_supported);
|
||||
return FALSE;
|
||||
}
|
||||
/* Check and make sure that ESRT is supported as well.
|
||||
*
|
||||
* This will indicate capsule support on the system.
|
||||
*
|
||||
* If ESRT is not turned on, fwupd will have already created an
|
||||
* unlock device (if compiled with support).
|
||||
*
|
||||
* Once unlocked, that will enable this plugin too.
|
||||
*
|
||||
* that means we should only look for supported = 1
|
||||
*/
|
||||
uefi_supported = fwup_supported ();
|
||||
if (uefi_supported != 1) {
|
||||
g_set_error (error,
|
||||
FWUPD_ERROR,
|
||||
FWUPD_ERROR_NOT_SUPPORTED,
|
||||
"UEFI capsule firmware updating not supported (%x)",
|
||||
(guint) uefi_supported);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#if defined(HAVE_SYNAPTICS) || defined(HAVE_THUNDERBOLT)
|
||||
/* set a delay to allow OS response to settling the GPIO change */
|
||||
|
Loading…
Reference in New Issue
Block a user