mirror of
https://git.proxmox.com/git/fwupd
synced 2025-08-15 13:59:15 +00:00
vli-usbhub: Open the parent device before attempting to read or write from the child
This commit is contained in:
parent
6496f12b37
commit
233868124e
@ -110,6 +110,12 @@ fu_vli_usbhub_i2c_device_write_firmware (FuDevice *device,
|
|||||||
FuVliUsbhubDevice *parent = FU_VLI_USBHUB_DEVICE (fu_device_get_parent (device));
|
FuVliUsbhubDevice *parent = FU_VLI_USBHUB_DEVICE (fu_device_get_parent (device));
|
||||||
GPtrArray *records = fu_ihex_firmware_get_records (FU_IHEX_FIRMWARE (firmware));
|
GPtrArray *records = fu_ihex_firmware_get_records (FU_IHEX_FIRMWARE (firmware));
|
||||||
guint16 usbver = fu_usb_device_get_spec (FU_USB_DEVICE (device));
|
guint16 usbver = fu_usb_device_get_spec (FU_USB_DEVICE (device));
|
||||||
|
g_autoptr(FuDeviceLocker) locker = NULL;
|
||||||
|
|
||||||
|
/* open device */
|
||||||
|
locker = fu_device_locker_new (parent, error);
|
||||||
|
if (locker == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
/* transfer by I²C write, and check status by I²C read */
|
/* transfer by I²C write, and check status by I²C read */
|
||||||
fu_device_set_status (device, FWUPD_STATUS_DEVICE_WRITE);
|
fu_device_set_status (device, FWUPD_STATUS_DEVICE_WRITE);
|
||||||
|
@ -125,7 +125,15 @@ fu_vli_usbhub_pd_device_read_firmware (FuDevice *device, GError **error)
|
|||||||
{
|
{
|
||||||
FuVliUsbhubDevice *parent = FU_VLI_USBHUB_DEVICE (fu_device_get_parent (device));
|
FuVliUsbhubDevice *parent = FU_VLI_USBHUB_DEVICE (fu_device_get_parent (device));
|
||||||
FuVliUsbhubPdDevice *self = FU_VLI_USBHUB_PD_DEVICE (device);
|
FuVliUsbhubPdDevice *self = FU_VLI_USBHUB_PD_DEVICE (device);
|
||||||
|
g_autoptr(FuDeviceLocker) locker = NULL;
|
||||||
g_autoptr(GBytes) fw = NULL;
|
g_autoptr(GBytes) fw = NULL;
|
||||||
|
|
||||||
|
/* open device */
|
||||||
|
locker = fu_device_locker_new (parent, error);
|
||||||
|
if (locker == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
/* read */
|
||||||
fu_device_set_status (FU_DEVICE (device), FWUPD_STATUS_DEVICE_VERIFY);
|
fu_device_set_status (FU_DEVICE (device), FWUPD_STATUS_DEVICE_VERIFY);
|
||||||
fw = fu_vli_usbhub_device_spi_read (parent,
|
fw = fu_vli_usbhub_device_spi_read (parent,
|
||||||
fu_vli_usbhub_pd_chip_get_offset (self->chip),
|
fu_vli_usbhub_pd_chip_get_offset (self->chip),
|
||||||
@ -146,6 +154,7 @@ fu_vli_usbhub_pd_device_write_firmware (FuDevice *device,
|
|||||||
FuVliUsbhubDevice *parent = FU_VLI_USBHUB_DEVICE (fu_device_get_parent (device));
|
FuVliUsbhubDevice *parent = FU_VLI_USBHUB_DEVICE (fu_device_get_parent (device));
|
||||||
gsize bufsz = 0;
|
gsize bufsz = 0;
|
||||||
const guint8 *buf;
|
const guint8 *buf;
|
||||||
|
g_autoptr(FuDeviceLocker) locker = NULL;
|
||||||
g_autoptr(GBytes) fw = NULL;
|
g_autoptr(GBytes) fw = NULL;
|
||||||
|
|
||||||
/* simple image */
|
/* simple image */
|
||||||
@ -153,6 +162,11 @@ fu_vli_usbhub_pd_device_write_firmware (FuDevice *device,
|
|||||||
if (fw == NULL)
|
if (fw == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
/* open device */
|
||||||
|
locker = fu_device_locker_new (parent, error);
|
||||||
|
if (locker == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
/* erase */
|
/* erase */
|
||||||
fu_device_set_status (device, FWUPD_STATUS_DEVICE_ERASE);
|
fu_device_set_status (device, FWUPD_STATUS_DEVICE_ERASE);
|
||||||
buf = g_bytes_get_data (fw, &bufsz);
|
buf = g_bytes_get_data (fw, &bufsz);
|
||||||
|
Loading…
Reference in New Issue
Block a user