Home | History | Annotate | Line # | Download | only in include
      1  1.12   andvar /* $NetBSD: scifreg.h,v 1.12 2021/08/17 22:00:30 andvar Exp $ */
      2   1.1   itojun 
      3   1.1   itojun /*-
      4   1.1   itojun  * Copyright (C) 1999 SAITOH Masanobu.  All rights reserved.
      5   1.1   itojun  *
      6   1.1   itojun  * Redistribution and use in source and binary forms, with or without
      7   1.1   itojun  * modification, are permitted provided that the following conditions
      8   1.1   itojun  * are met:
      9   1.1   itojun  * 1. Redistributions of source code must retain the above copyright
     10   1.1   itojun  *    notice, this list of conditions and the following disclaimer.
     11   1.1   itojun  * 2. Redistributions in binary form must reproduce the above copyright
     12   1.1   itojun  *    notice, this list of conditions and the following disclaimer in the
     13   1.1   itojun  *    documentation and/or other materials provided with the distribution.
     14   1.1   itojun  * 3. The name of the author may not be used to endorse or promote products
     15   1.1   itojun  *    derived from this software without specific prior written permission.
     16   1.1   itojun  *
     17   1.1   itojun  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     18   1.1   itojun  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     19   1.1   itojun  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     20   1.1   itojun  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     21   1.1   itojun  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     22   1.1   itojun  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     23   1.1   itojun  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     24   1.1   itojun  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     25   1.1   itojun  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     26   1.1   itojun  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     27   1.1   itojun  */
     28   1.1   itojun 
     29   1.1   itojun #ifndef _SH3_SCIFREG_H_
     30   1.3      uch #define	_SH3_SCIFREG_H_
     31   1.1   itojun 
     32   1.1   itojun /*
     33   1.9      uwe  * Serial Communication Interface with FIFO (SCIF)
     34   1.1   itojun  */
     35   1.1   itojun 
     36  1.10      uwe #define SH3_SCIF0_BASE	0xa4000150
     37  1.10      uwe #define SH3_SCIF1_BASE	0xa4000140
     38  1.10      uwe 
     39  1.10      uwe #define SH4_SCIF_BASE	0xffe80000
     40  1.10      uwe 
     41   1.7      uwe #ifdef SH3
     42   1.1   itojun 
     43   1.1   itojun /* SH3 definitions */
     44   1.1   itojun 
     45   1.8      uwe #define	SCIF_SMR		0x0	/* serial mode */
     46   1.8      uwe #define	SCIF_BRR		0x2	/* bit rate */
     47   1.8      uwe #define	SCIF_SCR		0x4	/* serial control */
     48   1.8      uwe #define	SCIF_FTDR		0x6	/* transmit fifo data */
     49   1.8      uwe #define	SCIF_SSR		0x8	/* serial status */
     50   1.8      uwe #define	SCIF_FRDR		0xa	/* receive fifo data */
     51   1.8      uwe #define	SCIF_FCR		0xc	/* fifo control */
     52   1.8      uwe #define	SCIF_FDR		0xe	/* fifo data count set */
     53   1.8      uwe 
     54   1.8      uwe #define	SHREG_SCSMR2  (*(volatile uint8_t  *)(SH3_SCIF0_BASE + SCIF_SMR))
     55   1.8      uwe #define	SHREG_SCBRR2  (*(volatile uint8_t  *)(SH3_SCIF0_BASE + SCIF_BRR))
     56   1.8      uwe #define	SHREG_SCSCR2  (*(volatile uint8_t  *)(SH3_SCIF0_BASE + SCIF_SCR))
     57   1.8      uwe #define	SHREG_SCFTDR2 (*(volatile uint8_t  *)(SH3_SCIF0_BASE + SCIF_FTDR))
     58   1.8      uwe #define	SHREG_SCSSR2  (*(volatile uint16_t *)(SH3_SCIF0_BASE + SCIF_SSR))
     59   1.8      uwe #define	SHREG_SCFRDR2 (*(volatile uint8_t  *)(SH3_SCIF0_BASE + SCIF_FRDR))
     60   1.8      uwe #define	SHREG_SCFCR2  (*(volatile uint8_t  *)(SH3_SCIF0_BASE + SCIF_FCR))
     61   1.8      uwe #define	SHREG_SCFDR2  (*(volatile uint16_t *)(SH3_SCIF0_BASE + SCIF_FDR))
     62   1.3      uch 
     63   1.7      uwe #else  /* !SH3 */
     64   1.7      uwe 
     65   1.7      uwe /* SH4 definitions */
     66   1.7      uwe 
     67   1.8      uwe #define	SCIF_SMR		0x00	/* serial mode */
     68   1.8      uwe #define	SCIF_BRR		0x04	/* bit rate */
     69   1.8      uwe #define	SCIF_SCR		0x08	/* serial control */
     70   1.8      uwe #define	SCIF_FTDR		0x0c	/* transmit fifo data */
     71   1.8      uwe #define	SCIF_SSR		0x10	/* serial status */
     72   1.8      uwe #define	SCIF_FRDR		0x14	/* receive fifo data */
     73   1.8      uwe #define	SCIF_FCR		0x18	/* fifo control */
     74   1.8      uwe #define	SCIF_FDR		0x1c	/* fifo data count set */
     75   1.8      uwe 
     76  1.12   andvar #define SCIF_SPTR		0x20	/* serial port */
     77   1.8      uwe #define SCIF_LSR		0x24	/* line status */
     78   1.8      uwe 
     79   1.8      uwe #define	SHREG_SCSMR2  (*(volatile uint16_t *)(SH4_SCIF_BASE + SCIF_SMR))
     80   1.8      uwe #define	SHREG_SCBRR2  (*(volatile uint8_t  *)(SH4_SCIF_BASE + SCIF_BRR))
     81   1.8      uwe #define	SHREG_SCSCR2  (*(volatile uint16_t *)(SH4_SCIF_BASE + SCIF_SCR))
     82   1.8      uwe #define	SHREG_SCFTDR2 (*(volatile uint8_t  *)(SH4_SCIF_BASE + SCIF_FTDR))
     83   1.8      uwe #define	SHREG_SCSSR2  (*(volatile uint16_t *)(SH4_SCIF_BASE + SCIF_SSR))
     84   1.8      uwe #define	SHREG_SCFRDR2 (*(volatile uint8_t  *)(SH4_SCIF_BASE + SCIF_FRDR))
     85   1.8      uwe #define	SHREG_SCFCR2  (*(volatile uint16_t *)(SH4_SCIF_BASE + SCIF_FCR))
     86   1.8      uwe #define	SHREG_SCFDR2  (*(volatile uint16_t *)(SH4_SCIF_BASE + SCIF_FDR))
     87   1.7      uwe 
     88   1.8      uwe #define	SHREG_SCSPTR2 (*(volatile uint16_t *)(SH4_SCIF_BASE + SCIF_SPTR))
     89   1.8      uwe #define	SHREG_SCLSR2  (*(volatile uint16_t *)(SH4_SCIF_BASE + SCIF_LSR))
     90   1.7      uwe 
     91   1.7      uwe /* alias */
     92   1.7      uwe #define	SHREG_SCSFDR2	SHREG_SCFTDR2
     93   1.8      uwe #define	SHREG_SCFSR2	SHREG_SCSSR2
     94   1.7      uwe 
     95   1.8      uwe #define	SCSPTR2_RTSIO		0x0080
     96   1.7      uwe #define	SCSPTR2_RTSDT		0x0040
     97   1.8      uwe #define	SCSPTR2_CTSIO		0x0020
     98   1.8      uwe #define	SCSPTR2_CTSDT		0x0010
     99   1.8      uwe #define	SCSPTR2_SCKIO		0x0008
    100   1.7      uwe #define	SCSPTR2_SCKDT		0x0004
    101   1.8      uwe #define	SCSPTR2_SPB2IO		0x0002
    102   1.8      uwe #define	SCSPTR2_SPB2DT		0x0001
    103   1.7      uwe 
    104   1.8      uwe #define SCLSR2_ORER		0x0001	/* overrun error */
    105   1.7      uwe 
    106   1.7      uwe #endif /* !SH3 */
    107   1.7      uwe 
    108   1.8      uwe /* SMR: serial mode */
    109   1.8      uwe #define SCSMR2_CHR		0x40	/* character width (set = 7bit) */
    110   1.8      uwe #define SCSMR2_PE		0x20	/* Parity Enable */
    111   1.8      uwe #define SCSMR2_O		0x10	/* parity mode Odd */
    112   1.8      uwe #define SCSMR2_STOP		0x08	/* STOP bit (set = 2 stop bits) */
    113   1.8      uwe #define	SCSMR2_CKS1		0x02	/* ClocK Select 1 */
    114   1.8      uwe #define	SCSMR2_CKS0		0x01	/* ClocK Select 0 */
    115   1.8      uwe 
    116  1.10      uwe /* SMR: serial mode (for IrDA) */
    117  1.10      uwe #define SCSMR2_IRMOD		0x80	/* IrDA mode */
    118  1.10      uwe #define SCSMR2_ICK3		0x40
    119  1.10      uwe #define SCSMR2_ICK2		0x20
    120  1.10      uwe #define SCSMR2_ICK1		0x10
    121  1.10      uwe #define SCSMR2_ICK0		0x08
    122  1.10      uwe #define SCSMR2_PSEL		0x04	/* Pulse width SELelect */
    123  1.10      uwe 
    124   1.8      uwe /* SCR: serial control */
    125   1.8      uwe #define	SCSCR2_TIE		0x80	/* Transmit Interrupt Enable */
    126  1.11  msaitoh #define	SCSCR2_RIE		0x40	/* Receive Interrupt Enable */
    127   1.8      uwe #define	SCSCR2_TE		0x20	/* Transmit Enable */
    128   1.8      uwe #define	SCSCR2_RE		0x10	/* Receive Enable */
    129   1.8      uwe #define	SCSCR2_CKE1		0x02	/* ClocK Enable 1 */
    130   1.8      uwe #define	SCSCR2_CKE0		0x01	/* ClocK Enable 0 (not in sh4) */
    131   1.8      uwe 
    132   1.8      uwe /* SSR: serial status */
    133   1.8      uwe #define	SCSSR2_ER		0x0080	/* ERror */
    134   1.8      uwe #define	SCSSR2_TEND		0x0040	/* Transmit END */
    135   1.8      uwe #define	SCSSR2_TDFE		0x0020	/* Transmit Data Fifo Empty */
    136   1.8      uwe #define	SCSSR2_BRK		0x0010	/* BReaK detection */
    137   1.8      uwe #define	SCSSR2_FER		0x0008	/* Framing ERror */
    138   1.8      uwe #define	SCSSR2_PER		0x0004	/* Parity ERror */
    139  1.11  msaitoh #define	SCSSR2_RDF		0x0002	/* Receive fifo Data Full */
    140   1.8      uwe #define	SCSSR2_DR		0x0001	/* Data Ready */
    141   1.8      uwe 
    142   1.8      uwe /* FCR: fifo control */
    143   1.8      uwe #define	SCFCR2_RTRG1		0x80	/* Receive TRiGger 1 */
    144   1.8      uwe #define	SCFCR2_RTRG0		0x40	/* Receive TRiGger 0 */
    145   1.8      uwe #define	SCFCR2_TTRG1		0x20	/* Transmit TRiGger 1 */
    146   1.8      uwe #define	SCFCR2_TTRG0		0x10	/* Transmit TRiGger 0 */
    147   1.8      uwe #define	SCFCR2_MCE		0x08	/* Modem Control Enable */
    148   1.8      uwe #define	SCFCR2_TFRST		0x04	/* Transmit Fifo register ReSeT */
    149   1.8      uwe #define	SCFCR2_RFRST		0x02	/* Receive Fifo register ReSeT */
    150   1.8      uwe #define	SCFCR2_LOOP		0x01	/* LOOP back test */
    151   1.7      uwe 
    152   1.3      uch #define	FIFO_RCV_TRIGGER_1	0x00
    153   1.3      uch #define	FIFO_RCV_TRIGGER_4	0x40
    154   1.3      uch #define	FIFO_RCV_TRIGGER_8	0x80
    155   1.3      uch #define	FIFO_RCV_TRIGGER_14	0xc0
    156   1.8      uwe 
    157   1.3      uch #define	FIFO_XMT_TRIGGER_8	0x00
    158   1.3      uch #define	FIFO_XMT_TRIGGER_4	0x10
    159   1.3      uch #define	FIFO_XMT_TRIGGER_2	0x20
    160   1.3      uch #define	FIFO_XMT_TRIGGER_1	0x30
    161   1.1   itojun 
    162   1.8      uwe /* FDR: fifo data count set */
    163   1.8      uwe #define	SCFDR2_TXCNT		0xff00	/* Tx CouNT */
    164   1.8      uwe #define	SCFDR2_RECVCNT		0x00ff	/* Rx CouNT */
    165   1.8      uwe #define	SCFDR2_TXF_FULL		0x1000	/* Tx FULL */
    166   1.8      uwe #define	SCFDR2_RXF_EPTY		0x0000	/* Rx EMPTY */
    167   1.1   itojun 
    168   1.1   itojun #endif /* !_SH3_SCIFREG_ */
    169