diff options
Diffstat (limited to 'host/lib/usrp/e100/mb_eeprom.cpp')
-rw-r--r-- | host/lib/usrp/e100/mb_eeprom.cpp | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/host/lib/usrp/e100/mb_eeprom.cpp b/host/lib/usrp/e100/mb_eeprom.cpp deleted file mode 100644 index 926688d41..000000000 --- a/host/lib/usrp/e100/mb_eeprom.cpp +++ /dev/null @@ -1,103 +0,0 @@ -// -// Copyright 2017 Ettus Research (National Instruments Corp.) -// -// SPDX-License-Identifier: GPL-3.0 -// - -#include "e100_impl.hpp" -#include "eeprom_utils.hpp" -#include <uhd/usrp/mboard_eeprom.hpp> - -namespace { - - const uint8_t E100_EEPROM_ADDR = 0x51; - - struct e100_eeprom_map{ - uint16_t vendor; - uint16_t device; - unsigned char revision; - unsigned char content; - unsigned char model[8]; - unsigned char env_var[16]; - unsigned char env_setting[64]; - unsigned char serial[10]; - unsigned char name[NAME_MAX_LEN]; - }; - - template <typename T> static const byte_vector_t to_bytes(const T &item){ - return byte_vector_t( - reinterpret_cast<const byte_vector_t::value_type *>(&item), - reinterpret_cast<const byte_vector_t::value_type *>(&item)+sizeof(item) - ); - } -} - -using namespace uhd; -using uhd::usrp::mboard_eeprom_t; - -mboard_eeprom_t get_mb_eeprom(uhd::i2c_iface::sptr i2c) -{ - auto &iface = i2c; - uhd::usrp::mboard_eeprom_t mb_eeprom; - -#define sizeof_member(struct_name, member_name) \ - sizeof(reinterpret_cast<struct_name*>(0)->member_name) - - const size_t num_bytes = offsetof(e100_eeprom_map, model); - byte_vector_t map_bytes = iface->read_eeprom(E100_EEPROM_ADDR, 0, num_bytes); - e100_eeprom_map map; std::memcpy(&map, &map_bytes[0], map_bytes.size()); - - mb_eeprom["vendor"] = std::to_string(uhd::ntohx(map.vendor)); - mb_eeprom["device"] = std::to_string(uhd::ntohx(map.device)); - mb_eeprom["revision"] = std::to_string(unsigned(map.revision)); - mb_eeprom["content"] = std::to_string(unsigned(map.content)); - - #define load_e100_string_xx(key) mb_eeprom[#key] = bytes_to_string(iface->read_eeprom( \ - E100_EEPROM_ADDR, offsetof(e100_eeprom_map, key), sizeof_member(e100_eeprom_map, key) \ - )); - - load_e100_string_xx(model); - load_e100_string_xx(env_var); - load_e100_string_xx(env_setting); - load_e100_string_xx(serial); - load_e100_string_xx(name); - - return mb_eeprom; -} - - -void e100_impl::set_mb_eeprom(const mboard_eeprom_t &mb_eeprom) -{ - auto &iface = _dev_i2c_iface; - - if (mb_eeprom.has_key("vendor")) iface->write_eeprom( - E100_EEPROM_ADDR, offsetof(e100_eeprom_map, vendor), - to_bytes(uhd::htonx(boost::lexical_cast<uint16_t>(mb_eeprom["vendor"]))) - ); - - if (mb_eeprom.has_key("device")) iface->write_eeprom( - E100_EEPROM_ADDR, offsetof(e100_eeprom_map, device), - to_bytes(uhd::htonx(boost::lexical_cast<uint16_t>(mb_eeprom["device"]))) - ); - - if (mb_eeprom.has_key("revision")) iface->write_eeprom( - E100_EEPROM_ADDR, offsetof(e100_eeprom_map, revision), - byte_vector_t(1, boost::lexical_cast<unsigned>(mb_eeprom["revision"])) - ); - - if (mb_eeprom.has_key("content")) iface->write_eeprom( - E100_EEPROM_ADDR, offsetof(e100_eeprom_map, content), - byte_vector_t(1, boost::lexical_cast<unsigned>(mb_eeprom["content"])) - ); - - #define store_e100_string_xx(key) if (mb_eeprom.has_key(#key)) iface->write_eeprom( \ - E100_EEPROM_ADDR, offsetof(e100_eeprom_map, key), \ - string_to_bytes(mb_eeprom[#key], sizeof_member(e100_eeprom_map, key)) \ - ); - - store_e100_string_xx(model); - store_e100_string_xx(env_var); - store_e100_string_xx(env_setting); - store_e100_string_xx(serial); - store_e100_string_xx(name); -} |