mirror of
				https://git.proxmox.com/git/fwupd
				synced 2025-11-04 10:27:26 +00:00 
			
		
		
		
	Add a flag to open and close with the parent device
This is a common pattern that is used in lots of plugins, so move the logic into common code.
This commit is contained in:
		
							parent
							
								
									df297d3ee2
								
							
						
					
					
						commit
						0cc06f032c
					
				@ -234,6 +234,8 @@ fu_device_internal_flag_to_string (FuDeviceInternalFlags flag)
 | 
			
		||||
		return "inhibit-children";
 | 
			
		||||
	if (flag == FU_DEVICE_INTERNAL_FLAG_NO_AUTO_REMOVE_CHILDREN)
 | 
			
		||||
		return "no-auto-remove-children";
 | 
			
		||||
	if (flag == FU_DEVICE_INTERNAL_FLAG_USE_PARENT_FOR_OPEN)
 | 
			
		||||
		return "use-parent-for-open";
 | 
			
		||||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -282,6 +284,8 @@ fu_device_internal_flag_from_string (const gchar *flag)
 | 
			
		||||
		return FU_DEVICE_INTERNAL_FLAG_INHIBIT_CHILDREN;
 | 
			
		||||
	if (g_strcmp0 (flag, "no-auto-remove-children") == 0)
 | 
			
		||||
		return FU_DEVICE_INTERNAL_FLAG_NO_AUTO_REMOVE_CHILDREN;
 | 
			
		||||
	if (g_strcmp0 (flag, "use-parent-for-open") == 0)
 | 
			
		||||
		return FU_DEVICE_INTERNAL_FLAG_USE_PARENT_FOR_OPEN;
 | 
			
		||||
	return FU_DEVICE_INTERNAL_FLAG_UNKNOWN;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -3755,39 +3759,12 @@ fu_device_open_cb (FuDevice *self, gpointer user_data, GError **error)
 | 
			
		||||
	return klass->open (self, error);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * fu_device_open:
 | 
			
		||||
 * @self: a #FuDevice
 | 
			
		||||
 * @error: (nullable): optional return location for an error
 | 
			
		||||
 *
 | 
			
		||||
 * Opens a device, optionally running a object-specific vfunc.
 | 
			
		||||
 *
 | 
			
		||||
 * Plugins can call fu_device_open() multiple times without calling
 | 
			
		||||
 * fu_device_close(), but only the first call will actually invoke the vfunc.
 | 
			
		||||
 *
 | 
			
		||||
 * It is expected that plugins issue the same number of fu_device_open() and
 | 
			
		||||
 * fu_device_close() methods when using a specific @self.
 | 
			
		||||
 *
 | 
			
		||||
 * If the `->probe()`, `->open()` and `->setup()` actions all complete
 | 
			
		||||
 * successfully the internal device flag %FU_DEVICE_INTERNAL_FLAG_IS_OPEN will
 | 
			
		||||
 * be set.
 | 
			
		||||
 *
 | 
			
		||||
 * NOTE: It is important to still call fu_device_close() even if this function
 | 
			
		||||
 * fails as the device may still be partially initialized.
 | 
			
		||||
 *
 | 
			
		||||
 * Returns: %TRUE for success
 | 
			
		||||
 *
 | 
			
		||||
 * Since: 1.1.2
 | 
			
		||||
 **/
 | 
			
		||||
gboolean
 | 
			
		||||
fu_device_open (FuDevice *self, GError **error)
 | 
			
		||||
static gboolean
 | 
			
		||||
fu_device_open_internal (FuDevice *self, GError **error)
 | 
			
		||||
{
 | 
			
		||||
	FuDeviceClass *klass = FU_DEVICE_GET_CLASS (self);
 | 
			
		||||
	FuDevicePrivate *priv = GET_PRIVATE (self);
 | 
			
		||||
 | 
			
		||||
	g_return_val_if_fail (FU_IS_DEVICE (self), FALSE);
 | 
			
		||||
	g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 | 
			
		||||
 | 
			
		||||
	/* already open */
 | 
			
		||||
	g_atomic_int_inc (&priv->open_refcount);
 | 
			
		||||
	if (priv->open_refcount > 1)
 | 
			
		||||
@ -3828,6 +3805,49 @@ fu_device_open (FuDevice *self, GError **error)
 | 
			
		||||
	return TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * fu_device_open:
 | 
			
		||||
 * @self: a #FuDevice
 | 
			
		||||
 * @error: (nullable): optional return location for an error
 | 
			
		||||
 *
 | 
			
		||||
 * Opens a device, optionally running a object-specific vfunc.
 | 
			
		||||
 *
 | 
			
		||||
 * Plugins can call fu_device_open() multiple times without calling
 | 
			
		||||
 * fu_device_close(), but only the first call will actually invoke the vfunc.
 | 
			
		||||
 *
 | 
			
		||||
 * It is expected that plugins issue the same number of fu_device_open() and
 | 
			
		||||
 * fu_device_close() methods when using a specific @self.
 | 
			
		||||
 *
 | 
			
		||||
 * If the `->probe()`, `->open()` and `->setup()` actions all complete
 | 
			
		||||
 * successfully the internal device flag %FU_DEVICE_INTERNAL_FLAG_IS_OPEN will
 | 
			
		||||
 * be set.
 | 
			
		||||
 *
 | 
			
		||||
 * NOTE: It is important to still call fu_device_close() even if this function
 | 
			
		||||
 * fails as the device may still be partially initialized.
 | 
			
		||||
 *
 | 
			
		||||
 * Returns: %TRUE for success
 | 
			
		||||
 *
 | 
			
		||||
 * Since: 1.1.2
 | 
			
		||||
 **/
 | 
			
		||||
gboolean
 | 
			
		||||
fu_device_open (FuDevice *self, GError **error)
 | 
			
		||||
{
 | 
			
		||||
	g_return_val_if_fail (FU_IS_DEVICE (self), FALSE);
 | 
			
		||||
	g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 | 
			
		||||
	if (fu_device_has_internal_flag (self, FU_DEVICE_INTERNAL_FLAG_RETRY_OPEN)) {
 | 
			
		||||
		FuDevice *parent = fu_device_get_parent (self);
 | 
			
		||||
		if (parent == NULL) {
 | 
			
		||||
			g_set_error_literal (error,
 | 
			
		||||
					     FWUPD_ERROR,
 | 
			
		||||
					     FWUPD_ERROR_NOT_SUPPORTED,
 | 
			
		||||
					     "no parent device");
 | 
			
		||||
			return FALSE;
 | 
			
		||||
		}
 | 
			
		||||
		return fu_device_open_internal (parent, error);
 | 
			
		||||
	}
 | 
			
		||||
	return fu_device_open_internal (self, error);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * fu_device_close:
 | 
			
		||||
 * @self: a #FuDevice
 | 
			
		||||
 | 
			
		||||
@ -239,6 +239,7 @@ FuDevice	*fu_device_new				(void);
 | 
			
		||||
 * @FU_DEVICE_INTERNAL_FLAG_ATTACH_EXTRA_RESET:		Device needs resetting twice for attach after the firmware update
 | 
			
		||||
 * @FU_DEVICE_INTERNAL_FLAG_INHIBIT_CHILDREN:		Children of the device are inhibited by the parent
 | 
			
		||||
 * @FU_DEVICE_INTERNAL_FLAG_NO_AUTO_REMOVE_CHILDREN:	Do not auto-remove clildren in the device list
 | 
			
		||||
 * @FU_DEVICE_INTERNAL_FLAG_USE_PARENT_FOR_OPEN:	Use parent to open and close the device
 | 
			
		||||
 *
 | 
			
		||||
 * The device internal flags.
 | 
			
		||||
 **/
 | 
			
		||||
@ -260,6 +261,7 @@ typedef enum {
 | 
			
		||||
	FU_DEVICE_INTERNAL_FLAG_ATTACH_EXTRA_RESET	= (1llu << 13),	/* Since: 1.6.2 */
 | 
			
		||||
	FU_DEVICE_INTERNAL_FLAG_INHIBIT_CHILDREN	= (1llu << 14),	/* Since: 1.6.2 */
 | 
			
		||||
	FU_DEVICE_INTERNAL_FLAG_NO_AUTO_REMOVE_CHILDREN	= (1llu << 15),	/* Since: 1.6.2 */
 | 
			
		||||
	FU_DEVICE_INTERNAL_FLAG_USE_PARENT_FOR_OPEN	= (1llu << 16),	/* Since: 1.6.2 */
 | 
			
		||||
	/*< private >*/
 | 
			
		||||
	FU_DEVICE_INTERNAL_FLAG_UNKNOWN			= G_MAXUINT64,
 | 
			
		||||
} FuDeviceInternalFlags;
 | 
			
		||||
 | 
			
		||||
@ -36,20 +36,6 @@ fu_hailuck_tp_device_probe (FuDevice *device, GError **error)
 | 
			
		||||
	return TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
fu_hailuck_tp_device_open (FuDevice *device, GError **error)
 | 
			
		||||
{
 | 
			
		||||
	FuDevice *parent = fu_device_get_parent (device);
 | 
			
		||||
	return fu_device_open (parent, error);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
fu_hailuck_tp_device_close (FuDevice *device, GError **error)
 | 
			
		||||
{
 | 
			
		||||
	FuDevice *parent = fu_device_get_parent (device);
 | 
			
		||||
	return fu_device_close (parent, error);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
	guint8		type;
 | 
			
		||||
	guint8		success; /* if 0xff, then cmd-0x10 */
 | 
			
		||||
@ -206,6 +192,7 @@ fu_hailuck_tp_device_init (FuHailuckTpDevice *self)
 | 
			
		||||
	fu_device_set_name (FU_DEVICE (self), "Touchpad");
 | 
			
		||||
	fu_device_add_flag (FU_DEVICE (self), FWUPD_DEVICE_FLAG_INTERNAL);
 | 
			
		||||
	fu_device_add_flag (FU_DEVICE (self), FWUPD_DEVICE_FLAG_UPDATABLE);
 | 
			
		||||
	fu_device_add_internal_flag (FU_DEVICE (self), FU_DEVICE_INTERNAL_FLAG_USE_PARENT_FOR_OPEN);
 | 
			
		||||
	fu_device_add_icon (FU_DEVICE (self), "input-touchpad");
 | 
			
		||||
	fu_device_set_remove_delay (FU_DEVICE (self),
 | 
			
		||||
				    FU_DEVICE_REMOVE_DELAY_RE_ENUMERATE);
 | 
			
		||||
@ -216,8 +203,6 @@ fu_hailuck_tp_device_class_init (FuHailuckTpDeviceClass *klass)
 | 
			
		||||
{
 | 
			
		||||
	FuDeviceClass *klass_device = FU_DEVICE_CLASS (klass);
 | 
			
		||||
	klass_device->write_firmware = fu_hailuck_tp_device_write_firmware;
 | 
			
		||||
	klass_device->open = fu_hailuck_tp_device_open;
 | 
			
		||||
	klass_device->close = fu_hailuck_tp_device_close;
 | 
			
		||||
	klass_device->probe = fu_hailuck_tp_device_probe;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -59,18 +59,6 @@ fu_ifd_device_set_access (FuIfdDevice *self, FuIfdRegion region, FuIfdAccess acc
 | 
			
		||||
	priv->access[region] = access;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
fu_ifd_device_open (FuDevice *device, GError **error)
 | 
			
		||||
{
 | 
			
		||||
	return fu_device_open (fu_device_get_parent (device), error);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
fu_ifd_device_close (FuDevice *device, GError **error)
 | 
			
		||||
{
 | 
			
		||||
	return fu_device_close (fu_device_get_parent (device), error);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
fu_ifd_device_to_string (FuDevice *device, guint idt, GString *str)
 | 
			
		||||
{
 | 
			
		||||
@ -131,6 +119,7 @@ fu_ifd_device_init (FuIfdDevice *self)
 | 
			
		||||
{
 | 
			
		||||
	fu_device_add_flag (FU_DEVICE (self), FWUPD_DEVICE_FLAG_INTERNAL);
 | 
			
		||||
	fu_device_add_flag (FU_DEVICE (self), FWUPD_DEVICE_FLAG_CAN_VERIFY_IMAGE);
 | 
			
		||||
	fu_device_add_internal_flag (FU_DEVICE (self), FU_DEVICE_INTERNAL_FLAG_USE_PARENT_FOR_OPEN);
 | 
			
		||||
	fu_device_add_icon (FU_DEVICE (self), "computer");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -141,8 +130,6 @@ fu_ifd_device_class_init (FuIfdDeviceClass *klass)
 | 
			
		||||
	klass_device->to_string = fu_ifd_device_to_string;
 | 
			
		||||
	klass_device->dump_firmware = fu_ifd_device_dump_firmware;
 | 
			
		||||
	klass_device->read_firmware = fu_ifd_device_read_firmware;
 | 
			
		||||
	klass_device->open = fu_ifd_device_open;
 | 
			
		||||
	klass_device->close = fu_ifd_device_close;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FuDevice *
 | 
			
		||||
 | 
			
		||||
@ -96,24 +96,6 @@ fu_pxi_wireless_device_get_parent (FuDevice *self, GError **error)
 | 
			
		||||
	return FU_PXI_RECEIVER_DEVICE (FU_UDEV_DEVICE (parent));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
fu_pxi_wireless_device_open (FuDevice *device, GError **error)
 | 
			
		||||
{
 | 
			
		||||
	FuPxiReceiverDevice *parent = fu_pxi_wireless_device_get_parent (device, error);
 | 
			
		||||
	if (parent == NULL)
 | 
			
		||||
		return FALSE;
 | 
			
		||||
	return fu_device_open (FU_DEVICE (parent), error);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
fu_pxi_wireless_device_close (FuDevice *device, GError **error)
 | 
			
		||||
{
 | 
			
		||||
	FuPxiReceiverDevice *parent = fu_pxi_wireless_device_get_parent (device, error);
 | 
			
		||||
	if (parent == NULL)
 | 
			
		||||
		return FALSE;
 | 
			
		||||
	return fu_device_close (FU_DEVICE (parent), error);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
fu_pxi_wireless_device_get_cmd_response (FuPxiWirelessDevice *device,
 | 
			
		||||
					 guint8 *buf, guint bufsz,
 | 
			
		||||
@ -612,6 +594,7 @@ static void
 | 
			
		||||
fu_pxi_wireless_device_init (FuPxiWirelessDevice *self)
 | 
			
		||||
{
 | 
			
		||||
	fu_device_add_flag (FU_DEVICE (self), FWUPD_DEVICE_FLAG_UPDATABLE);
 | 
			
		||||
	fu_device_add_internal_flag (FU_DEVICE (self), FU_DEVICE_INTERNAL_FLAG_USE_PARENT_FOR_OPEN);
 | 
			
		||||
	fu_device_set_version_format (FU_DEVICE (self), FWUPD_VERSION_FORMAT_TRIPLET);
 | 
			
		||||
	fu_device_add_vendor_id (FU_DEVICE (self), "USB:0x093A");
 | 
			
		||||
	fu_device_add_protocol (FU_DEVICE (self), "com.pixart.rf");
 | 
			
		||||
@ -621,8 +604,6 @@ static void
 | 
			
		||||
fu_pxi_wireless_device_class_init (FuPxiWirelessDeviceClass *klass)
 | 
			
		||||
{
 | 
			
		||||
	FuDeviceClass *klass_device = FU_DEVICE_CLASS (klass);
 | 
			
		||||
	klass_device->open = fu_pxi_wireless_device_open;
 | 
			
		||||
	klass_device->close = fu_pxi_wireless_device_close;
 | 
			
		||||
	klass_device->write_firmware = fu_pxi_wireless_device_write_firmware;
 | 
			
		||||
	klass_device->prepare_firmware = fu_pxi_wireless_device_prepare_firmware;
 | 
			
		||||
	klass_device->to_string = fu_pxi_wireless_device_to_string;
 | 
			
		||||
 | 
			
		||||
@ -193,34 +193,6 @@ fu_rts54hid_module_set_quirk_kv (FuDevice *device,
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
fu_rts54hid_module_open (FuDevice *device, GError **error)
 | 
			
		||||
{
 | 
			
		||||
	FuDevice *parent = fu_device_get_parent (device);
 | 
			
		||||
	if (parent == NULL) {
 | 
			
		||||
		g_set_error_literal (error,
 | 
			
		||||
				     FWUPD_ERROR,
 | 
			
		||||
				     FWUPD_ERROR_NOT_SUPPORTED,
 | 
			
		||||
				     "no parent device");
 | 
			
		||||
		return FALSE;
 | 
			
		||||
	}
 | 
			
		||||
	return fu_device_open (parent, error);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
fu_rts54hid_module_close (FuDevice *device, GError **error)
 | 
			
		||||
{
 | 
			
		||||
	FuDevice *parent = fu_device_get_parent (device);
 | 
			
		||||
	if (parent == NULL) {
 | 
			
		||||
		g_set_error_literal (error,
 | 
			
		||||
				     FWUPD_ERROR,
 | 
			
		||||
				     FWUPD_ERROR_NOT_SUPPORTED,
 | 
			
		||||
				     "no parent device");
 | 
			
		||||
		return FALSE;
 | 
			
		||||
	}
 | 
			
		||||
	return fu_device_close (parent, error);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
fu_rts54hid_module_write_firmware (FuDevice *module,
 | 
			
		||||
				   FuFirmware *firmware,
 | 
			
		||||
@ -272,6 +244,7 @@ fu_rts54hid_module_write_firmware (FuDevice *module,
 | 
			
		||||
static void
 | 
			
		||||
fu_rts54hid_module_init (FuRts54HidModule *self)
 | 
			
		||||
{
 | 
			
		||||
	fu_device_add_internal_flag (FU_DEVICE (self), FU_DEVICE_INTERNAL_FLAG_USE_PARENT_FOR_OPEN);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
@ -281,8 +254,6 @@ fu_rts54hid_module_class_init (FuRts54HidModuleClass *klass)
 | 
			
		||||
	klass_device->write_firmware = fu_rts54hid_module_write_firmware;
 | 
			
		||||
	klass_device->to_string = fu_rts54hid_module_to_string;
 | 
			
		||||
	klass_device->set_quirk_kv = fu_rts54hid_module_set_quirk_kv;
 | 
			
		||||
	klass_device->open = fu_rts54hid_module_open;
 | 
			
		||||
	klass_device->close = fu_rts54hid_module_close;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FuRts54HidModule *
 | 
			
		||||
 | 
			
		||||
@ -217,34 +217,6 @@ fu_rts54hub_rtd21xx_device_read_status (FuRts54hubRtd21xxDevice *self,
 | 
			
		||||
				4200, status, error);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
fu_rts54hub_rtd21xx_device_open (FuDevice *device, GError **error)
 | 
			
		||||
{
 | 
			
		||||
	FuDevice *parent = fu_device_get_parent (device);
 | 
			
		||||
	if (parent == NULL) {
 | 
			
		||||
		g_set_error_literal (error,
 | 
			
		||||
				     FWUPD_ERROR,
 | 
			
		||||
				     FWUPD_ERROR_NOT_SUPPORTED,
 | 
			
		||||
				     "no parent device");
 | 
			
		||||
		return FALSE;
 | 
			
		||||
	}
 | 
			
		||||
	return fu_device_open (parent, error);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
fu_rts54hub_rtd21xx_device_close (FuDevice *device, GError **error)
 | 
			
		||||
{
 | 
			
		||||
	FuDevice *parent = fu_device_get_parent (device);
 | 
			
		||||
	if (parent == NULL) {
 | 
			
		||||
		g_set_error_literal (error,
 | 
			
		||||
				     FWUPD_ERROR,
 | 
			
		||||
				     FWUPD_ERROR_NOT_SUPPORTED,
 | 
			
		||||
				     "no parent device");
 | 
			
		||||
		return FALSE;
 | 
			
		||||
	}
 | 
			
		||||
	return fu_device_close (parent, error);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
fu_rts54hub_rtd21xx_device_init (FuRts54hubRtd21xxDevice *self)
 | 
			
		||||
{
 | 
			
		||||
@ -252,6 +224,7 @@ fu_rts54hub_rtd21xx_device_init (FuRts54hubRtd21xxDevice *self)
 | 
			
		||||
	fu_device_add_protocol (FU_DEVICE (self), "com.realtek.rts54.i2c");
 | 
			
		||||
	fu_device_add_flag (FU_DEVICE (self), FWUPD_DEVICE_FLAG_UPDATABLE);
 | 
			
		||||
	fu_device_add_flag (FU_DEVICE (self), FWUPD_DEVICE_FLAG_DUAL_IMAGE);
 | 
			
		||||
	fu_device_add_internal_flag (FU_DEVICE (self), FU_DEVICE_INTERNAL_FLAG_USE_PARENT_FOR_OPEN);
 | 
			
		||||
	fu_device_set_version_format (FU_DEVICE (self), FWUPD_VERSION_FORMAT_PAIR);
 | 
			
		||||
	fu_device_set_install_duration (FU_DEVICE (self), 100); /* seconds */
 | 
			
		||||
	fu_device_set_logical_id (FU_DEVICE (self), "I2C");
 | 
			
		||||
@ -264,6 +237,4 @@ fu_rts54hub_rtd21xx_device_class_init (FuRts54hubRtd21xxDeviceClass *klass)
 | 
			
		||||
	FuDeviceClass *klass_device = FU_DEVICE_CLASS (klass);
 | 
			
		||||
	klass_device->to_string = fu_rts54hub_rtd21xx_device_to_string;
 | 
			
		||||
	klass_device->set_quirk_kv = fu_rts54hub_rtd21xx_device_set_quirk_kv;
 | 
			
		||||
	klass_device->open = fu_rts54hub_rtd21xx_device_open;
 | 
			
		||||
	klass_device->close = fu_rts54hub_rtd21xx_device_close;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -218,6 +218,7 @@ fu_synaprom_config_init (FuSynapromConfig *self)
 | 
			
		||||
{
 | 
			
		||||
	fu_device_add_protocol (FU_DEVICE (self), "com.synaptics.prometheus.config");
 | 
			
		||||
	fu_device_add_flag (FU_DEVICE (self), FWUPD_DEVICE_FLAG_UPDATABLE);
 | 
			
		||||
	fu_device_add_internal_flag (FU_DEVICE (self), FU_DEVICE_INTERNAL_FLAG_USE_PARENT_FOR_OPEN);
 | 
			
		||||
	fu_device_set_version_format (FU_DEVICE (self), FWUPD_VERSION_FORMAT_PLAIN);
 | 
			
		||||
	fu_device_set_logical_id (FU_DEVICE (self), "cfg");
 | 
			
		||||
	fu_device_set_name (FU_DEVICE (self), "Prometheus IOTA Config");
 | 
			
		||||
@ -241,20 +242,6 @@ fu_synaprom_config_constructed (GObject *obj)
 | 
			
		||||
	G_OBJECT_CLASS (fu_synaprom_config_parent_class)->constructed (obj);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
fu_synaprom_config_open (FuDevice *device, GError **error)
 | 
			
		||||
{
 | 
			
		||||
	FuDevice *parent = fu_device_get_parent (device);
 | 
			
		||||
	return fu_device_open (parent, error);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
fu_synaprom_config_close (FuDevice *device, GError **error)
 | 
			
		||||
{
 | 
			
		||||
	FuDevice *parent = fu_device_get_parent (device);
 | 
			
		||||
	return fu_device_close (parent, error);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
fu_synaprom_config_attach (FuDevice *device, GError **error)
 | 
			
		||||
{
 | 
			
		||||
@ -277,8 +264,6 @@ fu_synaprom_config_class_init (FuSynapromConfigClass *klass)
 | 
			
		||||
	object_class->constructed = fu_synaprom_config_constructed;
 | 
			
		||||
	klass_device->write_firmware = fu_synaprom_config_write_firmware;
 | 
			
		||||
	klass_device->prepare_firmware = fu_synaprom_config_prepare_firmware;
 | 
			
		||||
	klass_device->open = fu_synaprom_config_open;
 | 
			
		||||
	klass_device->close = fu_synaprom_config_close;
 | 
			
		||||
	klass_device->setup = fu_synaprom_config_setup;
 | 
			
		||||
	klass_device->reload = fu_synaprom_config_setup;
 | 
			
		||||
	klass_device->attach = fu_synaprom_config_attach;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user