Introduce a second default decoder that behaves just like barebox_tlv_v1 but uses the "tlv-generic" keyring.
Signed-off-by: Jonas Rebmann <[email protected]> --- .../devicetree/bindings/nvmem/barebox,tlv.yaml | 1 + common/tlv/barebox.c | 25 +++++++++++++++++++++- include/tlv/format.h | 1 + 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/nvmem/barebox,tlv.yaml b/Documentation/devicetree/bindings/nvmem/barebox,tlv.yaml index 7a77b9a0b4..7d678ee04a 100644 --- a/Documentation/devicetree/bindings/nvmem/barebox,tlv.yaml +++ b/Documentation/devicetree/bindings/nvmem/barebox,tlv.yaml @@ -22,6 +22,7 @@ properties: items: - enum: - barebox,tlv-v1 # magic: 0x61bb95f2 + - barebox,tlv-v1-signed # magic: 0x61bb95f3 - lxa,tlv-baseboard-v1 # magic: 0xbc288dfe - lxa,tlv-powerboard-v1 # magic: 0xdca5a870 - const: barebox,tlv diff --git a/common/tlv/barebox.c b/common/tlv/barebox.c index b941463b31..24de3eeaaa 100644 --- a/common/tlv/barebox.c +++ b/common/tlv/barebox.c @@ -177,16 +177,39 @@ static struct of_device_id of_matches[] = { { .compatible = "barebox,tlv-v1" }, { /* sentinel */} }; +static struct of_device_id of_matches_signed[] = { + { .compatible = "barebox,tlv-v1-signed" }, + { /* sentinel */ } +}; static struct tlv_decoder barebox_tlv_v1 = { .magic = TLV_MAGIC_BAREBOX_V1, .driver.name = "barebox-tlv-v1", .driver.of_compatible = of_matches, .mappings = mappings, + .signature_keyring = NULL, +}; + +static struct tlv_decoder barebox_tlv_v1_signed = { + .magic = TLV_MAGIC_BAREBOX_V1_SIGNED, + .driver.name = "barebox-tlv-v1-signed", + .driver.of_compatible = of_matches_signed, + .mappings = mappings, + .signature_keyring = "tlv-generic", }; static int tlv_register_default(void) { - return tlv_register_decoder(&barebox_tlv_v1); + int err; + + err = tlv_register_decoder(&barebox_tlv_v1); + if (err) + return err; + if (IS_ENABLED(CONFIG_TLV_SIGNATURE)) { + err = tlv_register_decoder(&barebox_tlv_v1_signed); + if (err) + return err; + } + return 0; } device_initcall(tlv_register_default); diff --git a/include/tlv/format.h b/include/tlv/format.h index cbe0a132b1..ab12f0c9bb 100644 --- a/include/tlv/format.h +++ b/include/tlv/format.h @@ -23,6 +23,7 @@ #include <linux/build_bug.h> #define TLV_MAGIC_BAREBOX_V1 0x61bb95f2 +#define TLV_MAGIC_BAREBOX_V1_SIGNED 0x61bb95f3 #define TLV_MAGIC_LXA_BASEBOARD_V1 0xbc288dfe #define TLV_MAGIC_LXA_POWERBOARD_V1 0xc6895c21 #define TLV_MAGIC_LXA_IOBOARD_V1 0xdca5a870 -- 2.51.2.535.g419c72cb8a
