diff options
Diffstat (limited to 'embassy-net-enc28j60/src/lib.rs')
| -rw-r--r-- | embassy-net-enc28j60/src/lib.rs | 19 |
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 | ||
