diff options
author | Martin Braun <martin.braun@ettus.com> | 2017-05-12 16:55:54 -0700 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2017-12-22 15:03:53 -0800 |
commit | 5a4a78de6104333307da68b6a0dfc516291ede69 (patch) | |
tree | a8fad6471d5df0175dd55e4970a018a8cb2d09b4 /mpm/python/usrp_mpm/chips | |
parent | 9dee6175da45440997c8ed82fbf40f8f380dc4a7 (diff) | |
download | uhd-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.txt | 25 | ||||
-rw-r--r-- | mpm/python/usrp_mpm/chips/__init__.py | 21 | ||||
-rw-r--r-- | mpm/python/usrp_mpm/chips/lmk04828.py | 63 |
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 + |