# # Copyright 2017 Ettus Research (National Instruments) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # """ LMK04828 parent driver class """ from ..mpmlog import get_logger class LMK04828(object): """ Generic driver class for LMK04828 access. """ LMK_CHIP_ID = 6 def __init__(self, regs_iface, postfix=None): postfix = postfix or "" self.log = get_logger("LMK04828"+postfix) self.regs_iface = regs_iface assert hasattr(self.regs_iface, 'peek8') assert hasattr(self.regs_iface, 'poke8') self.poke8 = regs_iface.poke8 self.peek8 = regs_iface.peek8 def pokes8(self, addr_vals): """ Apply a series of pokes. pokes8((0,1),(0,2)) is the same as calling poke8(0,1), poke8(0,2). """ for addr, val in addr_vals: self.regs_iface.poke8(addr, val) def get_chip_id(self): """ Read back the chip ID """ chip_id = self.regs_iface.peek8(0x03) self.log.trace("Read chip ID: {}".format(chip_id)) return chip_id def verify_chip_id(self): """ Returns True if the chip ID matches what we expect, False otherwise. """ chip_id = self.get_chip_id() if chip_id != self.LMK_CHIP_ID: self.log.error("Wrong chip id 0x{:X}".format(chip_id)) return False return True