This is good, thanks for adding it in changelog. Can you also add this
description to Documentation (that can come as an individual patch),
+/*
+ * v1.2 device - SDCA address mapping
+ *
+ * Spec definition
+ * Bits Contents
+ * 31 0 (required by addressing range)
+ * 30:26 0b10000 (Control Prefix)
So this is for 30:26
+ * 25 0 (Reserved)
+ * 24:22 Function Number [2:0]
+ * 21 Entity[6]
+ * 20:19 Control Selector[5:4]
+ * 18 0 (Reserved)
+ * 17:15 Control Number[5:3]
+ * 14 Next
+ * 13 MBQ
+ * 12:7 Entity[5:0]
+ * 6:3 Control Selector[3:0]
+ * 2:0 Control Number[2:0]
+ */
+
+#define SDW_SDCA_CTL(fun, ent, ctl, ch) \
+ (BIT(30) | \
Programmatically this is fine, but then since we are defining for the
description above, IMO it would actually make sense for this to be defined
as FIELD_PREP:
FIELD_PREP(GENMASK(30, 26), 1)
or better
u32_encode_bits(GENMASK(30, 26), 1)
+ FIELD_PREP(GENMASK(24, 22), FIELD_GET(GENMASK(2, 0), (fun))) | \
Why not use u32_encode_bits(GENMASK(24, 22), (fun)) instead for this and
below?
+ FIELD_PREP(BIT(21), FIELD_GET(BIT(6), (ent))) | \
+ FIELD_PREP(GENMASK(20, 19), FIELD_GET(GENMASK(5, 4), (ctl))) | \
+ FIELD_PREP(GENMASK(17, 15), FIELD_GET(GENMASK(5, 3), (ch))) | \
+ FIELD_PREP(GENMASK(12, 7), FIELD_GET(GENMASK(5, 0), (ent))) | \
+ FIELD_PREP(GENMASK(6, 3), FIELD_GET(GENMASK(3, 0), (ctl))) | \
+ FIELD_PREP(GENMASK(2, 0), FIELD_GET(GENMASK(2, 0), (ch))))
Also, can we rather have a nice function for this, that would look much
cleaner
And while at it, consider defining masks for various fields rather than
using numbers in GENMASK() above, that would look better, be more
readable and people can reuse it.