1 /*- 2 * Copyright (c) 2016 Rubicon Communications, LLC (Netgate) 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 */ 26 27 #ifndef _TI_SPIVAR_H_ 28 #define _TI_SPIVAR_H_ 29 30 struct ti_spi_softc { 31 bus_space_tag_t sc_bst; 32 bus_space_handle_t sc_bsh; 33 device_t sc_dev; 34 int sc_numcs; 35 struct mtx sc_mtx; 36 struct resource *sc_mem_res; 37 struct resource *sc_irq_res; 38 struct { 39 int cs; 40 int fifolvl; 41 struct spi_command *cmd; 42 uint32_t len; 43 uint32_t read; 44 uint32_t written; 45 } xfer; 46 uint32_t sc_flags; 47 void *sc_intrhand; 48 #define sc_cs xfer.cs 49 #define sc_fifolvl xfer.fifolvl 50 #define sc_cmd xfer.cmd 51 #define sc_len xfer.len 52 #define sc_read xfer.read 53 #define sc_written xfer.written 54 }; 55 56 #define TI_SPI_BUSY 0x1 57 #define TI_SPI_DONE 0x2 58 59 #define TI_SPI_WRITE(_sc, _off, _val) \ 60 bus_space_write_4((_sc)->sc_bst, (_sc)->sc_bsh, (_off), (_val)) 61 #define TI_SPI_READ(_sc, _off) \ 62 bus_space_read_4((_sc)->sc_bst, (_sc)->sc_bsh, (_off)) 63 64 #define TI_SPI_LOCK(_sc) \ 65 mtx_lock(&(_sc)->sc_mtx) 66 #define TI_SPI_UNLOCK(_sc) \ 67 mtx_unlock(&(_sc)->sc_mtx) 68 69 #endif /* _TI_SPIVAR_H_ */ 70