Skip to content

Commit fa752c2

Browse files
committed
entdaa: write assinged addresses to CSRs
1 parent 8e7ca90 commit fa752c2

File tree

5 files changed

+61
-13
lines changed

5 files changed

+61
-13
lines changed

src/ctrl/controller.sv

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,9 @@ module controller
226226
output logic [6:0] set_dasa_o,
227227
output logic set_dasa_valid_o,
228228
output logic set_dasa_virtual_device_o,
229+
output logic set_newda_o,
230+
output logic set_newda_virtual_device_o,
231+
output logic [6:0] newda_o,
229232
output logic rstdaa_o,
230233

231234
output logic enec_ibi_o,
@@ -551,6 +554,9 @@ module controller
551554
.set_dasa_valid_o(set_dasa_valid_o),
552555
.set_dasa_virtual_device_o(set_dasa_virtual_device_o),
553556
.rstdaa_o(rstdaa_o),
557+
.set_newda_o,
558+
.set_newda_virtual_device_o,
559+
.newda_o,
554560
.rst_action_o,
555561
.rst_action_valid_o,
556562
.enec_ibi_o(enec_ibi_o),

src/ctrl/controller_standby.sv

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,9 @@ module controller_standby
146146
output logic [6:0] set_dasa_o,
147147
output logic set_dasa_valid_o,
148148
output logic set_dasa_virtual_device_o,
149+
output logic set_newda_o,
150+
output logic set_newda_virtual_device_o,
151+
output logic [6:0] newda_o,
149152
output logic rstdaa_o,
150153
output logic [7:0] rst_action_o,
151154
output logic rst_action_valid_o,
@@ -445,6 +448,9 @@ module controller_standby
445448
.set_dasa_o(set_dasa_o),
446449
.set_dasa_valid_o(set_dasa_valid_o),
447450
.set_dasa_virtual_device_o(set_dasa_virtual_device_o),
451+
.set_newda_o,
452+
.set_newda_virtual_device_o,
453+
.newda_o,
448454
.rst_action_o,
449455
.rst_action_valid_o,
450456
.enec_ibi_o(enec_ibi_o),

src/ctrl/controller_standby_i3c.sv

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,9 @@ module controller_standby_i3c
100100
output logic [6:0] set_dasa_o,
101101
output logic set_dasa_valid_o,
102102
output logic set_dasa_virtual_device_o,
103+
output logic set_newda_o,
104+
output logic set_newda_virtual_device_o,
105+
output logic [6:0] newda_o,
103106
output logic rstdaa_o,
104107

105108
output logic enec_ibi_o,
@@ -260,8 +263,6 @@ module controller_standby_i3c
260263
logic ent_tm;
261264
logic [7:0] tm;
262265
logic ent_hdr_0, ent_hdr_1, ent_hdr_2, ent_hdr_3, ent_hdr_4, ent_hdr_5, ent_hdr_6, ent_hdr_7;
263-
logic set_newda;
264-
logic [6:0] newda;
265266
logic get_acccr;
266267
logic set_brgtgt;
267268
logic get_mxds;
@@ -524,8 +525,9 @@ module controller_standby_i3c
524525
.set_dasa_virtual_device_o (set_dasa_virtual_device_o),
525526
.rst_action_o,
526527
.rst_action_valid_o,
527-
.set_newda_o (set_newda),
528-
.newda_o (newda),
528+
.set_newda_o,
529+
.set_newda_virtual_device_o,
530+
.newda_o,
529531
.get_mwl_i (get_mwl_i),
530532
.get_mrl_i (get_mrl_i),
531533
.get_pid_i (pid_i),

src/hci/hci.sv

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,9 @@ module hci
143143
input logic set_dasa_valid_i,
144144
input logic set_dasa_virtual_device_i,
145145
input logic rstdaa_i,
146+
input logic [6:0] newda_i,
147+
input logic set_newda_i,
148+
input logic set_newda_virtual_device_i,
146149

147150
input logic [7:0] rst_action_i,
148151
input logic rst_action_valid_i
@@ -307,15 +310,37 @@ module hci
307310

308311
always_comb begin : wire_address_setting
309312
// Target address
310-
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_DEVICE_ADDR.DYNAMIC_ADDR_VALID.we = (set_dasa_valid_i | rstdaa_i) && ~(set_dasa_virtual_device_i);
311-
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_DEVICE_ADDR.DYNAMIC_ADDR_VALID.next = (rstdaa_i && ~(set_dasa_virtual_device_i)) ? '0: set_dasa_valid_i;
312-
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_DEVICE_ADDR.DYNAMIC_ADDR.we = (set_dasa_valid_i | rstdaa_i) && ~(set_dasa_virtual_device_i);
313-
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_DEVICE_ADDR.DYNAMIC_ADDR.next = (rstdaa_i && ~(set_dasa_virtual_device_i)) ? 1'b0 : set_dasa_i;
314-
// Virtual device address
315-
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR.VIRT_DYNAMIC_ADDR_VALID.we = (set_dasa_valid_i | rstdaa_i) && (set_dasa_virtual_device_i);
316-
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR.VIRT_DYNAMIC_ADDR_VALID.next = rstdaa_i && set_dasa_virtual_device_i ? '0: set_dasa_valid_i;
317-
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR.VIRT_DYNAMIC_ADDR.we = (set_dasa_valid_i | rstdaa_i) && (set_dasa_virtual_device_i);
318-
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR.VIRT_DYNAMIC_ADDR.next = rstdaa_i && set_dasa_virtual_device_i ? 1'b0 : set_dasa_i;
313+
if (set_dasa_valid_i | rstdaa_i) begin
314+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_DEVICE_ADDR.DYNAMIC_ADDR_VALID.we = (set_dasa_valid_i | rstdaa_i) && ~(set_dasa_virtual_device_i);
315+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_DEVICE_ADDR.DYNAMIC_ADDR_VALID.next = (rstdaa_i && ~(set_dasa_virtual_device_i)) ? '0: set_dasa_valid_i;
316+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_DEVICE_ADDR.DYNAMIC_ADDR.we = (set_dasa_valid_i | rstdaa_i) && ~(set_dasa_virtual_device_i);
317+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_DEVICE_ADDR.DYNAMIC_ADDR.next = (rstdaa_i && ~(set_dasa_virtual_device_i)) ? 1'b0 : set_dasa_i;
318+
// Virtual device address
319+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR.VIRT_DYNAMIC_ADDR_VALID.we = (set_dasa_valid_i | rstdaa_i) && (set_dasa_virtual_device_i);
320+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR.VIRT_DYNAMIC_ADDR_VALID.next = rstdaa_i && set_dasa_virtual_device_i ? '0: set_dasa_valid_i;
321+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR.VIRT_DYNAMIC_ADDR.we = (set_dasa_valid_i | rstdaa_i) && (set_dasa_virtual_device_i);
322+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR.VIRT_DYNAMIC_ADDR.next = rstdaa_i && set_dasa_virtual_device_i ? 1'b0 : set_dasa_i;
323+
end else if (set_newda_i | set_newda_virtual_device_i) begin
324+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_DEVICE_ADDR.DYNAMIC_ADDR_VALID.we = set_newda_i;
325+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_DEVICE_ADDR.DYNAMIC_ADDR_VALID.next = 1'b1;
326+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_DEVICE_ADDR.DYNAMIC_ADDR.we = set_newda_i;
327+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_DEVICE_ADDR.DYNAMIC_ADDR.next = newda_i;
328+
// Virtual device address
329+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR.VIRT_DYNAMIC_ADDR_VALID.we = set_newda_virtual_device_i;
330+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR.VIRT_DYNAMIC_ADDR_VALID.next = 1'b1;
331+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR.VIRT_DYNAMIC_ADDR.we = set_newda_virtual_device_i;
332+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR.VIRT_DYNAMIC_ADDR.next = newda_i;
333+
end else begin
334+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_DEVICE_ADDR.DYNAMIC_ADDR_VALID.we = 1'b0;
335+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_DEVICE_ADDR.DYNAMIC_ADDR_VALID.next = '0;
336+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_DEVICE_ADDR.DYNAMIC_ADDR.we = 1'b0;
337+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_DEVICE_ADDR.DYNAMIC_ADDR.next = '0;
338+
// Virtual device address
339+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR.VIRT_DYNAMIC_ADDR_VALID.we = 1'b0;
340+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR.VIRT_DYNAMIC_ADDR_VALID.next = '0;
341+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR.VIRT_DYNAMIC_ADDR.we = 1'b0;
342+
hwif_in.I3C_EC.StdbyCtrlMode.STBY_CR_VIRT_DEVICE_ADDR.VIRT_DYNAMIC_ADDR.next = '0;
343+
end
319344
end
320345

321346
I3CCSR i3c_csr (

src/i3c.sv

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,9 @@ module i3c
514514
logic [6:0] set_dasa;
515515
logic set_dasa_valid;
516516
logic set_dasa_virtual_device;
517+
logic set_newda;
518+
logic set_newda_virtual_device;
519+
logic [6:0] newda;
517520
logic rstdaa;
518521

519522
logic enec_ibi;
@@ -721,6 +724,9 @@ module i3c
721724
.set_dasa_valid_o(set_dasa_valid),
722725
.set_dasa_virtual_device_o(set_dasa_virtual_device),
723726
.rstdaa_o(rstdaa),
727+
.set_newda_o(set_newda),
728+
.set_newda_virtual_device_o(set_newda_virtual_device),
729+
.newda_o(newda),
724730

725731
.rst_action_o(rst_action),
726732
.rst_action_valid_o(rst_action_valid),
@@ -861,6 +867,9 @@ module i3c
861867
.set_dasa_valid_i(set_dasa_valid),
862868
.set_dasa_virtual_device_i(set_dasa_virtual_device),
863869
.rstdaa_i(rstdaa),
870+
.set_newda_i(set_newda),
871+
.set_newda_virtual_device_i(set_newda_virtual_device),
872+
.newda_i(newda),
864873

865874
.rst_action_i(rst_action),
866875
.rst_action_valid_i(rst_action_valid)

0 commit comments

Comments
 (0)