diff --git a/artiq/firmware/libboard_misoc/i2c_eeprom.rs b/artiq/firmware/libboard_misoc/i2c_eeprom.rs index 0a15f7535..be06a55b4 100644 --- a/artiq/firmware/libboard_misoc/i2c_eeprom.rs +++ b/artiq/firmware/libboard_misoc/i2c_eeprom.rs @@ -13,7 +13,7 @@ pub struct EEPROM { } impl EEPROM { - pub fn kasli_eeprom() -> Self { + pub fn kasli1_eeprom() -> Self { EEPROM { busno: 0, /// Same port as Si5324 @@ -22,6 +22,15 @@ impl EEPROM { } } + pub fn kasli2_eeprom() -> Self { + EEPROM { + busno: 0, + /// SHARED I2C bus + port: 11, + address: 0xae, + } + } + fn select(&self) -> Result<(), &'static str> { let mask: u16 = 1 << self.port; i2c::pca9548_select(self.busno, I2C_SWITCH0, mask as u8)?; diff --git a/artiq/firmware/libboard_misoc/net_settings.rs b/artiq/firmware/libboard_misoc/net_settings.rs index f58eae13f..b553b5120 100644 --- a/artiq/firmware/libboard_misoc/net_settings.rs +++ b/artiq/firmware/libboard_misoc/net_settings.rs @@ -33,7 +33,10 @@ pub fn get_adresses() -> NetAddresses { _ => { #[cfg(soc_platform = "kasli")] { - let eeprom = i2c_eeprom::EEPROM::kasli_eeprom(); + #[cfg(any(hw_rev = "v1.0", hw_rev = "v1.1"))] + let eeprom = i2c_eeprom::EEPROM::kasli1_eeprom(); + #[cfg(hw_rev = "v2.0")] + let eeprom = i2c_eeprom::EEPROM::kasli2_eeprom(); hardware_addr = eeprom.read_eui48() .map(|addr_buf| EthernetAddress(addr_buf))