Home | History | Annotate | Line # | Download | only in dev
      1  1.2  andvar /* $NetBSD: ausmbus_pscreg.h,v 1.2 2024/06/02 19:51:22 andvar Exp $ */
      2  1.1   shige 
      3  1.1   shige /*-
      4  1.1   shige  * Copyright (c) 2006 Shigeyuki Fukushima.
      5  1.1   shige  * All rights reserved.
      6  1.1   shige  *
      7  1.1   shige  * Written by Shigeyuki Fukushima.
      8  1.1   shige  *
      9  1.1   shige  * Redistribution and use in source and binary forms, with or without
     10  1.1   shige  * modification, are permitted provided that the following conditions
     11  1.1   shige  * are met:
     12  1.1   shige  * 1. Redistributions of source code must retain the above copyright
     13  1.1   shige  *    notice, this list of conditions and the following disclaimer.
     14  1.1   shige  * 2. Redistributions in binary form must reproduce the above
     15  1.1   shige  *    copyright notice, this list of conditions and the following
     16  1.1   shige  *    disclaimer in the documentation and/or other materials provided
     17  1.1   shige  *    with the distribution.
     18  1.1   shige  * 3. The name of the author may not be used to endorse or promote
     19  1.1   shige  *    products derived from this software without specific prior
     20  1.1   shige  *    written permission.
     21  1.1   shige  *
     22  1.1   shige  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
     23  1.1   shige  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     24  1.1   shige  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     25  1.1   shige  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
     26  1.1   shige  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     27  1.1   shige  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
     28  1.1   shige  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     29  1.1   shige  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     30  1.1   shige  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
     31  1.1   shige  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
     32  1.1   shige  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     33  1.1   shige  */
     34  1.1   shige 
     35  1.1   shige #ifndef	_MIPS_ALCHEMY_AUSMBUS_PSCREG_H_
     36  1.1   shige #define	_MIPS_ALCHEMY_AUSMBUS_PSCREG_H_
     37  1.1   shige 
     38  1.1   shige /*
     39  1.1   shige  * psc_smbcfg: SMBus Configuration Register
     40  1.1   shige  *   RT: Rx FIFO Threshold
     41  1.1   shige  *   TT: Tx FIFO Threshold
     42  1.1   shige  *   DD: Disable DMA Transfers
     43  1.1   shige  *   DE: Device Enable
     44  1.1   shige  *   DIV: PSC Clock Divider	(see psc_smbtmr)
     45  1.1   shige  *   GCE: General Call Enable
     46  1.1   shige  *   SFM: Standard/Fast Mode
     47  1.1   shige  *   SLV: Slave Address
     48  1.1   shige  */
     49  1.1   shige #define	SMBUS_CFG_RT		(3u << 30)	/* R/W */
     50  1.1   shige #define	  SMBUS_CFG_RT_SET(x)	((x & 0x3) << 30)
     51  1.1   shige #define	  SMBUS_CFG_RT_FIFO1	0
     52  1.1   shige #define	  SMBUS_CFG_RT_FIFO2	1
     53  1.1   shige #define	  SMBUS_CFG_RT_FIFO4	2
     54  1.1   shige #define	  SMBUS_CFG_RT_FIFO8	3
     55  1.1   shige #define	SMBUS_CFG_TT		(3u << 28)	/* R/W */
     56  1.1   shige #define	  SMBUS_CFG_TT_SET(x)	((x & 0x3) << 28)
     57  1.1   shige #define	  SMBUS_CFG_TT_FIFO1	0
     58  1.1   shige #define	  SMBUS_CFG_TT_FIFO2	1
     59  1.1   shige #define	  SMBUS_CFG_TT_FIFO4	2
     60  1.1   shige #define	  SMBUS_CFG_TT_FIFO8	3
     61  1.1   shige #define	SMBUS_CFG_DD		(1u << 27)	/* R/W */
     62  1.1   shige #define	SMBUS_CFG_DE		(1u << 26)	/* R/W */
     63  1.1   shige #define	SMBUS_CFG_DIV		(3u << 13)	/* R/W */
     64  1.1   shige #define	  SMBUS_CFG_DIV_SET(x)	((x & 0x3) << 13)
     65  1.1   shige #define	  SMBUS_CFG_DIV2	0	/* PSC_CLK = pscn_mainclk / 2 */
     66  1.1   shige #define	  SMBUS_CFG_DIV4	1	/* PSC_CLK = pscn_mainclk / 4 */
     67  1.1   shige #define	  SMBUS_CFG_DIV8	2	/* PSC_CLK = pscn_mainclk / 8 */
     68  1.1   shige #define	  SMBUS_CFG_DIV16	3	/* PSC_CLK = pscn_mainclk / 16 */
     69  1.1   shige #define	SMBUS_CFG_GCE		(1u << 3)	/* R/W */
     70  1.1   shige #define	SMBUS_CFG_SFM		(1u << 8)	/* R/W */
     71  1.1   shige #define	SMBUS_CFG_SLV		(127u << 1)	/* R/W */
     72  1.1   shige 
     73  1.1   shige /*
     74  1.1   shige  * psc_smbmsk: SMBus Mask Register
     75  1.1   shige  *   DN: Data Not-acknowledged
     76  1.1   shige  *   AN: Address Not-acknowledged
     77  1.1   shige  *   AL: Arbitration Lost
     78  1.2  andvar  *   RR: Mask Rx FIFO request interrupt
     79  1.2  andvar  *   RO: Mask Rx FIFO overflow interrupt
     80  1.2  andvar  *   RU: Mask Rx FIFO uderflow interrupt
     81  1.2  andvar  *   TR: Mask Tx FIFO request interrupt
     82  1.2  andvar  *   TO: Mask Tx FIFO overflow interrupt
     83  1.2  andvar  *   TU: Mask Tx FIFO uderflow interrupt
     84  1.2  andvar  *   SD: Mask Slave Done interrupt
     85  1.2  andvar  *   MD: Mask Master Done interrupt
     86  1.1   shige  */
     87  1.1   shige #define	SMBUS_MSK_DN		(1u << 30)	/* R/W */
     88  1.1   shige #define	SMBUS_MSK_AN		(1u << 29)	/* R/W */
     89  1.1   shige #define	SMBUS_MSK_AL		(1u << 28)	/* R/W */
     90  1.1   shige #define	SMBUS_MSK_RR		(1u << 13)	/* R/W */
     91  1.1   shige #define	SMBUS_MSK_RO		(1u << 12)	/* R/W */
     92  1.1   shige #define	SMBUS_MSK_RU		(1u << 11)	/* R/W */
     93  1.1   shige #define	SMBUS_MSK_TR		(1u << 10)	/* R/W */
     94  1.1   shige #define	SMBUS_MSK_TO		(1u << 9)	/* R/W */
     95  1.1   shige #define	SMBUS_MSK_TU		(1u << 8)	/* R/W */
     96  1.1   shige #define	SMBUS_MSK_SD		(1u << 5)	/* R/W */
     97  1.1   shige #define	SMBUS_MSK_MD		(1u << 4)	/* R/W */
     98  1.1   shige #define SMBUS_MSK_ALLMASK	(SMBUS_MSK_DN | SMBUS_MSK_AN | SMBUS_MSK_AL \
     99  1.1   shige 				 | SMBUS_MSK_RR | SMBUS_MSK_RO | SMBUS_MSK_RU \
    100  1.1   shige 				 | SMBUS_MSK_TR | SMBUS_MSK_TO | SMBUS_MSK_TU \
    101  1.1   shige 				 | SMBUS_MSK_SD | SMBUS_MSK_MD)
    102  1.1   shige 
    103  1.1   shige /*
    104  1.1   shige  * psc_smbpcr: SMBus Protocol Control Register
    105  1.1   shige  *   DC: Data Clear
    106  1.1   shige  *   MS: Master Start
    107  1.1   shige  */
    108  1.1   shige #define	SMBUS_PCR_DC		(1u << 2)	/* R/W */
    109  1.1   shige #define	SMBUS_PCR_MS		(1u << 0)	/* R/W */
    110  1.1   shige 
    111  1.1   shige /*
    112  1.1   shige  * psc_smbstat: SMBus Status Register
    113  1.1   shige  *   BB: SMBus bus busy
    114  1.1   shige  *   RF: Receive FIFO full
    115  1.1   shige  *   RE: Receive FIFO empty
    116  1.1   shige  *   RR: Receive request
    117  1.1   shige  *   TF: Transfer FIFO full
    118  1.1   shige  *   TE: Transfer FIFO empty
    119  1.1   shige  *   TR: Transfer request
    120  1.1   shige  *   SB: Slave busy
    121  1.1   shige  *   MB: Master busy
    122  1.1   shige  *   DI: Device interrupt
    123  1.1   shige  *   DR: Device ready
    124  1.1   shige  *   SR: PSC ready
    125  1.1   shige  */
    126  1.1   shige #define	SMBUS_STAT_BB		(1u << 28)	/* Read only */
    127  1.1   shige #define	SMBUS_STAT_RF		(1u << 13)	/* Read only */
    128  1.1   shige #define	SMBUS_STAT_RE		(1u << 12)	/* Read only */
    129  1.1   shige #define	SMBUS_STAT_RR		(1u << 11)	/* Read only */
    130  1.1   shige #define	SMBUS_STAT_TF		(1u << 10)	/* Read only */
    131  1.1   shige #define	SMBUS_STAT_TE		(1u << 9)	/* Read only */
    132  1.1   shige #define	SMBUS_STAT_TR		(1u << 8)	/* Read only */
    133  1.1   shige #define	SMBUS_STAT_SB		(1u << 5)	/* Read only */
    134  1.1   shige #define	SMBUS_STAT_MB		(1u << 4)	/* Read only */
    135  1.1   shige #define	SMBUS_STAT_DI		(1u << 2)	/* Read only */
    136  1.1   shige #define	SMBUS_STAT_DR		(1u << 1)	/* Read only */
    137  1.1   shige #define	SMBUS_STAT_SR		(1u << 0)	/* Read only */
    138  1.1   shige 
    139  1.1   shige /*
    140  1.1   shige  * psc_smbevnt: SMBus Event Register
    141  1.1   shige  *   DN: Data Not-acknowledged
    142  1.1   shige  *   AN: Address Not-acknowledged
    143  1.1   shige  *   AL: Arbitration Lost
    144  1.2  andvar  *   RR: Mask Rx FIFO request interrupt
    145  1.2  andvar  *   RO: Mask Rx FIFO overflow interrupt
    146  1.2  andvar  *   RU: Mask Rx FIFO uderflow interrupt
    147  1.2  andvar  *   TR: Mask Tx FIFO request interrupt
    148  1.2  andvar  *   TO: Mask Tx FIFO overflow interrupt
    149  1.2  andvar  *   TU: Mask Tx FIFO uderflow interrupt
    150  1.2  andvar  *   SD: Mask Slave Done interrupt
    151  1.2  andvar  *   MD: Mask Master Done interrupt
    152  1.1   shige  */
    153  1.1   shige #define	SMBUS_EVNT_DN		(1u << 30)	/* R/W */
    154  1.1   shige #define	SMBUS_EVNT_AN		(1u << 29)	/* R/W */
    155  1.1   shige #define	SMBUS_EVNT_AL		(1u << 28)	/* R/W */
    156  1.1   shige #define	SMBUS_EVNT_RR		(1u << 13)	/* R/W */
    157  1.1   shige #define	SMBUS_EVNT_RO		(1u << 12)	/* R/W */
    158  1.1   shige #define	SMBUS_EVNT_RU		(1u << 11)	/* R/W */
    159  1.1   shige #define	SMBUS_EVNT_TR		(1u << 10)	/* R/W */
    160  1.1   shige #define	SMBUS_EVNT_TO		(1u << 9)	/* R/W */
    161  1.1   shige #define	SMBUS_EVNT_TU		(1u << 8)	/* R/W */
    162  1.1   shige #define	SMBUS_EVNT_SD		(1u << 5)	/* R/W */
    163  1.1   shige #define	SMBUS_EVNT_MD		(1u << 4)	/* R/W */
    164  1.1   shige 
    165  1.1   shige /*
    166  1.1   shige  * psc_smbtxrx: SMBus Tx/Rx Data Register
    167  1.1   shige  *   STP: Stop
    168  1.1   shige  *   RSR: Restart
    169  1.1   shige  *   ADDRDATA: Address/Data
    170  1.1   shige  */
    171  1.1   shige #define SMBUS_TXRX_STP		(1u << 29)	/* Write only */
    172  1.1   shige #define SMBUS_TXRX_RSR		(1u << 28)	/* Write only */
    173  1.1   shige #define SMBUS_TXRX_ADDRDATA	(255u << 0)	/* R/W */
    174  1.1   shige 
    175  1.1   shige 
    176  1.1   shige /*
    177  1.1   shige  * psc_smbtmr: SMBus Protocol Timers Register
    178  1.1   shige  *   TH: Tx Data Hold Timer
    179  1.1   shige  *   PS: Stop->Start Buffer Timer
    180  1.1   shige  *   PU: Stop Setup Timer
    181  1.1   shige  *   SH: Start Hold Timer
    182  1.1   shige  *   SU: Start Setup Timer
    183  1.1   shige  *   CL: Clock Low
    184  1.1   shige  *   CH: Clock High
    185  1.1   shige  *
    186  1.1   shige  * [SMBus Timing Parameter Values]
    187  1.1   shige  *
    188  1.1   shige  * 		Standard Mode			Fast Mode
    189  1.1   shige  * Timer Name	(pscn_mainclk/8) = 6.25MHz	(pscn_mainclk/2) = 25MHz
    190  1.1   shige  * 		Time unit = 160ns		Time unit = 40ns
    191  1.1   shige  * 		psc_smbtmr	Bus Timings	psc_smbtmr	Bus Timings
    192  1.1   shige  * Tx Hold	TX = 0x00	480ns		TH = 0x02	320ns
    193  1.1   shige  * Stop->Start	PS = 0x0F	4800ns		PS = 0x0F	1320ns
    194  1.1   shige  * Stop Setup	PU = 0x0F	4000ns		PU = 0x0B	600ns
    195  1.1   shige  * Start Hold	SH = 0x0F	4000ns		SH = 0x0B	600ns
    196  1.1   shige  * Start Setup	SU = 0x0F	4800ns		SU = 0x0B	600ns
    197  1.1   shige  * Clock Low	CL = 0x0F	4800ns		CL = 0x0F	1320ns
    198  1.1   shige  * Clock High	CH = 0x0F	4000ns		CH = 0x0B	600ns
    199  1.1   shige  */
    200  1.1   shige #define SMBUS_TMR_TH		(3u << 30)	/* R/W */
    201  1.1   shige #define   SMBUS_TMR_TH_SET(x)	((x &  0x3) << 30)
    202  1.1   shige #define SMBUS_TMR_PS		(31u << 25)	/* R/W */
    203  1.1   shige #define   SMBUS_TMR_PS_SET(x)	((x & 0x1f) << 25)
    204  1.1   shige #define SMBUS_TMR_PU		(31u << 20)	/* R/W */
    205  1.1   shige #define   SMBUS_TMR_PU_SET(x)	((x & 0x1f) << 20)
    206  1.1   shige #define SMBUS_TMR_SH		(31u << 15)	/* R/W */
    207  1.1   shige #define   SMBUS_TMR_SH_SET(x)	((x & 0x1f) << 15)
    208  1.1   shige #define SMBUS_TMR_SU		(31u << 10)	/* R/W */
    209  1.1   shige #define   SMBUS_TMR_SU_SET(x)	((x & 0x1f) << 10)
    210  1.1   shige #define SMBUS_TMR_CL		(31u << 5)	/* R/W */
    211  1.1   shige #define   SMBUS_TMR_CL_SET(x)	((x & 0x1f) << 5)
    212  1.1   shige #define SMBUS_TMR_CH		(31u << 0)	/* R/W */
    213  1.1   shige #define   SMBUS_TMR_CH_SET(x)	((x & 0x1f) << 0)
    214  1.1   shige 
    215  1.1   shige /* Standard Mode */
    216  1.1   shige #define	SMBUS_TMR_STD_TH	0x0
    217  1.1   shige #define	SMBUS_TMR_STD_PS	0xf
    218  1.1   shige #define	SMBUS_TMR_STD_PU	0xf
    219  1.1   shige #define	SMBUS_TMR_STD_SH	0xf
    220  1.1   shige #define	SMBUS_TMR_STD_SU	0xf
    221  1.1   shige #define	SMBUS_TMR_STD_CL	0xf
    222  1.1   shige #define	SMBUS_TMR_STD_CH	0xf
    223  1.1   shige 
    224  1.1   shige /* Fast Mode */
    225  1.1   shige #define	SMBUS_TMR_FAST_TH	0x2
    226  1.1   shige #define	SMBUS_TMR_FAST_PS	0xf
    227  1.1   shige #define	SMBUS_TMR_FAST_PU	0xb
    228  1.1   shige #define	SMBUS_TMR_FAST_SH	0xb
    229  1.1   shige #define	SMBUS_TMR_FAST_SU	0xb
    230  1.1   shige #define	SMBUS_TMR_FAST_CL	0xf
    231  1.1   shige #define	SMBUS_TMR_FAST_CH	0xb
    232  1.1   shige 
    233  1.1   shige #endif	/* _MIPS_ALCHEMY_AUSMBUS_PSCREG_H_ */
    234