fwupd/plugins/dell-dock
Richard Hughes 1981c63d58 Remove FuFirmwareImage and just use FuFirmware instead
This allows us to 'nest' firmware formats, and removes a ton of duplication.

The aim here is to deprecate FuFirmwareImage -- it's almost always acting
as a 'child' FuFirmware instance, and even copies most of the vfuncs to allow
custom types. If I'm struggling to work out what should be a FuFirmware and
what should be a FuFirmwareImage then a plugin author has no hope.

For simple payloads we were adding bytes into an image and then the image into
a firmware. This gets really messy when most plugins are treating the FuFirmware
*as* the binary firmware file.

The GBytes saved in the FuFirmware would be considered the payload with the
aim of not using FuFirmwareImage in the single-image case.
2021-03-09 21:14:12 +00:00
..
dell-dock.quirk Simplify the quirk file format 2021-03-03 08:30:34 +00:00
fu-dell-dock-common.c trivial: dell-dock: mirror update status from passive flow 2019-01-31 10:53:54 -06:00
fu-dell-dock-common.h Use '#pragma once' to avoid a lot of boilerplate 2019-02-09 08:42:30 -06:00
fu-dell-dock-hid.c Change all instances of master/slave to initiator/target 2020-07-01 15:44:30 +01:00
fu-dell-dock-hid.h Change all instances of master/slave to initiator/target 2020-07-01 15:44:30 +01:00
fu-dell-dock-hub.c Remove FuFirmwareImage and just use FuFirmware instead 2021-03-09 21:14:12 +00:00
fu-dell-dock-hub.h Add FuHidDevice abstraction 2020-03-19 17:02:07 +00:00
fu-dell-dock-i2c-ec.c Remove FuFirmwareImage and just use FuFirmware instead 2021-03-09 21:14:12 +00:00
fu-dell-dock-i2c-ec.h trivial: Remove excess #include 2021-01-13 20:06:08 +00:00
fu-dell-dock-i2c-mst.c Remove FuFirmwareImage and just use FuFirmware instead 2021-03-09 21:14:12 +00:00
fu-dell-dock-i2c-mst.h trivial: Remove G_BEGIN_DECLS from all private headers 2019-10-09 20:02:16 +01:00
fu-dell-dock-i2c-tbt.c Remove FuFirmwareImage and just use FuFirmware instead 2021-03-09 21:14:12 +00:00
fu-dell-dock-i2c-tbt.h dell-dock: Port to using fu_device_get_proxy() 2020-04-15 20:34:31 +01:00
fu-dell-dock-status.c Remove FuFirmwareImage and just use FuFirmware instead 2021-03-09 21:14:12 +00:00
fu-dell-dock-status.h trivial: Remove G_BEGIN_DECLS from all private headers 2019-10-09 20:02:16 +01:00
fu-plugin-dell-dock.c Be more strict for custom quirk keys 2021-03-03 08:30:34 +00:00
meson.build Convert libfwupdprivate to a shared library libfwupdplugin 2019-11-27 11:32:43 +00:00
README.md dell-dock: Remove non-passive update flow support 2021-02-25 15:47:25 +00:00

Dell USB-C Dock

Dell System

Unlike previous Dell USB-C devices, a Dell system is not needed for updating.

Components

The device contains components the following directly updatable components:

  • USB hubs
  • MST controller
  • Thunderbolt controller
  • Embedded controller

This plugin is used to perform the update on the USB hubs as well as the Dell Embedded controller. The USB hubs are updated directly over a USB HID endpoint while the embedded controller is updated using an I2C over HID interface.

The fwupd thunderbolt plugin is used for updating the Titan Ridge controller.

The MST controller is updated through either the DP Aux interface (SynapticsMST plugin) or I2C over HID interface provided by this plugin.

Device topology

When this plugin is used, devices present in other plugins may be shown in the topology of this dock. This is intentional as this plugin works together with those plugins to manage the flashing of all components.

Firmware Format

The daemon will decompress the cabinet archive and extract several firmware blobs with an unspecified binary file format.

This plugin supports the following protocol ID:

  • com.dell.dock
  • com.synaptics.mst

GUID Generation

These devices use several different generation schemes, e.g.

  • USB Hub1: USB\VID_413C&PID_B06F&hub
  • USB Hub2: USB\VID_413C&PID_B06E&hub
  • Embedded Controller: USB\VID_413C&PID_B06E&hub&embedded
  • Update Level: USB\VID_413C&PID_B06E&hub&status
  • MST Hub: MST-panamera-vmm5331-259
  • Thunderbolt Controller: TBT-00d4b070

Update Behavior

All devices will be updated the next time the usb-c plug from the dock is unplugged from the host.

Vendor ID Security

The vendor ID is set from the USB vendor, in this instance set to USB:0x413C

Quirk use

This plugin uses the following plugin-specific quirks:

Quirk Description Minimum fwupd version
DellDockUnlockTarget The EC argument needed for unlocking certain device usage. 1.1.3
DellDockBlobMajorOffset The offset of the major version number in a payload 1.1.3
DellDockBlobMinorOffset The offset of the minor version number in a payload 1.1.3
DellDockBlobBuildOffset The offset of the build version number in a payload 1.1.3
DellDockBlobVersionOffset The offset of the ASCII representation of a version string in a payload 1.1.3
DellDockBoardMin The minimum board revision required to safely operate the plugin 1.1.3
DellDockVersionLowest The minimum component version required to safely operate the plugin 1.1.3
DellDockBoard* The board description of a board revision 1.1.3
DellDockInstallDurationI2C The duration of time required to install a payload via I2C. 1.1.3

External interface access

This plugin requires read/write access to /dev/bus/usb.