Skip to content

Commit b93097f

Browse files
committed
Clean up
1 parent 617485e commit b93097f

File tree

2 files changed

+31
-57
lines changed

2 files changed

+31
-57
lines changed

src/dap.rs

Lines changed: 20 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
use crate::{
2-
jtag::{
3-
self, TransferInfo, TransferResult, JTAG_IR_ABORT, JTAG_IR_APACC, JTAG_IR_DPACC,
4-
JTAG_IR_IDCODE,
5-
},
2+
jtag::{self, TransferResult, JTAG_IR_ABORT, JTAG_IR_APACC, JTAG_IR_DPACC, JTAG_IR_IDCODE},
63
swd::{self, APnDP, RnW},
74
swj, swo, usb,
85
};
@@ -814,18 +811,10 @@ where
814811
return;
815812
}
816813

817-
const DP_RDBUFF: u8 = 0x0C;
818-
let read_rdbuff = TransferInfo {
819-
r_nw: RnW::R,
820-
..TransferInfo::from(DP_RDBUFF)
821-
};
822-
823814
let mut post_read = false;
824815
let mut ir = 0;
825816
let mut response_value = TransferResult::Fault;
826-
let retry = transfer_config.wait_retries;
827817
let mut response_count = 0;
828-
let wait_retries = transfer_config.wait_retries;
829818

830819
while ntransfers > 0 {
831820
debug!("JTAG transfer {}/{}", response_count + 1, transfer_count);
@@ -843,13 +832,8 @@ where
843832
if ir == request_ir && !request_value.match_value {
844833
// Read previous data and post next read
845834

846-
response_value = transfer_with_retry(
847-
jtag,
848-
request_value,
849-
transfer_config,
850-
0,
851-
wait_retries,
852-
);
835+
response_value =
836+
transfer_with_retry(jtag, request_value, transfer_config, 0);
853837
} else {
854838
// Select JTAG chain
855839
if ir != JTAG_IR_DPACC {
@@ -860,10 +844,9 @@ where
860844
// Read previous data
861845
response_value = transfer_with_retry(
862846
jtag,
863-
read_rdbuff,
847+
jtag::TransferInfo::RDBUFF,
864848
transfer_config,
865849
0,
866-
wait_retries,
867850
);
868851
post_read = false;
869852
}
@@ -891,19 +874,13 @@ where
891874
jtag.shift_ir(ir);
892875
}
893876
// Post DP/AP read
894-
response_value =
895-
transfer_with_retry(jtag, request_value, transfer_config, 0, wait_retries);
877+
response_value = transfer_with_retry(jtag, request_value, transfer_config, 0);
896878
if !matches!(response_value, TransferResult::Ok(_)) {
897879
break;
898880
}
899881
loop {
900-
response_value = transfer_with_retry(
901-
jtag,
902-
request_value,
903-
transfer_config,
904-
0,
905-
wait_retries,
906-
);
882+
response_value =
883+
transfer_with_retry(jtag, request_value, transfer_config, 0);
907884
match response_value {
908885
TransferResult::Ok(data)
909886
if (data & transfer_config.match_mask) != match_value => {}
@@ -933,13 +910,8 @@ where
933910
jtag.shift_ir(ir);
934911
}
935912
// Post DP/AP read
936-
response_value = transfer_with_retry(
937-
jtag,
938-
request_value,
939-
transfer_config,
940-
0,
941-
wait_retries,
942-
);
913+
response_value =
914+
transfer_with_retry(jtag, request_value, transfer_config, 0);
943915
if !matches!(response_value, TransferResult::Ok(_)) {
944916
break;
945917
}
@@ -960,7 +932,7 @@ where
960932
}
961933
// Read previous data
962934
response_value =
963-
transfer_with_retry(jtag, read_rdbuff, transfer_config, 0, wait_retries);
935+
transfer_with_retry(jtag, jtag::TransferInfo::RDBUFF, transfer_config, 0);
964936

965937
if let TransferResult::Ok(data) = response_value {
966938
// Store previous data
@@ -984,7 +956,7 @@ where
984956
}
985957

986958
response_value =
987-
transfer_with_retry(jtag, request_value, transfer_config, data, retry);
959+
transfer_with_retry(jtag, request_value, transfer_config, data);
988960
if !matches!(response_value, TransferResult::Ok(_)) {
989961
break;
990962
}
@@ -1000,7 +972,7 @@ where
1000972
while ntransfers > 0 {
1001973
ntransfers -= 1;
1002974
// Process canceled requests
1003-
let request_value = TransferInfo::from(req.next_u8());
975+
let request_value = jtag::TransferInfo::from(req.next_u8());
1004976
if request_value.r_nw == RnW::R {
1005977
// Read register
1006978
if request_value.match_value {
@@ -1021,7 +993,7 @@ where
1021993

1022994
// Check last write, or read previous read's result.
1023995
response_value =
1024-
transfer_with_retry(jtag, read_rdbuff, transfer_config, 0, wait_retries);
996+
transfer_with_retry(jtag, jtag::TransferInfo::RDBUFF, transfer_config, 0);
1025997

1026998
if post_read {
1027999
// Read previous data
@@ -1129,17 +1101,10 @@ where
11291101
mut req: Request,
11301102
resp: &mut ResponseWriter,
11311103
) {
1132-
const DP_RDBUFF: u8 = 0x0C;
1133-
let read_rdbuff = TransferInfo {
1134-
r_nw: RnW::R,
1135-
..TransferInfo::from(DP_RDBUFF)
1136-
};
1137-
let retry = transfer_config.wait_retries;
1138-
11391104
let idx = req.next_u8();
11401105
let request_count = req.next_u16();
11411106
let mut nrequests = request_count;
1142-
let mut request_value = TransferInfo::from(req.next_u8());
1107+
let mut request_value = jtag::TransferInfo::from(req.next_u8());
11431108

11441109
let mut response_count = 0;
11451110
resp.skip(3);
@@ -1171,7 +1136,7 @@ where
11711136
if request_value.r_nw == RnW::R {
11721137
// Post read
11731138
debug!("Posting read for {} transfers", request_count);
1174-
response_value = transfer_with_retry(jtag, request_value, transfer_config, 0, retry);
1139+
response_value = transfer_with_retry(jtag, request_value, transfer_config, 0);
11751140
if matches!(response_value, TransferResult::Ok(_)) {
11761141
// Read register block
11771142
while nrequests > 0 {
@@ -1183,10 +1148,9 @@ where
11831148
if ir != JTAG_IR_APACC {
11841149
jtag.shift_ir(JTAG_IR_APACC);
11851150
}
1186-
request_value = read_rdbuff;
1151+
request_value = jtag::TransferInfo::RDBUFF;
11871152
}
1188-
response_value =
1189-
transfer_with_retry(jtag, request_value, transfer_config, 0, retry);
1153+
response_value = transfer_with_retry(jtag, request_value, transfer_config, 0);
11901154
if let TransferResult::Ok(data) = response_value {
11911155
// Store data
11921156
resp.write_u32(data);
@@ -1205,8 +1169,7 @@ where
12051169
// Load data
12061170
let data = req.next_u32();
12071171
// Write DP/AP register
1208-
response_value =
1209-
transfer_with_retry(jtag, request_value, transfer_config, data, retry);
1172+
response_value = transfer_with_retry(jtag, request_value, transfer_config, data);
12101173
if !matches!(response_value, TransferResult::Ok(_)) {
12111174
// goto end
12121175
break;
@@ -1219,7 +1182,7 @@ where
12191182
jtag.shift_ir(JTAG_IR_DPACC);
12201183
}
12211184
response_value =
1222-
transfer_with_retry(jtag, read_rdbuff, transfer_config, 0, retry);
1185+
transfer_with_retry(jtag, jtag::TransferInfo::RDBUFF, transfer_config, 0);
12231186
}
12241187
}
12251188
}
@@ -1278,8 +1241,8 @@ fn transfer_with_retry<DEPS>(
12781241
info: jtag::TransferInfo,
12791242
transfer_config: &TransferConfig,
12801243
data: u32,
1281-
mut retry: usize,
12821244
) -> jtag::TransferResult {
1245+
let mut retry = transfer_config.wait_retries;
12831246
let mut response_value;
12841247

12851248
if info.r_nw == RnW::W {

src/jtag.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,17 @@ pub(crate) struct TransferInfo {
5151
pub timestamp: bool,
5252
}
5353

54+
impl TransferInfo {
55+
pub(crate) const RDBUFF: Self = Self {
56+
r_nw: RnW::R,
57+
a2a3: DPRegister::RDBUFF,
58+
ap_ndp: APnDP::DP,
59+
match_value: false,
60+
match_mask: false,
61+
timestamp: false,
62+
};
63+
}
64+
5465
impl From<u8> for TransferInfo {
5566
fn from(byte: u8) -> Self {
5667
const DAP_TRANSFER_APNDP: u8 = 1 << 0;

0 commit comments

Comments
 (0)