aboutsummaryrefslogtreecommitdiffstats
path: root/mpm/python/usrp_mpm/chips/lmk04828.py
diff options
context:
space:
mode:
Diffstat (limited to 'mpm/python/usrp_mpm/chips/lmk04828.py')
-rw-r--r--mpm/python/usrp_mpm/chips/lmk04828.py63
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
+