@@ -801,6 +801,10 @@ module I3CCSR (
801
801
logic [7:0] next;
802
802
logic load_next;
803
803
} VENDOR_SPECIFIC_STR_LENGTH;
804
+ struct packed{
805
+ logic [15:0] next;
806
+ logic load_next;
807
+ } DATA;
804
808
} DEVICE_ID_0;
805
809
struct packed{
806
810
struct packed{
@@ -2094,6 +2098,9 @@ module I3CCSR (
2094
2098
struct packed{
2095
2099
logic [7:0] value;
2096
2100
} VENDOR_SPECIFIC_STR_LENGTH;
2101
+ struct packed{
2102
+ logic [15:0] value;
2103
+ } DATA;
2097
2104
} DEVICE_ID_0;
2098
2105
struct packed{
2099
2106
struct packed{
@@ -4696,8 +4703,8 @@ module I3CCSR (
4696
4703
assign hwif_out.PIOControl.PIO_CONTROL.ABORT.value = field_storage.PIOControl.PIO_CONTROL.ABORT.value;
4697
4704
assign hwif_out.I3C_EC.SecFwRecoveryIf.EXTCAP_HEADER.CAP_ID.value = 8'hc0;
4698
4705
assign hwif_out.I3C_EC.SecFwRecoveryIf.EXTCAP_HEADER.CAP_LENGTH.value = 16'h20;
4699
- assign hwif_out.I3C_EC.SecFwRecoveryIf.PROT_CAP_0.REC_MAGIC_STRING_0.value = 32'h4f435020 ;
4700
- assign hwif_out.I3C_EC.SecFwRecoveryIf.PROT_CAP_1.REC_MAGIC_STRING_1.value = 32'h52454356 ;
4706
+ assign hwif_out.I3C_EC.SecFwRecoveryIf.PROT_CAP_0.REC_MAGIC_STRING_0.value = 32'h2050434f ;
4707
+ assign hwif_out.I3C_EC.SecFwRecoveryIf.PROT_CAP_1.REC_MAGIC_STRING_1.value = 32'h56434552 ;
4701
4708
// Field: I3CCSR.I3C_EC.SecFwRecoveryIf.PROT_CAP_2.REC_PROT_VERSION
4702
4709
always_comb begin
4703
4710
automatic logic [15:0] next_c;
@@ -4866,6 +4873,30 @@ module I3CCSR (
4866
4873
end
4867
4874
end
4868
4875
assign hwif_out.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0.VENDOR_SPECIFIC_STR_LENGTH.value = field_storage.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0.VENDOR_SPECIFIC_STR_LENGTH.value;
4876
+ // Field: I3CCSR.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0.DATA
4877
+ always_comb begin
4878
+ automatic logic [15:0] next_c;
4879
+ automatic logic load_next_c;
4880
+ next_c = field_storage.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0.DATA.value;
4881
+ load_next_c = '0;
4882
+ if(decoded_reg_strb.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0 && decoded_req_is_wr) begin // SW write
4883
+ next_c = (field_storage.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0.DATA.value & ~decoded_wr_biten[31:16]) | (decoded_wr_data[31:16] & decoded_wr_biten[31:16]);
4884
+ load_next_c = '1;
4885
+ end else if(hwif_in.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0.DATA.we) begin // HW Write - we
4886
+ next_c = hwif_in.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0.DATA.next;
4887
+ load_next_c = '1;
4888
+ end
4889
+ field_combo.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0.DATA.next = next_c;
4890
+ field_combo.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0.DATA.load_next = load_next_c;
4891
+ end
4892
+ always_ff @(posedge clk or negedge hwif_in.rst_ni) begin
4893
+ if(~hwif_in.rst_ni) begin
4894
+ field_storage.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0.DATA.value <= 16'h0;
4895
+ end else if(field_combo.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0.DATA.load_next) begin
4896
+ field_storage.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0.DATA.value <= field_combo.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0.DATA.next;
4897
+ end
4898
+ end
4899
+ assign hwif_out.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0.DATA.value = field_storage.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0.DATA.value;
4869
4900
// Field: I3CCSR.I3C_EC.SecFwRecoveryIf.DEVICE_ID_1.DATA
4870
4901
always_comb begin
4871
4902
automatic logic [31:0] next_c;
@@ -9798,8 +9829,8 @@ module I3CCSR (
9798
9829
assign readback_array[31][7:0] = (decoded_reg_strb.I3C_EC.SecFwRecoveryIf.EXTCAP_HEADER && !decoded_req_is_wr) ? 8'hc0 : '0;
9799
9830
assign readback_array[31][23:8] = (decoded_reg_strb.I3C_EC.SecFwRecoveryIf.EXTCAP_HEADER && !decoded_req_is_wr) ? 16'h20 : '0;
9800
9831
assign readback_array[31][31:24] = '0;
9801
- assign readback_array[32][31:0] = (decoded_reg_strb.I3C_EC.SecFwRecoveryIf.PROT_CAP_0 && !decoded_req_is_wr) ? 32'h4f435020 : '0;
9802
- assign readback_array[33][31:0] = (decoded_reg_strb.I3C_EC.SecFwRecoveryIf.PROT_CAP_1 && !decoded_req_is_wr) ? 32'h52454356 : '0;
9832
+ assign readback_array[32][31:0] = (decoded_reg_strb.I3C_EC.SecFwRecoveryIf.PROT_CAP_0 && !decoded_req_is_wr) ? 32'h2050434f : '0;
9833
+ assign readback_array[33][31:0] = (decoded_reg_strb.I3C_EC.SecFwRecoveryIf.PROT_CAP_1 && !decoded_req_is_wr) ? 32'h56434552 : '0;
9803
9834
assign readback_array[34][15:0] = (decoded_reg_strb.I3C_EC.SecFwRecoveryIf.PROT_CAP_2 && !decoded_req_is_wr) ? field_storage.I3C_EC.SecFwRecoveryIf.PROT_CAP_2.REC_PROT_VERSION.value : '0;
9804
9835
assign readback_array[34][31:16] = (decoded_reg_strb.I3C_EC.SecFwRecoveryIf.PROT_CAP_2 && !decoded_req_is_wr) ? field_storage.I3C_EC.SecFwRecoveryIf.PROT_CAP_2.AGENT_CAPS.value : '0;
9805
9836
assign readback_array[35][7:0] = (decoded_reg_strb.I3C_EC.SecFwRecoveryIf.PROT_CAP_3 && !decoded_req_is_wr) ? field_storage.I3C_EC.SecFwRecoveryIf.PROT_CAP_3.NUM_OF_CMS_REGIONS.value : '0;
@@ -9808,7 +9839,7 @@ module I3CCSR (
9808
9839
assign readback_array[35][31:24] = '0;
9809
9840
assign readback_array[36][7:0] = (decoded_reg_strb.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0 && !decoded_req_is_wr) ? field_storage.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0.DESC_TYPE.value : '0;
9810
9841
assign readback_array[36][15:8] = (decoded_reg_strb.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0 && !decoded_req_is_wr) ? field_storage.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0.VENDOR_SPECIFIC_STR_LENGTH.value : '0;
9811
- assign readback_array[36][31:16] = '0;
9842
+ assign readback_array[36][31:16] = (decoded_reg_strb.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0 && !decoded_req_is_wr) ? field_storage.I3C_EC.SecFwRecoveryIf.DEVICE_ID_0.DATA.value : '0;
9812
9843
assign readback_array[37][31:0] = (decoded_reg_strb.I3C_EC.SecFwRecoveryIf.DEVICE_ID_1 && !decoded_req_is_wr) ? field_storage.I3C_EC.SecFwRecoveryIf.DEVICE_ID_1.DATA.value : '0;
9813
9844
assign readback_array[38][31:0] = (decoded_reg_strb.I3C_EC.SecFwRecoveryIf.DEVICE_ID_2 && !decoded_req_is_wr) ? field_storage.I3C_EC.SecFwRecoveryIf.DEVICE_ID_2.DATA.value : '0;
9814
9845
assign readback_array[39][31:0] = (decoded_reg_strb.I3C_EC.SecFwRecoveryIf.DEVICE_ID_3 && !decoded_req_is_wr) ? field_storage.I3C_EC.SecFwRecoveryIf.DEVICE_ID_3.DATA.value : '0;
0 commit comments