Richard Hughes
f50ff2c27e
Decouple the version format from the version itself
...
If we say that the version format should be the same for the `version_lowest`
and the `version_bootloader` then it does not always make sense to set it at
the same time.
Moving the `version_format` to a standalone first-class property also means it
can be typically be set in the custom device `_init()` function, which means we
don't need to worry about *changing* ther version format as set by the USB and
UDev superclass helpers.
2020-02-25 14:00:09 +00:00
Mario Limonciello
9dce1f7011
Detect kernel lockdown status
...
Disable superio when kernel lockdown in effect.
2020-02-04 10:08:25 -06:00
Richard Hughes
0cc22a5ff6
trivial: Document the use of vendor-id in each plugin
2019-12-11 18:10:44 +00:00
Richard Hughes
d3d64b5b54
superio: Use the baseboard vendor as the vendor ID
2019-12-11 18:10:44 +00:00
Mario Limonciello
6b0e66354b
Convert libfwupdprivate to a shared library libfwupdplugin
2019-11-27 11:32:43 +00:00
Richard Hughes
56ac823af9
Set the protocol per-device not per-plugin
...
Some plugins have devices with more than one protocol. Logically the protocol
belongs to the device, not the plugin, and in the future we could use this to
further check firmware that's about to be deployed.
This is also not exported into libfwupd (yet?) as it's remains a debug-feature
only -- protocols are not actually required for devices to be added.
2019-11-25 18:01:54 +00:00
Mario Limonciello
6abe21efbd
trivial: stop including fu-hash.h as part of fu-plugin-vfuncs.h
...
Explicitly include it in all "in-tree" plugins.
If headers are exported out of tree we will likely explicitly not
export this header.
2019-11-25 09:29:46 +00:00
Richard Hughes
d630b5ee66
superio: Never read from port offset zero
...
At this point, PM1 IOBAD0 is unset, and thus zero...
2019-11-08 17:51:43 +00:00
Richard Hughes
025fc77d7a
superio: Fix regression when coldplugging superio devices
...
Fixes https://github.com/fwupd/fwupd/issues/1546
2019-11-08 17:51:43 +00:00
Richard Hughes
bf00080d3f
Move the file descriptor lifecycle into FuUdevDevice
...
This also means we can provide common 'safe' versions for plugins to use.
This makes a lot of plugins much simpler and we can delete a lot of code.
2019-10-31 09:21:35 -05:00
Mario Limonciello
8fa0b382fa
Add new flags can-verify
and can-verify-image
...
These are used to indicate that the device can verify checksums or
can dump an image for checksumming.
2019-10-14 12:41:09 -05:00
Richard Hughes
f0eb091173
Read firmware back from the device as a FuFirmware
...
Returning a GBytes is not good enough when the device may be returning multiple
partitions which have to be stored as FuFirmwareImage objects.
2019-10-10 11:57:48 +01:00
Richard Hughes
8653e70480
trivial: Remove G_BEGIN_DECLS from all private headers
2019-10-09 20:02:16 +01:00
Richard Hughes
7f67721432
Reduce more boilerplate in plugins
2019-10-07 12:37:21 +01:00
Richard Hughes
4b30380e78
Provide a default implementation of common FuDevice actions
...
This reduces the amount of boilerplate in each plugin.
32 files changed, 156 insertions(+), 584 deletions(-)
2019-10-04 14:57:32 +01:00
Richard Hughes
6e3e62bee8
Use fu_common_string_append_kv() in subclassed device
...
Also define the indent level in the the ->to_string vfunc so we can correctly
print client devices in all cases.
2019-08-14 16:48:37 +01:00
Richard Hughes
7afd7cba0d
Use FuFirmware as a container for firmware images
...
In many plugins we've wanted to use ->prepare_firmware() to parse the firmware
ahead of ->detach() and ->write_firmware() but this has the limitation that it
can only return a single blob of data.
For many devices, multiple binary blobs are required from one parsed image,
for instance providing signatures, config and data blobs that have to be pushed
to the device in different way.
This also means we parse the firmware *before* we ask the user to detach.
Break the internal FuDevice API to support these firmware types as they become
more popular.
This also allows us to move the Intel HEX and SREC parsing out of the dfu plugin
as they are used by a few plugins now, and resolving symbols between plugins
isn't exactly awesome.
2019-08-08 13:10:57 +01:00
Richard Hughes
ea995da5f2
Revert "Allow SuperIO updates to be done live"
...
This reverts commit 87a392954a7427d68b61d0e53987a46d5984a9fd.
2019-06-11 08:04:09 +00:00
Richard Hughes
13800b719e
Allow SuperIO updates to be done live
...
Apparently Star Labs have been using this for some time. It's still important
to reboot after the update has been performed.
2019-05-22 12:54:38 +01:00
Richard Hughes
dfa9e11bb2
Allow handling FORCE for devices that subclass FuDevice
...
Pass FwupdInstallFlags down to the vfunc to allow us to check the flags when
parsing the firmware and updating the device.
2019-05-05 15:29:00 -05:00
Richard Hughes
5079f26f0e
Never guess the version format from the version string
...
This leads to madness, as some formats are supersets of the detected types,
e.g. 'intel-me' is detected as 'quad' and 'bcd' is detected as 'pair'.
Where the version format is defined in a specification or hardcoded in the
source use a hardcoded enum value, otherwise use a quirk override.
Additionally, warn if the version does not match the defined version format
2019-04-30 09:25:41 +01:00
Richard Hughes
dce91204c9
Fix some typos spotted using codespell
2019-04-08 12:47:53 +01:00
Richard Hughes
07c1b2d0f4
superio: Add InstallDuration default value
2019-03-23 16:13:52 +00:00
Richard Hughes
38b357b131
superio: Add support for writing new e-flash contents
2019-03-23 12:04:18 +00:00
Richard Hughes
6c2cc7868f
superio: Fix reading the attestation checksum
...
The 14th signature byte is 'hijacked' as the SPI to e-flash offset in the hw.
2019-03-23 12:04:18 +00:00
Richard Hughes
0573febb0b
superio: Add support for reading the device checksum
2019-03-23 12:04:18 +00:00
Richard Hughes
4702dfe0a7
superio: Use the chipset ID in the device name
2019-03-23 12:04:18 +00:00
Richard Hughes
763483411d
superio: Move the device flush before getting the register map
2019-03-23 12:04:18 +00:00
Richard Hughes
c5ef28ad5e
superio: Move all the IT89xx code to a subclassed device object
2019-03-23 12:04:18 +00:00
Richard Hughes
ebedf62b15
superio: Move all the IT85xx code to a subclassed device object
2019-03-23 12:04:18 +00:00
Richard Hughes
ebd55e5d14
superio: Split and export fu_superio_device_ec_writeX()
2019-03-23 12:04:18 +00:00
Richard Hughes
08609f3920
superio: Remove the port from fu_superio_device_ec_read()
...
It's always going to be PM1_IOBAD0.
2019-03-23 12:04:18 +00:00
Richard Hughes
1fccae68ad
superio: Move the register read/write into the FuSuperioDevice object
...
This will allow us to use them from subclassed objects.
2019-03-23 12:04:18 +00:00
Richard Hughes
140ce926ae
superio: Check the IOBAD0 is usable during setup
2019-03-23 12:04:18 +00:00
Richard Hughes
4c9d00c1d5
superio: Use fu_device_set_firmware_size()
2019-03-23 12:04:18 +00:00
Richard Hughes
bb73e6594d
superio: Move some constants out to the common header
2019-03-23 12:04:18 +00:00
Richard Hughes
f83639fb77
superio: Use GObject properties in FuSuperioDevice
2019-03-23 12:04:18 +00:00
Richard Hughes
b12d0bfec5
superio: Convert FuSuperioDevice to be derivable
...
We'll need this for future refactoring.
2019-03-23 12:04:18 +00:00
Richard Hughes
b7537782cb
trivial: Fix the debug print when dumping SuperIO registers
...
Found using Coverity.
2019-03-18 16:35:01 +00:00
Richard Hughes
37b6c70aa0
superio: Add list of SPI commands for future usage
2019-03-18 15:59:33 +00:00
Richard Hughes
079b7b6f9d
superio: Get the chip size from the EC rather than hardcoding
...
I'm not sure why we can't just use SIO_LDNxx_IDX_CHIPID1, but lets do the same
as the vendor tool in case there is a good reason that I don't know about.
2019-03-15 13:47:57 +00:00
Richard Hughes
a0f9d2e110
superio: Fix a trivial build warning
...
Fixes https://github.com/hughsie/fwupd/issues/1081
2019-03-08 18:33:06 +00:00
Richard Hughes
19a9fc4e6d
superio: Implement detach() and attach()
...
This gets us closer to actually being able to flash the hardware.
2019-02-14 09:12:26 -06:00
Richard Hughes
5acfc64a78
superio: Correct the names of some constants and improve debugging support
2019-02-14 09:12:26 -06:00
Richard Hughes
8cfbb25c31
trivial: Fix a few 'Sign check of bitwise op' LGTM warnings
...
Not really a bug, as @crc and @data are both unsigned.
2019-02-12 06:28:51 -06:00
Richard Hughes
bfd946e463
Use '#pragma once' to avoid a lot of boilerplate
2019-02-09 08:42:30 -06:00
Richard Hughes
65c81921b6
Add fu_device_add_instance_id() and prefer explicit conversion
2019-02-04 15:19:57 +00:00
Richard Hughes
f425d29a28
Show a console warning if loading an out-of-tree plugin
...
Fixes https://github.com/hughsie/fwupd/issues/950
2019-01-19 07:26:20 +00:00
Richard Hughes
831eb7ef7e
superio: Support IT89xx devices
...
We can switch to LDN 0x11 and read the IO base address for the PM1 legacy port
rather than hardcoding data and command ports.
2019-01-08 12:53:57 +00:00
Richard Hughes
0e17e6d030
Fix building with -Wl,-z,defs
...
This allows us to find undefined references at compile time, not runtime.
2018-12-25 16:10:54 -06:00