Imported Upstream version 3.2.2
[debian/gnuradio] / usrp2 / firmware / lib / spi.h
1 /* -*- c -*- */
2 /*
3  * Copyright 2006,2007 Free Software Foundation, Inc.
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  */
18
19 #ifndef INCLUDED_SPI_H
20 #define INCLUDED_SPI_H
21
22 #include <memory_map.h>
23 #include <bool.h>
24
25 /*!
26  * \brief One time call to initialize SPI
27  */
28 void spi_init(void);
29
30 /*! 
31  * \brief Wait for last SPI transaction to complete.
32  * Unless you need to know it completed, it's not necessary to call this.
33  */
34 void spi_wait(void);
35
36 #define SPI_TXONLY false        // readback: no
37 #define SPI_TXRX   true         // readback: yes
38
39 /*
40  * Flags for spi_transact
41  */
42 #define SPIF_PUSH_RISE   0              // push tx data on rising edge of SCLK
43 #define SPIF_PUSH_FALL   SPI_CTRL_TXNEG // push tx data on falling edge of SCLK
44 #define SPIF_LATCH_RISE  0              // latch rx data on rising edge of SCLK
45 #define SPIF_LATCH_FALL  SPI_CTRL_RXNEG // latch rx data on falling edge of SCLK
46
47
48 uint32_t
49 spi_transact(bool readback, int slave, uint32_t data, int length, uint32_t flags);
50
51
52 #endif /* INCLUDED_SPI_H */