1*59200b4bSjakllsch /* $NetBSD: sun6i_spireg.h,v 1.1 2018/02/06 12:45:39 jakllsch Exp $ */ 2*59200b4bSjakllsch 3*59200b4bSjakllsch /* 4*59200b4bSjakllsch * Copyright (c) 2018 Jonathan A. Kollasch 5*59200b4bSjakllsch * All rights reserved. 6*59200b4bSjakllsch * 7*59200b4bSjakllsch * Redistribution and use in source and binary forms, with or without 8*59200b4bSjakllsch * modification, are permitted provided that the following conditions 9*59200b4bSjakllsch * are met: 10*59200b4bSjakllsch * 1. Redistributions of source code must retain the above copyright 11*59200b4bSjakllsch * notice, this list of conditions and the following disclaimer. 12*59200b4bSjakllsch * 2. Redistributions in binary form must reproduce the above copyright 13*59200b4bSjakllsch * notice, this list of conditions and the following disclaimer in the 14*59200b4bSjakllsch * documentation and/or other materials provided with the distribution. 15*59200b4bSjakllsch * 16*59200b4bSjakllsch * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17*59200b4bSjakllsch * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 18*59200b4bSjakllsch * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19*59200b4bSjakllsch * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 20*59200b4bSjakllsch * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 21*59200b4bSjakllsch * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 22*59200b4bSjakllsch * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 23*59200b4bSjakllsch * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24*59200b4bSjakllsch * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 25*59200b4bSjakllsch * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 26*59200b4bSjakllsch * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27*59200b4bSjakllsch */ 28*59200b4bSjakllsch 29*59200b4bSjakllsch #ifndef _SUNXI_SUN6I_SPIREG_H_ 30*59200b4bSjakllsch #define _SUNXI_SUN6I_SPIREG_H_ 31*59200b4bSjakllsch 32*59200b4bSjakllsch #include <sys/cdefs.h> 33*59200b4bSjakllsch 34*59200b4bSjakllsch #define SPI_GCR 0x004 35*59200b4bSjakllsch #define SPI_GCR_SRST __BIT(31) 36*59200b4bSjakllsch #define SPI_GCR_TP_EN __BIT(7) 37*59200b4bSjakllsch #define SPI_GCR_MODE __BIT(1) 38*59200b4bSjakllsch #define SPI_GCR_MODE_SLAVE (0) 39*59200b4bSjakllsch #define SPI_GCR_MODE_MASTER (1) 40*59200b4bSjakllsch #define SPI_GCR_EN __BIT(0) 41*59200b4bSjakllsch 42*59200b4bSjakllsch #define SPI_TCR 0x008 43*59200b4bSjakllsch #define SPI_TCR_XCH __BIT(31) 44*59200b4bSjakllsch #define SPI_TCR_SDDM __BIT(14) 45*59200b4bSjakllsch #define SPI_TCR_SDM __BIT(13) 46*59200b4bSjakllsch #define SPI_TCR_FBS __BIT(12) 47*59200b4bSjakllsch #define SPI_TCR_SDC __BIT(11) 48*59200b4bSjakllsch #define SPI_TCR_RPSM __BIT(10) 49*59200b4bSjakllsch #define SPI_TCR_DDB __BIT(9) 50*59200b4bSjakllsch #define SPI_TCR_DHB __BIT(8) 51*59200b4bSjakllsch #define SPI_TCR_SS_LEVEL __BIT(7) 52*59200b4bSjakllsch #define SPI_TCR_SS_OWNER __BIT(6) 53*59200b4bSjakllsch #define SPI_TCR_SS_SEL __BITS(5,4) 54*59200b4bSjakllsch #define SPI_TCR_SSCTL __BIT(3) 55*59200b4bSjakllsch #define SPI_TCR_SPOL __BIT(2) 56*59200b4bSjakllsch #define SPI_TCR_CPOL __BIT(1) 57*59200b4bSjakllsch #define SPI_TCR_CPHA __BIT(0) 58*59200b4bSjakllsch 59*59200b4bSjakllsch #define SPI_IER 0x010 60*59200b4bSjakllsch #define SPI_IER_SS_INT_EN __BIT(13) 61*59200b4bSjakllsch #define SPI_IER_TC_INT_EN __BIT(12) 62*59200b4bSjakllsch #define SPI_IER_TF_UDR_INT_EN __BIT(11) 63*59200b4bSjakllsch #define SPI_IER_TF_OVF_INT_EN __BIT(10) 64*59200b4bSjakllsch #define SPI_IER_RF_UDR_INT_EN __BIT(9) 65*59200b4bSjakllsch #define SPI_IER_RF_OVF_INT_EN __BIT(8) 66*59200b4bSjakllsch #define SPI_IER_TF_FUL_INT_EN __BIT(6) 67*59200b4bSjakllsch #define SPI_IER_TX_EMP_INT_EN __BIT(5) 68*59200b4bSjakllsch #define SPI_IER_TX_ERQ_INT_EN __BIT(4) 69*59200b4bSjakllsch #define SPI_IER_RF_FUL_INT_EN __BIT(2) 70*59200b4bSjakllsch #define SPI_IER_RX_EMP_INT_EN __BIT(1) 71*59200b4bSjakllsch #define SPI_IER_RF_RDY_INT_EN __BIT(0) 72*59200b4bSjakllsch 73*59200b4bSjakllsch #define SPI_INT_STA 0x014 74*59200b4bSjakllsch #define SPI_ISR_SSI __BIT(13) 75*59200b4bSjakllsch #define SPI_ISR_TC __BIT(12) 76*59200b4bSjakllsch #define SPI_ISR_TF_UDF __BIT(11) 77*59200b4bSjakllsch #define SPI_ISR_TF_OVF __BIT(10) 78*59200b4bSjakllsch #define SPI_ISR_RX_UDF __BIT(9) 79*59200b4bSjakllsch #define SPI_ISR_RX_OVF __BIT(8) 80*59200b4bSjakllsch #define SPI_ISR_TX_FULL __BIT(6) 81*59200b4bSjakllsch #define SPI_ISR_TX_EMP __BIT(5) 82*59200b4bSjakllsch #define SPI_ISR_TX_READY __BIT(4) 83*59200b4bSjakllsch #define SPI_ISR_RX_FULL __BIT(2) 84*59200b4bSjakllsch #define SPI_ISR_RX_EMP __BIT(1) 85*59200b4bSjakllsch #define SPI_ISR_RX_RDY __BIT(0) 86*59200b4bSjakllsch 87*59200b4bSjakllsch #define SPI_FCR 0x018 88*59200b4bSjakllsch #define SPI_FCR_TX_FIFO_RST __BIT(31) 89*59200b4bSjakllsch #define SPI_FCR_TF_TEST __BIT(30) 90*59200b4bSjakllsch #define SPI_FCR_TF_DRQ_EN __BIT(24) 91*59200b4bSjakllsch #define SPI_FCR_TX_TRIG_LEVEL __BITS(23,16) 92*59200b4bSjakllsch #define SPI_FCR_RF_RST __BIT(15) 93*59200b4bSjakllsch #define SPI_FCR_RF_TEST __BIT(14) 94*59200b4bSjakllsch #define SPI_FCR_RX_DMA_MODE __BIT(9) 95*59200b4bSjakllsch #define SPI_FCR_RF_DRQ_EN __BIT(8) 96*59200b4bSjakllsch #define SPI_FCR_RX_TRIG_LEVEL __BITS(7,0) 97*59200b4bSjakllsch 98*59200b4bSjakllsch #define SPI_FSR 0x01c 99*59200b4bSjakllsch #define SPI_FSR_TB_WR __BIT(31) 100*59200b4bSjakllsch #define SPI_FSR_TB_CNT __BITS(30,28) 101*59200b4bSjakllsch #define SPI_FSR_TF_CNT __BITS(23,16) 102*59200b4bSjakllsch #define SPI_FSR_RB_WR __BIT(15) 103*59200b4bSjakllsch #define SPI_FSR_RB_CNT __BITS(14,12) 104*59200b4bSjakllsch #define SPI_FSR_RF_CNT __BITS(7,0) 105*59200b4bSjakllsch 106*59200b4bSjakllsch #define SPI_WCR 0x020 107*59200b4bSjakllsch #define SPI_WCR_SWC __BITS(19,16) 108*59200b4bSjakllsch #define SPI_WCR_WCC __BITS(15,0) 109*59200b4bSjakllsch 110*59200b4bSjakllsch #define SPI_CCTL 0x024 111*59200b4bSjakllsch #define SPI_CCTL_DRS __BIT(12) 112*59200b4bSjakllsch #define SPI_CCTL_CDR1 __BITS(11,8) 113*59200b4bSjakllsch #define SPI_CCTL_CDR2 __BITS(7,0) 114*59200b4bSjakllsch 115*59200b4bSjakllsch #define SPI_BC 0x030 116*59200b4bSjakllsch #define SPI_BC_MBC __BITS(23,0) 117*59200b4bSjakllsch 118*59200b4bSjakllsch #define SPI_TC 0x034 119*59200b4bSjakllsch #define SPI_TC_MWTC __BITS(23,0) 120*59200b4bSjakllsch 121*59200b4bSjakllsch #define SPI_BCC 0x038 122*59200b4bSjakllsch #define SPI_BCC_DRM __BIT(28) 123*59200b4bSjakllsch #define SPI_BCC_DBC __BITS(27,24) 124*59200b4bSjakllsch #define SPI_BCC_STC __BITS(23,0) 125*59200b4bSjakllsch 126*59200b4bSjakllsch #define SPI_NDMA_CTL 0x088 127*59200b4bSjakllsch #define SPI_NDMA_CTL_NDMA_MODE_CTL __BITS(7,0) 128*59200b4bSjakllsch 129*59200b4bSjakllsch #define SPI_TXD 0x200 130*59200b4bSjakllsch #define SPI_TXD_TDATA_4 __BITS(31,0) 131*59200b4bSjakllsch 132*59200b4bSjakllsch #define SPI_RXD 0x300 133*59200b4bSjakllsch #define SPI_RXD_RDATA_4 __BITS(31,0) 134*59200b4bSjakllsch 135*59200b4bSjakllsch #endif /* _SUNXI_SUN6I_SPIREG_H_ */ 136