at91_sscreg.h revision 225736
1214501Srpaulo/*- 2214501Srpaulo * Copyright (c) 2006 M. Warner Losh. All rights reserved. 3214501Srpaulo * 4214501Srpaulo * Redistribution and use in source and binary forms, with or without 5214501Srpaulo * modification, are permitted provided that the following conditions 6214501Srpaulo * are met: 7214501Srpaulo * 1. Redistributions of source code must retain the above copyright 8214501Srpaulo * notice, this list of conditions and the following disclaimer. 9214501Srpaulo * 2. Redistributions in binary form must reproduce the above copyright 10214501Srpaulo * notice, this list of conditions and the following disclaimer in the 11214501Srpaulo * documentation and/or other materials provided with the distribution. 12214501Srpaulo * 13214501Srpaulo * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14214501Srpaulo * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15214501Srpaulo * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16214501Srpaulo * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE 17214501Srpaulo * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18214501Srpaulo * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19214501Srpaulo * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20214501Srpaulo * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21214501Srpaulo * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22214501Srpaulo * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23214501Srpaulo * SUCH DAMAGE. 24214501Srpaulo */ 25214501Srpaulo 26214501Srpaulo/* $FreeBSD: stable/9/sys/arm/at91/at91_sscreg.h 185265 2008-11-25 00:13:26Z imp $ */ 27214501Srpaulo 28214501Srpaulo#ifndef ARM_AT91_AT91_SSCREG_H 29214501Srpaulo#define ARM_AT91_AT91_SSCREG_H 30214501Srpaulo 31214501Srpaulo/* Registers */ 32214501Srpaulo#define SSC_CR 0x00 /* Control Register */ 33214501Srpaulo#define SSC_CMR 0x04 /* Clock Mode Register */ 34214501Srpaulo /* 0x08 Reserved */ 35214501Srpaulo /* 0x0c Reserved */ 36214501Srpaulo#define SSC_RCMR 0x10 /* Receive Clock Mode Register */ 37214501Srpaulo#define SSC_RFMR 0x14 /* Receive Frame Mode Register */ 38214501Srpaulo#define SSC_TCMR 0x18 /* Transmit Clock Mode Register */ 39214501Srpaulo#define SSC_TFMR 0x1c /* Transmit Frame Mode register */ 40214501Srpaulo#define SSC_RHR 0x20 /* Receive Holding Register */ 41214501Srpaulo#define SSC_THR 0x24 /* Transmit Holding Register */ 42214501Srpaulo /* 0x28 Reserved */ 43214501Srpaulo /* 0x2c Reserved */ 44214501Srpaulo#define SSC_RSHR 0x30 /* Receive Sync Holding Register */ 45214501Srpaulo#define SSC_TSHR 0x34 /* Transmit Sync Holding Register */ 46214501Srpaulo /* 0x38 Reserved */ 47214501Srpaulo /* 0x3c Reserved */ 48214501Srpaulo#define SSC_SR 0x40 /* Status Register */ 49214501Srpaulo#define SSC_IER 0x44 /* Interrupt Enable Register */ 50214501Srpaulo#define SSC_IDR 0x48 /* Interrupt Disable Register */ 51214501Srpaulo#define SSC_IMR 0x4c /* Interrupt Mask Register */ 52214501Srpaulo/* And PDC registers */ 53214501Srpaulo 54214501Srpaulo/* SSC_CR */ 55214501Srpaulo#define SSC_CR_RXEN (1u << 0) /* RXEN: Receive Enable */ 56214501Srpaulo#define SSC_CR_RXDIS (1u << 1) /* RXDIS: Receive Disable */ 57#define SSC_CR_TXEN (1u << 8) /* TXEN: Transmit Enable */ 58#define SSC_CR_TXDIS (1u << 9) /* TXDIS: Transmit Disable */ 59#define SSC_CR_SWRST (1u << 15) /* SWRST: Software Reset */ 60 61/* SSC_CMR */ 62#define SSC_CMR_DIV 0xfffu /* DIV: Clock Divider mask */ 63 64/* SSC_RCMR */ 65#define SSC_RCMR_PERIOD (0xffu << 24) /* PERIOD: Receive Period Divider sel*/ 66#define SSC_RCMR_STTDLY (0xffu << 16) /* STTDLY: Receive Start Delay */ 67#define SSC_RCMR_START (0xfu << 8) /* START: Receive Start Sel */ 68#define SSC_RCMR_START_CONT (0u << 8) 69#define SSC_RCMR_START_TX_START (1u << 8) 70#define SSC_RCMR_START_LOW_RF (2u << 8) 71#define SSC_RCMR_START_HIGH_RF (3u << 8) 72#define SSC_RCMR_START_FALL_EDGE_RF (4u << 8) 73#define SSC_RCMR_START_RISE_EDGE_RF (5u << 8) 74#define SSC_RCMR_START_LEVEL_CHANGE_RF (6u << 8) 75#define SSC_RCMR_START_ANY_EDGE_RF (7u << 8) 76#define SSC_RCMR_CKI (1u << 5) /* CKI: Receive Clock Inversion */ 77#define SSC_RCMR_CKO (7u << 2) /* CKO: Receive Clock Output Mode Sel*/ 78#define SSC_RCMR_CKO_NONE (0u << 2) 79#define SSC_RCMR_CKO_CONTINUOUS (1u << 2) 80#define SSC_RCMR_CKS (3u) /* CKS: Receive Clock Selection */ 81#define SSC_RCMR_CKS_DIVIDED (0) 82#define SSC_RCMR_CKS_TK_CLOCK (1) 83#define SSC_RCMR_CKS_RK (2) 84 85/* SSC_RFMR */ 86#define SSC_RFMR_FSEDGE (1u << 24) /* FSEDGE: Frame Sync Edge Detection */ 87#define SSC_RFMR_FSOS (7u << 20) /* FSOS: Receive frame Sync Out sel */ 88#define SSC_RFMR_FSOS_NONE (0u << 20) 89#define SSC_RFMR_FSOS_NEG_PULSE (1u << 20) 90#define SSC_RFMR_FSOS_POS_PULSE (2u << 20) 91#define SSC_RFMR_FSOS_LOW (3u << 20) 92#define SSC_RFMR_FSOS_HIGH (4u << 20) 93#define SSC_RFMR_FSOS_TOGGLE (5u << 20) 94#define SSC_RFMR_FSLEN (0xfu << 16) /* FSLEN: Receive Frame Sync Length */ 95#define SSC_RFMR_DATNB (0xfu << 8) /* DATNB: Data Number per Frame */ 96#define SSC_RFMR_MSFBF (1u << 7) /* MSBF: Most Significant Bit First */ 97#define SSC_RFMR_LOOP (1u << 5) /* LOOP: Loop Mode */ 98#define SSC_RFMR_DATLEN (0x1fu << 0) /* DATLEN: Data Length */ 99 100/* SSC_TCMR */ 101#define SSC_TCMR_PERIOD (0xffu << 24) /* PERIOD: Receive Period Divider sel*/ 102#define SSC_TCMR_STTDLY (0xffu << 16) /* STTDLY: Receive Start Delay */ 103#define SSC_TCMR_START (0xfu << 8) /* START: Receive Start Sel */ 104#define SSC_TCMR_START_CONT (0u << 8) 105#define SSC_TCMR_START_RX_START (1u << 8) 106#define SSC_TCMR_START_LOW_RF (2u << 8) 107#define SSC_TCMR_START_HIGH_RF (3u << 8) 108#define SSC_TCMR_START_FALL_EDGE_RF (4u << 8) 109#define SSC_TCMR_START_RISE_EDGE_RF (5u << 8) 110#define SSC_TCMR_START_LEVEL_CHANGE_RF (6u << 8) 111#define SSC_TCMR_START_ANY_EDGE_RF (7u << 8) 112#define SSC_TCMR_CKI (1u << 5) /* CKI: Receive Clock Inversion */ 113#define SSC_TCMR_CKO (7u << 2) /* CKO: Receive Clock Output Mode Sel*/ 114#define SSC_TCMR_CKO_NONE (0u << 2) 115#define SSC_TCMR_CKO_CONTINUOUS (1u << 2) 116#define SSC_TCMR_CKS (3u) /* CKS: Receive Clock Selection */ 117#define SSC_TCMR_CKS_DIVIDED (0) 118#define SSC_TCMR_CKS_RK_CLOCK (1) 119#define SSC_TCMR_CKS_TK (2) 120 121/* SSC_TFMR */ 122#define SSC_TFMR_FSEDGE (1u << 24) /* FSEDGE: Frame Sync Edge Detection */ 123#define SSC_TFMR_FSOS (7u << 20) /* FSOS: Receive frame Sync Out sel */ 124#define SSC_TFMR_FSOS_NONE (0u << 20) 125#define SSC_TFMR_FSOS_NEG_PULSE (1u << 20) 126#define SSC_TFMR_FSOS_POS_PULSE (2u << 20) 127#define SSC_TFMR_FSOS_LOW (3u << 20) 128#define SSC_TFMR_FSOS_HIGH (4u << 20) 129#define SSC_TFMR_FSOS_TOGGLE (5u << 20) 130#define SSC_TFMR_FSLEN (0xfu << 16) /* FSLEN: Receive Frame Sync Length */ 131#define SSC_TFMR_DATNB (0xfu << 8) /* DATNB: Data Number per Frame */ 132#define SSC_TFMR_MSFBF (1u << 7) /* MSBF: Most Significant Bit First */ 133#define SSC_TFMR_DATDEF (1u << 5) /* DATDEF: Data Default Value */ 134#define SSC_TFMR_DATLEN (0x1fu << 0) /* DATLEN: Data Length */ 135 136/* SSC_SR */ 137#define SSC_SR_TXRDY (1u << 0) 138#define SSC_SR_TXEMPTY (1u << 1) 139#define SSC_SR_ENDTX (1u << 2) 140#define SSC_SR_TXBUFE (1u << 3) 141#define SSC_SR_RXRDY (1u << 4) 142#define SSC_SR_OVRUN (1u << 5) 143#define SSC_SR_ENDRX (1u << 6) 144#define SSC_SR_RXBUFF (1u << 7) 145#define SSC_SR_TXSYN (1u << 10) 146#define SSC_SR_RSSYN (1u << 11) 147#define SSC_SR_TXEN (1u << 16) 148#define SSC_SR_RXEN (1u << 17) 149 150#endif /* ARM_AT91_AT91_SSCREG_H */ 151