Kasli-SoC: Get MAC address from EEPROM (#90)
Co-authored-by: mwojcik <mw@m-labs.hk> Co-committed-by: mwojcik <mw@m-labs.hk>
This commit is contained in:
parent
3e95df1f64
commit
43e0440911
|
@ -14,7 +14,7 @@ members = [
|
|||
panic = "abort"
|
||||
debug = true
|
||||
codegen-units = 1
|
||||
opt-level = 'z'
|
||||
opt-level = 's'
|
||||
lto = true
|
||||
debug-assertions = false
|
||||
overflow-checks = false
|
||||
|
|
|
@ -30,7 +30,19 @@ impl fmt::Display for NetAddresses {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn get_adresses(cfg: &Config) -> NetAddresses {
|
||||
#[cfg(feature = "target_kasli_soc")]
|
||||
fn get_address_from_eeprom() -> EthernetAddress {
|
||||
use libboard_zynq::i2c::{I2c, eeprom};
|
||||
|
||||
let mut i2c = I2c::i2c0();
|
||||
i2c.init().unwrap();
|
||||
let mut eeprom = eeprom::EEPROM::new(&mut i2c, 16);
|
||||
let address = eeprom.read_eui48().unwrap_or([0x02, 0x00, 0x00, 0x00, 0x00, 0x56]);
|
||||
|
||||
EthernetAddress(address)
|
||||
}
|
||||
|
||||
pub fn get_addresses(cfg: &Config) -> NetAddresses {
|
||||
#[cfg(feature = "target_zc706")]
|
||||
let mut hardware_addr = EthernetAddress([0x02, 0x00, 0x00, 0x00, 0x00, 0x52]);
|
||||
#[cfg(feature = "target_zc706")]
|
||||
|
@ -44,7 +56,7 @@ pub fn get_adresses(cfg: &Config) -> NetAddresses {
|
|||
#[cfg(feature = "target_redpitaya")]
|
||||
let mut ipv4_addr = IpAddress::v4(192, 168, 1, 55);
|
||||
#[cfg(feature = "target_kasli_soc")]
|
||||
let mut hardware_addr = EthernetAddress([0x02, 0x00, 0x00, 0x00, 0x00, 0x56]);
|
||||
let mut hardware_addr = get_address_from_eeprom();
|
||||
#[cfg(feature = "target_kasli_soc")]
|
||||
let mut ipv4_addr = IpAddress::v4(192, 168, 1, 56);
|
||||
|
||||
|
|
|
@ -316,7 +316,7 @@ pub fn netboot<File: Read + Seek>(
|
|||
runtime_max_len: usize,
|
||||
) {
|
||||
log::info!("Preparing network for netboot");
|
||||
let net_addresses = net_settings::get_adresses(&cfg);
|
||||
let net_addresses = net_settings::get_addresses(&cfg);
|
||||
log::info!("Network addresses: {}", net_addresses);
|
||||
let eth = Eth::eth0(net_addresses.hardware_addr.0.clone());
|
||||
let eth = eth.start_rx(8);
|
||||
|
|
Loading…
Reference in New Issue