While the modern firmware interfaces report their version numbers in
big-endian form, reading the legacy Bluetooth module version via the
FU_WAC_REPORT_ID_GET_FIRMWARE_VERSION_BLUETOOTH report requires us to
actually parse a little-endian value. This difference was overlooked
when making changes to the version parsing code in commit 50a4ec70e6.
This commit restores the proper interpretation.
Fixes: 50a4ec70e6 (wacom_usb: Firmware versions are packed BCD, not "decimal")
Add a FuDevice->ready() vfunc that is run after ->setup()
This allows plugins to perform setup actions that require quirk matches
after the instance IDs have been converted. This allows us to also
remove FuVliDevice->setup() as the ordering chain has been broken.
There are two USB-3 hubs internally (with the same VID&PID), and the
MSP430 is only attached to the top-level one.
Fixes https://github.com/fwupd/fwupd/issues/3366
Add a suffix to any GUIDs that are currently unconverted InstanceIDs.
This makes plugin development much easier as you can now see why GUID
quirks in the subclassed ->setup() are not matching.
Before this change calling FuUsbDevice->open() opened the device, and
also unconditionally added various GUIDs and InstanceIDs which we
normally do in setup.
Then fu_device_setup() would call the FuSubclass->setup() vfunc which
would have no way of either opting out of the FuUsbDevice->setup()-like
behaviour, or controlling if the parent class ->setup is run before or
after the subclass setup.
Split up FuUsbDevice->open() into clear ->open() and ->setup() phases
and add the parent class calls where appropriate.
This means that ->setup() now behaves the same as all the other vfuncs.
The previous safety check was introduced due to a bug in the kernel
where it would produce a traceback and hang the offending process.
This code was fixed in kernel 5.2.0:
8ae5b1d78d
Add a new configuration option that will allow disabling the safety
checks if a new enough kernel is in place. This configuration option
is necessary because some Linux distributions may backport drm, and thus
this commit but still need the feature to work.
This will improve the pre-commit hook coverage.
For dfu: waive pre-commit checks for internal header file
This is internal to the plugin not to the library.
Do not manually call config setup before adding the parent.
The ->setup() action is called on children explicitly in fu_device_setup()
after the parent device has all the required properties.
Fixes https://github.com/fwupd/fwupd/issues/3364
There were some compilation warnings (one actual error) and possibility
to use incorrect efivar library.
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>