aboutsummaryrefslogtreecommitdiff
path: root/embassy-net-enc28j60/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'embassy-net-enc28j60/src/lib.rs')
-rw-r--r--embassy-net-enc28j60/src/lib.rs19
1 files changed, 12 insertions, 7 deletions
diff --git a/embassy-net-enc28j60/src/lib.rs b/embassy-net-enc28j60/src/lib.rs
index 4f129b6b2..d77dc2c5e 100644
--- a/embassy-net-enc28j60/src/lib.rs
+++ b/embassy-net-enc28j60/src/lib.rs
@@ -361,10 +361,16 @@ where
361 fn _read_control_register(&mut self, register: Register) -> u8 { 361 fn _read_control_register(&mut self, register: Register) -> u8 {
362 self.change_bank(register); 362 self.change_bank(register);
363 363
364 let mut buffer = [Instruction::RCR.opcode() | register.addr(), 0]; 364 if register.is_eth_register() {
365 self.spi.transfer_in_place(&mut buffer).unwrap(); 365 let mut buffer = [Instruction::RCR.opcode() | register.addr(), 0];
366 366 self.spi.transfer_in_place(&mut buffer).unwrap();
367 buffer[1] 367 buffer[1]
368 } else {
369 // MAC, MII regs need a dummy byte.
370 let mut buffer = [Instruction::RCR.opcode() | register.addr(), 0, 0];
371 self.spi.transfer_in_place(&mut buffer).unwrap();
372 buffer[2]
373 }
368 } 374 }
369 375
370 fn read_phy_register(&mut self, register: phy::Register) -> u16 { 376 fn read_phy_register(&mut self, register: phy::Register) -> u16 {
@@ -379,11 +385,10 @@ where
379 // wait until the read operation finishes 385 // wait until the read operation finishes
380 while self.read_control_register(bank3::Register::MISTAT) & 0b1 != 0 {} 386 while self.read_control_register(bank3::Register::MISTAT) & 0b1 != 0 {}
381 387
382 let h = self.read_control_register(bank2::Register::MIRDH);
383 let l = self.read_control_register(bank2::Register::MIRDL);
384
385 self.write_control_register(bank2::Register::MICMD, bank2::MICMD::default().miird(0).bits()); 388 self.write_control_register(bank2::Register::MICMD, bank2::MICMD::default().miird(0).bits());
386 389
390 let l = self.read_control_register(bank2::Register::MIRDL);
391 let h = self.read_control_register(bank2::Register::MIRDH);
387 (l as u16) | (h as u16) << 8 392 (l as u16) | (h as u16) << 8
388 } 393 }
389 394