aboutsummaryrefslogtreecommitdiffstats
path: root/mpm/python/usrp_mpm/chips
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2017-05-12 16:55:54 -0700
committerMartin Braun <martin.braun@ettus.com>2017-12-22 15:03:53 -0800
commit5a4a78de6104333307da68b6a0dfc516291ede69 (patch)
treea8fad6471d5df0175dd55e4970a018a8cb2d09b4 /mpm/python/usrp_mpm/chips
parent9dee6175da45440997c8ed82fbf40f8f380dc4a7 (diff)
downloaduhd-5a4a78de6104333307da68b6a0dfc516291ede69.tar.gz
uhd-5a4a78de6104333307da68b6a0dfc516291ede69.tar.bz2
uhd-5a4a78de6104333307da68b6a0dfc516291ede69.zip
mpm: Factored out common LMK04828 code
Diffstat (limited to 'mpm/python/usrp_mpm/chips')
-rw-r--r--mpm/python/usrp_mpm/chips/CMakeLists.txt25
-rw-r--r--mpm/python/usrp_mpm/chips/__init__.py21
-rw-r--r--mpm/python/usrp_mpm/chips/lmk04828.py63
3 files changed, 109 insertions, 0 deletions
diff --git a/mpm/python/usrp_mpm/chips/CMakeLists.txt b/mpm/python/usrp_mpm/chips/CMakeLists.txt
new file mode 100644
index 000000000..438b76038
--- /dev/null
+++ b/mpm/python/usrp_mpm/chips/CMakeLists.txt
@@ -0,0 +1,25 @@
+#
+# 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/>.
+#
+
+SET(USRP_MPM_FILES ${USRP_MPM_FILES})
+SET(USRP_MPM_CHIP_FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py
+ ${CMAKE_CURRENT_SOURCE_DIR}/lmk04828.py
+)
+LIST(APPEND USRP_MPM_FILES ${USRP_MPM_CHIP_FILES})
+SET(USRP_MPM_FILES ${USRP_MPM_FILES} PARENT_SCOPE)
+
diff --git a/mpm/python/usrp_mpm/chips/__init__.py b/mpm/python/usrp_mpm/chips/__init__.py
new file mode 100644
index 000000000..ea4a4cff6
--- /dev/null
+++ b/mpm/python/usrp_mpm/chips/__init__.py
@@ -0,0 +1,21 @@
+#
+# 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/>.
+#
+"""
+Chips submodule
+"""
+
+from .lmk04828 import LMK04828
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
+