xref: /freebsd/sys/arm/broadcom/bcm2835/bcm2835_spivar.h (revision af3dc4a7ca7fdfbe1790f34b83024557a35d11f2)
107897970SLuiz Otavio O Souza /*-
2*af3dc4a7SPedro F. Giffuni  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3*af3dc4a7SPedro 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  * $FreeBSD$
3007897970SLuiz Otavio O Souza  */
3107897970SLuiz Otavio O Souza 
3207897970SLuiz Otavio O Souza #ifndef	_BCM2835_SPIVAR_H_
3307897970SLuiz Otavio O Souza #define	_BCM2835_SPIVAR_H_
3407897970SLuiz Otavio O Souza 
3507897970SLuiz Otavio O Souza /*
3607897970SLuiz Otavio O Souza  * Only the available pins are listed here.
3707897970SLuiz Otavio O Souza  * i.e. CS2 isn't available.
3807897970SLuiz Otavio O Souza  */
3907897970SLuiz Otavio O Souza uint32_t bcm_spi_pins[] = {
4007897970SLuiz Otavio O Souza 	7,	/* CS1 */
4107897970SLuiz Otavio O Souza 	8,	/* CS0 */
4207897970SLuiz Otavio O Souza 	9,	/* MISO */
4307897970SLuiz Otavio O Souza 	10,	/* MOSI */
4407897970SLuiz Otavio O Souza 	11	/* SCLK */
4507897970SLuiz Otavio O Souza };
4607897970SLuiz Otavio O Souza 
4707897970SLuiz Otavio O Souza struct bcm_spi_softc {
4807897970SLuiz Otavio O Souza 	device_t		sc_dev;
4907897970SLuiz Otavio O Souza 	struct mtx		sc_mtx;
5007897970SLuiz Otavio O Souza 	struct resource *	sc_mem_res;
5107897970SLuiz Otavio O Souza 	struct resource *	sc_irq_res;
5207897970SLuiz Otavio O Souza 	struct spi_command	*sc_cmd;
5307897970SLuiz Otavio O Souza 	bus_space_tag_t		sc_bst;
5407897970SLuiz Otavio O Souza 	bus_space_handle_t	sc_bsh;
5507897970SLuiz Otavio O Souza 	uint32_t		sc_len;
5607897970SLuiz Otavio O Souza 	uint32_t		sc_read;
5707897970SLuiz Otavio O Souza 	uint32_t		sc_flags;
5807897970SLuiz Otavio O Souza 	uint32_t		sc_written;
5907897970SLuiz Otavio O Souza 	void *			sc_intrhand;
6007897970SLuiz Otavio O Souza };
6107897970SLuiz Otavio O Souza 
6207897970SLuiz Otavio O Souza #define	BCM_SPI_BUSY		0x1
6307897970SLuiz Otavio O Souza 
6407897970SLuiz Otavio O Souza #define BCM_SPI_WRITE(_sc, _off, _val)		\
6507897970SLuiz Otavio O Souza     bus_space_write_4(_sc->sc_bst, _sc->sc_bsh, _off, _val)
6607897970SLuiz Otavio O Souza #define BCM_SPI_READ(_sc, _off)			\
6707897970SLuiz Otavio O Souza     bus_space_read_4(_sc->sc_bst, _sc->sc_bsh, _off)
6807897970SLuiz Otavio O Souza 
6907897970SLuiz Otavio O Souza #define BCM_SPI_LOCK(_sc)			\
7007897970SLuiz Otavio O Souza     mtx_lock(&(_sc)->sc_mtx)
7107897970SLuiz Otavio O Souza #define BCM_SPI_UNLOCK(_sc)			\
7207897970SLuiz Otavio O Souza     mtx_unlock(&(_sc)->sc_mtx)
7307897970SLuiz Otavio O Souza 
7407897970SLuiz Otavio O Souza #endif	/* _BCM2835_SPIVAR_H_ */
75