@samitouri / QOSamiQemu / commits / 3adafff6a5

hw/i3c/aspeed_i3c: Add more register fields

Adds the rest of the Aspeed I3C controller register fields. Signed-off-by: Joe Komlodi <komlodi@google.com> Reviewed-by: Patrick Venture <venture@google.com> Reviewed-by: Jamin Lin <jamin_lin@aspeedtech.com> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com> Tested-by: Jithu Joseph <jithu.joseph@oss.qualcomm.com> Link: https://lore.kernel.org/qemu-devel/20260225021158.1586584-7-jamin_lin@aspeedtech.com Signed-off-by: Cédric Le Goater <clg@redhat.com>

Jamin Lin committed Feb 25, 2026 at 02:12 UTC 3adafff6a54c0fb8da112152ba7ef69579bc98a1
1 file changed +42 -12
hw/i3c/aspeed_i3c.c
+42 -12
@@ -21,28 +21,58 @@
21 /* I3C Controller Registers */
22 REG32(I3C1_REG0, 0x10)
23 REG32(I3C1_REG1, 0x14)
24 - FIELD(I3C1_REG1, I2C_MODE, 0, 1)
25 - FIELD(I3C1_REG1, SA_EN, 15, 1)
24 + FIELD(I3C1_REG1, I2C_MODE, 0, 1)
25 + FIELD(I3C1_REG1, SLV_TEST_MODE, 1, 1)
26 + FIELD(I3C1_REG1, ACT_MODE, 2, 2)
27 + FIELD(I3C1_REG1, PENDING_INT, 4, 4)
28 + FIELD(I3C1_REG1, SA, 8, 7)
29 + FIELD(I3C1_REG1, SA_EN, 15, 1)
30 + FIELD(I3C1_REG1, INST_ID, 16, 4)
31 REG32(I3C2_REG0, 0x20)
32 REG32(I3C2_REG1, 0x24)
28 - FIELD(I3C2_REG1, I2C_MODE, 0, 1)
29 - FIELD(I3C2_REG1, SA_EN, 15, 1)
33 + FIELD(I3C2_REG1, I2C_MODE, 0, 1)
34 + FIELD(I3C2_REG1, SLV_TEST_MODE, 1, 1)
35 + FIELD(I3C2_REG1, ACT_MODE, 2, 2)
36 + FIELD(I3C2_REG1, PENDING_INT, 4, 4)
37 + FIELD(I3C2_REG1, SA, 8, 7)
38 + FIELD(I3C2_REG1, SA_EN, 15, 1)
39 + FIELD(I3C2_REG1, INST_ID, 16, 4)
40 REG32(I3C3_REG0, 0x30)
41 REG32(I3C3_REG1, 0x34)
32 - FIELD(I3C3_REG1, I2C_MODE, 0, 1)
33 - FIELD(I3C3_REG1, SA_EN, 15, 1)
42 + FIELD(I3C3_REG1, I2C_MODE, 0, 1)
43 + FIELD(I3C3_REG1, SLV_TEST_MODE, 1, 1)
44 + FIELD(I3C3_REG1, ACT_MODE, 2, 2)
45 + FIELD(I3C3_REG1, PENDING_INT, 4, 4)
46 + FIELD(I3C3_REG1, SA, 8, 7)
47 + FIELD(I3C3_REG1, SA_EN, 15, 1)
48 + FIELD(I3C3_REG1, INST_ID, 16, 4)
49 REG32(I3C4_REG0, 0x40)
50 REG32(I3C4_REG1, 0x44)
36 - FIELD(I3C4_REG1, I2C_MODE, 0, 1)
37 - FIELD(I3C4_REG1, SA_EN, 15, 1)
51 + FIELD(I3C4_REG1, I2C_MODE, 0, 1)
52 + FIELD(I3C4_REG1, SLV_TEST_MODE, 1, 1)
53 + FIELD(I3C4_REG1, ACT_MODE, 2, 2)
54 + FIELD(I3C4_REG1, PENDING_INT, 4, 4)
55 + FIELD(I3C4_REG1, SA, 8, 7)
56 + FIELD(I3C4_REG1, SA_EN, 15, 1)
57 + FIELD(I3C4_REG1, INST_ID, 16, 4)
58 REG32(I3C5_REG0, 0x50)
59 REG32(I3C5_REG1, 0x54)
40 - FIELD(I3C5_REG1, I2C_MODE, 0, 1)
41 - FIELD(I3C5_REG1, SA_EN, 15, 1)
60 + FIELD(I3C5_REG1, I2C_MODE, 0, 1)
61 + FIELD(I3C5_REG1, SLV_TEST_MODE, 1, 1)
62 + FIELD(I3C5_REG1, ACT_MODE, 2, 2)
63 + FIELD(I3C5_REG1, PENDING_INT, 4, 4)
64 + FIELD(I3C5_REG1, SA, 8, 7)
65 + FIELD(I3C5_REG1, SA_EN, 15, 1)
66 + FIELD(I3C5_REG1, INST_ID, 16, 4)
67 REG32(I3C6_REG0, 0x60)
68 REG32(I3C6_REG1, 0x64)
44 - FIELD(I3C6_REG1, I2C_MODE, 0, 1)
45 - FIELD(I3C6_REG1, SA_EN, 15, 1)
69 + FIELD(I3C6_REG1, I2C_MODE, 0, 1)
70 + FIELD(I3C6_REG1, SLV_TEST_MODE, 1, 1)
71 + FIELD(I3C6_REG1, ACT_MODE, 2, 2)
72 + FIELD(I3C6_REG1, PENDING_INT, 4, 4)
73 + FIELD(I3C6_REG1, SA, 8, 7)
74 + FIELD(I3C6_REG1, SA_EN, 15, 1)
75 + FIELD(I3C6_REG1, INST_ID, 16, 4)
76
77 static uint64_t aspeed_i3c_read(void *opaque, hwaddr addr, unsigned int size)
78 {