xref: /freebsd/sys/arm/broadcom/bcm2835/bcm2835_spivar.h (revision 8ef8939fd4581572e17860d7089cc6e06fd0221f)
107897970SLuiz Otavio O Souza /*-
24d846d26SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
3af3dc4a7SPedro F. Giffuni  *
407897970SLuiz Otavio O Souza  * Copyright (c) 2012 Oleksandr Tymoshenko <gonzo@freebsd.org>
507897970SLuiz Otavio O Souza  * Copyright (c) 2013 Luiz Otavio O Souza <loos@freebsd.org>
607897970SLuiz Otavio O Souza  * All rights reserved.
707897970SLuiz Otavio O Souza  *
807897970SLuiz Otavio O Souza  * Redistribution and use in source and binary forms, with or without
907897970SLuiz Otavio O Souza  * modification, are permitted provided that the following conditions
1007897970SLuiz Otavio O Souza  * are met:
1107897970SLuiz Otavio O Souza  * 1. Redistributions of source code must retain the above copyright
1207897970SLuiz Otavio O Souza  *    notice, this list of conditions and the following disclaimer.
1307897970SLuiz Otavio O Souza  * 2. Redistributions in binary form must reproduce the above copyright
1407897970SLuiz Otavio O Souza  *    notice, this list of conditions and the following disclaimer in the
1507897970SLuiz Otavio O Souza  *    documentation and/or other materials provided with the distribution.
1607897970SLuiz Otavio O Souza  *
1707897970SLuiz Otavio O Souza  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1807897970SLuiz Otavio O Souza  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1907897970SLuiz Otavio O Souza  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2007897970SLuiz Otavio O Souza  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
2107897970SLuiz Otavio O Souza  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2207897970SLuiz Otavio O Souza  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2307897970SLuiz Otavio O Souza  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2407897970SLuiz Otavio O Souza  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2507897970SLuiz Otavio O Souza  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2607897970SLuiz Otavio O Souza  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2707897970SLuiz Otavio O Souza  * SUCH DAMAGE.
2807897970SLuiz Otavio O Souza  */
2907897970SLuiz Otavio O Souza 
3007897970SLuiz Otavio O Souza #ifndef	_BCM2835_SPIVAR_H_
3107897970SLuiz Otavio O Souza #define	_BCM2835_SPIVAR_H_
3207897970SLuiz Otavio O Souza 
3307897970SLuiz Otavio O Souza struct bcm_spi_softc {
3407897970SLuiz Otavio O Souza 	device_t		sc_dev;
3507897970SLuiz Otavio O Souza 	struct mtx		sc_mtx;
3607897970SLuiz Otavio O Souza 	struct resource *	sc_mem_res;
3707897970SLuiz Otavio O Souza 	struct resource *	sc_irq_res;
3807897970SLuiz Otavio O Souza 	struct spi_command	*sc_cmd;
39*8ef8939fSJustin Hibbits 	struct thread		*sc_thread;
4007897970SLuiz Otavio O Souza 	bus_space_tag_t		sc_bst;
4107897970SLuiz Otavio O Souza 	bus_space_handle_t	sc_bsh;
4207897970SLuiz Otavio O Souza 	uint32_t		sc_len;
4307897970SLuiz Otavio O Souza 	uint32_t		sc_read;
4407897970SLuiz Otavio O Souza 	uint32_t		sc_flags;
4507897970SLuiz Otavio O Souza 	uint32_t		sc_written;
4607897970SLuiz Otavio O Souza 	void *			sc_intrhand;
4707897970SLuiz Otavio O Souza };
4807897970SLuiz Otavio O Souza 
4907897970SLuiz Otavio O Souza #define	BCM_SPI_BUSY		0x1
50*8ef8939fSJustin Hibbits #define	BCM_SPI_KEEP_CS		0x2
5107897970SLuiz Otavio O Souza 
5207897970SLuiz Otavio O Souza #define BCM_SPI_WRITE(_sc, _off, _val)		\
5307897970SLuiz Otavio O Souza     bus_space_write_4(_sc->sc_bst, _sc->sc_bsh, _off, _val)
5407897970SLuiz Otavio O Souza #define BCM_SPI_READ(_sc, _off)			\
5507897970SLuiz Otavio O Souza     bus_space_read_4(_sc->sc_bst, _sc->sc_bsh, _off)
5607897970SLuiz Otavio O Souza 
5707897970SLuiz Otavio O Souza #define BCM_SPI_LOCK(_sc)			\
5807897970SLuiz Otavio O Souza     mtx_lock(&(_sc)->sc_mtx)
5907897970SLuiz Otavio O Souza #define BCM_SPI_UNLOCK(_sc)			\
6007897970SLuiz Otavio O Souza     mtx_unlock(&(_sc)->sc_mtx)
6107897970SLuiz Otavio O Souza 
6207897970SLuiz Otavio O Souza #endif	/* _BCM2835_SPIVAR_H_ */
63