diff --git a/libfwupdplugin/fu-device-private.h b/libfwupdplugin/fu-device-private.h index 1fc80479d..eb64c3633 100644 --- a/libfwupdplugin/fu-device-private.h +++ b/libfwupdplugin/fu-device-private.h @@ -21,7 +21,6 @@ void fu_device_set_order (FuDevice *self, gint order); void fu_device_set_alternate (FuDevice *self, FuDevice *alternate); -GType fu_device_get_specialized_gtype (FuDevice *self); gboolean fu_device_ensure_id (FuDevice *self, GError **error); void fu_device_incorporate_from_component (FuDevice *device, diff --git a/libfwupdplugin/fu-device.h b/libfwupdplugin/fu-device.h index 39cc515d7..feb8ea2f6 100644 --- a/libfwupdplugin/fu-device.h +++ b/libfwupdplugin/fu-device.h @@ -267,6 +267,7 @@ void fu_device_set_quirks (FuDevice *self, FuQuirks *quirks); FuQuirks *fu_device_get_quirks (FuDevice *self); FwupdRelease *fu_device_get_release_default (FuDevice *self); +GType fu_device_get_specialized_gtype (FuDevice *self); gboolean fu_device_write_firmware (FuDevice *self, GBytes *fw, FwupdInstallFlags flags, diff --git a/plugins/elantp/elantp.quirk b/plugins/elantp/elantp.quirk index 7d9c07802..d8504f697 100644 --- a/plugins/elantp/elantp.quirk +++ b/plugins/elantp/elantp.quirk @@ -6,6 +6,10 @@ GType = FuElantpHidDevice Plugin = elantp GType = FuElantpHidDevice +# Acer Aspire V3-372T +[HwId=513cde3d-d939-59bd-a634-5c1645ebb93b] +Flags = elantp-recovery + # recovery device [DeviceInstanceId=I2C\NAME_Synopsys-DesignWare-I2C-adapter] Plugin = elantp diff --git a/plugins/elantp/fu-plugin-elantp.c b/plugins/elantp/fu-plugin-elantp.c index bc1c97d8e..e29db3e7c 100644 --- a/plugins/elantp/fu-plugin-elantp.c +++ b/plugins/elantp/fu-plugin-elantp.c @@ -13,6 +13,20 @@ #include "fu-elantp-hid-device.h" #include "fu-elantp-i2c-device.h" +gboolean +fu_plugin_device_created (FuPlugin *plugin, FuDevice *dev, GError **error) +{ + if (fu_device_get_specialized_gtype (dev) == FU_TYPE_ELANTP_I2C_DEVICE && + !fu_plugin_has_custom_flag (plugin, "elantp-recovery")) { + g_set_error_literal (error, + FWUPD_ERROR, + FWUPD_ERROR_NOT_SUPPORTED, + "not required"); + return FALSE; + } + return TRUE; +} + void fu_plugin_init (FuPlugin *plugin) {