From d35f199fb63a0a683ed87ea9ea57c7cb5a2a17eb Mon Sep 17 00:00:00 2001 From: Richard Hughes Date: Thu, 9 Feb 2023 10:34:15 +0000 Subject: [PATCH] trivial: Add some additional docs about CCGX factory mode --- plugins/ccgx/README.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/plugins/ccgx/README.md b/plugins/ccgx/README.md index a3b192c41..eb3496ffb 100644 --- a/plugins/ccgx/README.md +++ b/plugins/ccgx/README.md @@ -56,6 +56,36 @@ The `CY_PD_JUMP_TO_ALT_FW_CMD_SIG` command is allowed only in asymmetric FW, but In composite firmware topology, a single firmware image contains metadata and firmware images of multiple devices including DMC itself in a dock system. +### DMC Factory Mode + +Dock Management Controller devices have a *composite version* that is used to +describe the dock hardware as a whole, rather than enumerating and updating +each sub-component separately. +When OEMs have not followed the IHV-approved factory assembly process, the +composite number is unset and fwupd would display `0.0.0.0` in the GUI and +on the command line. + +In fwupd >= 1.8.11 we detect if the device is in *factory mode* and set the +version number to `0.0.0.1`. +When the device is in factory mode any valid upgrade will be allowed, which +means the user might be prompted to “update to” the same current version +installed on the dock. +For millions of devices this is both a waste of time, resources, and also +would inconvenience the user with an additional process for no reason. + +For devices that have been shipped in factory mode, but would like to avoid +the update from `0.0.0.1` to the original version on the LVFS, can add a +quirk entry which matches the `devx` subcomponent *base version*. +In this example we match the parent VID, PID, the ComponentID and the `devx` +base firmware version, setting the parent composite version to `0.0.0.15`. + + [USB\VID_2188&PID_0035&CID_05&VER_3.3.1.69] + CcgxDmcCompositeVersion = 15 + +All the `devx` subcomponent versions can be shown on the console using: + + sudo fwupdtool –plugins ccgx get-devices –show-all –verbose + ## Firmware Format There are two kinds of firmware format.