diff options
| author | Martin Braun <martin.braun@ettus.com> | 2017-05-11 16:18:24 -0700 | 
|---|---|---|
| committer | Martin Braun <martin.braun@ettus.com> | 2017-12-22 15:03:53 -0800 | 
| commit | 8ebd4d8e5fbfdc612ad5dd8ec212c76bd8cf4ed6 (patch) | |
| tree | 2f87c6dd3e27aa454c0bbeb45a0da7e0de08ef74 /mpm/lib | |
| parent | b39dafa1eebf327a8bbd3959a3c54e85707b56aa (diff) | |
| download | uhd-8ebd4d8e5fbfdc612ad5dd8ec212c76bd8cf4ed6.tar.gz uhd-8ebd4d8e5fbfdc612ad5dd8ec212c76bd8cf4ed6.tar.bz2 uhd-8ebd4d8e5fbfdc612ad5dd8ec212c76bd8cf4ed6.zip  | |
mpm: spi: Added 16-bit access to SPI regs
Diffstat (limited to 'mpm/lib')
| -rw-r--r-- | mpm/lib/spi/spi_regs_iface.cpp | 31 | 
1 files changed, 30 insertions, 1 deletions
diff --git a/mpm/lib/spi/spi_regs_iface.cpp b/mpm/lib/spi/spi_regs_iface.cpp index ab9e089f8..40b376ee1 100644 --- a/mpm/lib/spi/spi_regs_iface.cpp +++ b/mpm/lib/spi/spi_regs_iface.cpp @@ -58,7 +58,7 @@ public:              throw mpm::runtime_error("SPI read returned too much data");          } -        return uint8_t(data & 0xFF); +        return data;      }      void poke8( @@ -74,6 +74,35 @@ public:          _spi_iface->transfer24_8(transaction);      } +    uint16_t peek16( +        const uint32_t addr +    ) { +        uint32_t transaction = 0 +            | (addr << _addr_shift) +            | _read_flags +        ; + +        uint32_t data = _spi_iface->transfer24_8(transaction); +        if ((data & 0xFFFF0000) != 0) { +            throw mpm::runtime_error("SPI read returned too much data"); +        } + +        return data; +    } + +    void poke16( +        const uint32_t addr, +        const uint16_t data +    ) { +        uint32_t transaction = 0 +            | _write_flags +            | (addr << _addr_shift) +            | (data << _data_shift) +        ; + +        _spi_iface->transfer24_8(transaction); +    } +  private:      mpm::spi::spi_iface::sptr _spi_iface;  | 
