diff options
Diffstat (limited to 'mpm/python/usrp_mpm/chips/lmk04828.py')
-rw-r--r-- | mpm/python/usrp_mpm/chips/lmk04828.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/mpm/python/usrp_mpm/chips/lmk04828.py b/mpm/python/usrp_mpm/chips/lmk04828.py new file mode 100644 index 000000000..3b9a35bae --- /dev/null +++ b/mpm/python/usrp_mpm/chips/lmk04828.py @@ -0,0 +1,63 @@ +# +# 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 <http://www.gnu.org/licenses/>. +# +""" +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 + |