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