11b5ddfe4Ssimonb /*  *********************************************************************
21b5ddfe4Ssimonb     *  SB1250 Board Support Package
31b5ddfe4Ssimonb     *
41b5ddfe4Ssimonb     *  SMBUS Constants                          File: sb1250_smbus.h
51b5ddfe4Ssimonb     *
61b5ddfe4Ssimonb     *  This module contains constants and macros useful for
71b5ddfe4Ssimonb     *  manipulating the SB1250's SMbus devices.
81b5ddfe4Ssimonb     *
9965d1e33Scgd     *  SB1250 specification level:  10/21/02
10965d1e33Scgd     *  BCM1280 specification level:  11/24/03
111b5ddfe4Ssimonb     *
121b5ddfe4Ssimonb     *********************************************************************
131b5ddfe4Ssimonb     *
14*8ed35a9cSsimonb     *  Copyright 2000,2001,2002,2003,2004
151b5ddfe4Ssimonb     *  Broadcom Corporation. All rights reserved.
161b5ddfe4Ssimonb     *
171b5ddfe4Ssimonb     *  This software is furnished under license and may be used and
181b5ddfe4Ssimonb     *  copied only in accordance with the following terms and
191b5ddfe4Ssimonb     *  conditions.  Subject to these conditions, you may download,
201b5ddfe4Ssimonb     *  copy, install, use, modify and distribute modified or unmodified
211b5ddfe4Ssimonb     *  copies of this software in source and/or binary form.  No title
221b5ddfe4Ssimonb     *  or ownership is transferred hereby.
231b5ddfe4Ssimonb     *
241b5ddfe4Ssimonb     *  1) Any source code used, modified or distributed must reproduce
258a6b8c3bScgd     *     and retain this copyright notice and list of conditions
268a6b8c3bScgd     *     as they appear in the source file.
271b5ddfe4Ssimonb     *
281b5ddfe4Ssimonb     *  2) No right is granted to use any trade name, trademark, or
298a6b8c3bScgd     *     logo of Broadcom Corporation.  The "Broadcom Corporation"
308a6b8c3bScgd     *     name may not be used to endorse or promote products derived
318a6b8c3bScgd     *     from this software without the prior written permission of
328a6b8c3bScgd     *     Broadcom Corporation.
331b5ddfe4Ssimonb     *
341b5ddfe4Ssimonb     *  3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR
351b5ddfe4Ssimonb     *     IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED
361b5ddfe4Ssimonb     *     WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
371b5ddfe4Ssimonb     *     PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT
381b5ddfe4Ssimonb     *     SHALL BROADCOM BE LIABLE FOR ANY DAMAGES WHATSOEVER, AND IN
391b5ddfe4Ssimonb     *     PARTICULAR, BROADCOM SHALL NOT BE LIABLE FOR DIRECT, INDIRECT,
401b5ddfe4Ssimonb     *     INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
411b5ddfe4Ssimonb     *     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
421b5ddfe4Ssimonb     *     GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
431b5ddfe4Ssimonb     *     BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
441b5ddfe4Ssimonb     *     OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
451b5ddfe4Ssimonb     *     TORT (INCLUDING NEGLIGENCE OR OTHERWISE), EVEN IF ADVISED OF
461b5ddfe4Ssimonb     *     THE POSSIBILITY OF SUCH DAMAGE.
471b5ddfe4Ssimonb     ********************************************************************* */
481b5ddfe4Ssimonb 
491b5ddfe4Ssimonb 
501b5ddfe4Ssimonb #ifndef _SB1250_SMBUS_H
511b5ddfe4Ssimonb #define _SB1250_SMBUS_H
521b5ddfe4Ssimonb 
531b5ddfe4Ssimonb #include "sb1250_defs.h"
541b5ddfe4Ssimonb 
551b5ddfe4Ssimonb /*
561b5ddfe4Ssimonb  * SMBus Clock Frequency Register (Table 14-2)
571b5ddfe4Ssimonb  */
581b5ddfe4Ssimonb 
591b5ddfe4Ssimonb #define S_SMB_FREQ_DIV              0
601b5ddfe4Ssimonb #define M_SMB_FREQ_DIV              _SB_MAKEMASK(13,S_SMB_FREQ_DIV)
611b5ddfe4Ssimonb #define V_SMB_FREQ_DIV(x)           _SB_MAKEVALUE(x,S_SMB_FREQ_DIV)
621b5ddfe4Ssimonb 
631b5ddfe4Ssimonb #define K_SMB_FREQ_400KHZ	    0x1F
641b5ddfe4Ssimonb #define K_SMB_FREQ_100KHZ	    0x7D
65965d1e33Scgd #define K_SMB_FREQ_10KHZ	    1250
661b5ddfe4Ssimonb 
671b5ddfe4Ssimonb #define S_SMB_CMD                   0
681b5ddfe4Ssimonb #define M_SMB_CMD                   _SB_MAKEMASK(8,S_SMB_CMD)
691b5ddfe4Ssimonb #define V_SMB_CMD(x)                _SB_MAKEVALUE(x,S_SMB_CMD)
701b5ddfe4Ssimonb 
711b5ddfe4Ssimonb /*
721b5ddfe4Ssimonb  * SMBus control register (Table 14-4)
731b5ddfe4Ssimonb  */
741b5ddfe4Ssimonb 
751b5ddfe4Ssimonb #define M_SMB_ERR_INTR              _SB_MAKEMASK1(0)
761b5ddfe4Ssimonb #define M_SMB_FINISH_INTR           _SB_MAKEMASK1(1)
77965d1e33Scgd 
78965d1e33Scgd #define S_SMB_DATA_OUT              4
79965d1e33Scgd #define M_SMB_DATA_OUT              _SB_MAKEMASK1(S_SMB_DATA_OUT)
80965d1e33Scgd #define V_SMB_DATA_OUT(x)           _SB_MAKEVALUE(x,S_SMB_DATA_OUT)
81965d1e33Scgd 
821b5ddfe4Ssimonb #define M_SMB_DATA_DIR              _SB_MAKEMASK1(5)
831b5ddfe4Ssimonb #define M_SMB_DATA_DIR_OUTPUT       M_SMB_DATA_DIR
841b5ddfe4Ssimonb #define M_SMB_CLK_OUT               _SB_MAKEMASK1(6)
851b5ddfe4Ssimonb #define M_SMB_DIRECT_ENABLE         _SB_MAKEMASK1(7)
861b5ddfe4Ssimonb 
871b5ddfe4Ssimonb /*
881b5ddfe4Ssimonb  * SMBus status registers (Table 14-5)
891b5ddfe4Ssimonb  */
901b5ddfe4Ssimonb 
911b5ddfe4Ssimonb #define M_SMB_BUSY                  _SB_MAKEMASK1(0)
921b5ddfe4Ssimonb #define M_SMB_ERROR                 _SB_MAKEMASK1(1)
931b5ddfe4Ssimonb #define M_SMB_ERROR_TYPE            _SB_MAKEMASK1(2)
94965d1e33Scgd 
95*8ed35a9cSsimonb #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
96965d1e33Scgd #define S_SMB_SCL_IN                5
97965d1e33Scgd #define M_SMB_SCL_IN                _SB_MAKEMASK1(S_SMB_SCL_IN)
98965d1e33Scgd #define V_SMB_SCL_IN(x)             _SB_MAKEVALUE(x,S_SMB_SCL_IN)
99965d1e33Scgd #define G_SMB_SCL_IN(x)             _SB_GETVALUE(x,S_SMB_SCL_IN,M_SMB_SCL_IN)
100*8ed35a9cSsimonb #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
101965d1e33Scgd 
102965d1e33Scgd #define S_SMB_REF                   6
103965d1e33Scgd #define M_SMB_REF                   _SB_MAKEMASK1(S_SMB_REF)
104965d1e33Scgd #define V_SMB_REF(x)                _SB_MAKEVALUE(x,S_SMB_REF)
105965d1e33Scgd #define G_SMB_REF(x)                _SB_GETVALUE(x,S_SMB_REF,M_SMB_REF)
106965d1e33Scgd 
107965d1e33Scgd #define S_SMB_DATA_IN               7
108965d1e33Scgd #define M_SMB_DATA_IN               _SB_MAKEMASK1(S_SMB_DATA_IN)
109965d1e33Scgd #define V_SMB_DATA_IN(x)            _SB_MAKEVALUE(x,S_SMB_DATA_IN)
110965d1e33Scgd #define G_SMB_DATA_IN(x)            _SB_GETVALUE(x,S_SMB_DATA_IN,M_SMB_DATA_IN)
1111b5ddfe4Ssimonb 
1121b5ddfe4Ssimonb /*
1131b5ddfe4Ssimonb  * SMBus Start/Command registers (Table 14-9)
1141b5ddfe4Ssimonb  */
1151b5ddfe4Ssimonb 
1161b5ddfe4Ssimonb #define S_SMB_ADDR                  0
1171b5ddfe4Ssimonb #define M_SMB_ADDR                  _SB_MAKEMASK(7,S_SMB_ADDR)
1181b5ddfe4Ssimonb #define V_SMB_ADDR(x)               _SB_MAKEVALUE(x,S_SMB_ADDR)
1191b5ddfe4Ssimonb #define G_SMB_ADDR(x)               _SB_GETVALUE(x,S_SMB_ADDR,M_SMB_ADDR)
1201b5ddfe4Ssimonb 
1211b5ddfe4Ssimonb #define M_SMB_QDATA                 _SB_MAKEMASK1(7)
1221b5ddfe4Ssimonb 
1231b5ddfe4Ssimonb #define S_SMB_TT                    8
1241b5ddfe4Ssimonb #define M_SMB_TT                    _SB_MAKEMASK(3,S_SMB_TT)
1251b5ddfe4Ssimonb #define V_SMB_TT(x)                 _SB_MAKEVALUE(x,S_SMB_TT)
1261b5ddfe4Ssimonb #define G_SMB_TT(x)                 _SB_GETVALUE(x,S_SMB_TT,M_SMB_TT)
1271b5ddfe4Ssimonb 
1281b5ddfe4Ssimonb #define K_SMB_TT_WR1BYTE            0
1291b5ddfe4Ssimonb #define K_SMB_TT_WR2BYTE            1
1301b5ddfe4Ssimonb #define K_SMB_TT_WR3BYTE            2
1311b5ddfe4Ssimonb #define K_SMB_TT_CMD_RD1BYTE        3
1321b5ddfe4Ssimonb #define K_SMB_TT_CMD_RD2BYTE        4
1331b5ddfe4Ssimonb #define K_SMB_TT_RD1BYTE            5
1341b5ddfe4Ssimonb #define K_SMB_TT_QUICKCMD           6
1351b5ddfe4Ssimonb #define K_SMB_TT_EEPROMREAD         7
1361b5ddfe4Ssimonb 
1371b5ddfe4Ssimonb #define V_SMB_TT_WR1BYTE	    V_SMB_TT(K_SMB_TT_WR1BYTE)
1381b5ddfe4Ssimonb #define V_SMB_TT_WR2BYTE	    V_SMB_TT(K_SMB_TT_WR2BYTE)
1391b5ddfe4Ssimonb #define V_SMB_TT_WR3BYTE	    V_SMB_TT(K_SMB_TT_WR3BYTE)
1401b5ddfe4Ssimonb #define V_SMB_TT_CMD_RD1BYTE	    V_SMB_TT(K_SMB_TT_CMD_RD1BYTE)
1411b5ddfe4Ssimonb #define V_SMB_TT_CMD_RD2BYTE	    V_SMB_TT(K_SMB_TT_CMD_RD2BYTE)
1421b5ddfe4Ssimonb #define V_SMB_TT_RD1BYTE	    V_SMB_TT(K_SMB_TT_RD1BYTE)
1431b5ddfe4Ssimonb #define V_SMB_TT_QUICKCMD	    V_SMB_TT(K_SMB_TT_QUICKCMD)
1441b5ddfe4Ssimonb #define V_SMB_TT_EEPROMREAD	    V_SMB_TT(K_SMB_TT_EEPROMREAD)
1451b5ddfe4Ssimonb 
1461b5ddfe4Ssimonb #define M_SMB_PEC                   _SB_MAKEMASK1(15)
1471b5ddfe4Ssimonb 
1481b5ddfe4Ssimonb /*
1491b5ddfe4Ssimonb  * SMBus Data Register (Table 14-6) and SMBus Extra Register (Table 14-7)
1501b5ddfe4Ssimonb  */
1511b5ddfe4Ssimonb 
1521b5ddfe4Ssimonb #define S_SMB_LB                    0
1531b5ddfe4Ssimonb #define M_SMB_LB                    _SB_MAKEMASK(8,S_SMB_LB)
1541b5ddfe4Ssimonb #define V_SMB_LB(x)                 _SB_MAKEVALUE(x,S_SMB_LB)
1551b5ddfe4Ssimonb 
1561b5ddfe4Ssimonb #define S_SMB_MB                    8
1571b5ddfe4Ssimonb #define M_SMB_MB                    _SB_MAKEMASK(8,S_SMB_MB)
1581b5ddfe4Ssimonb #define V_SMB_MB(x)                 _SB_MAKEVALUE(x,S_SMB_MB)
1591b5ddfe4Ssimonb 
1601b5ddfe4Ssimonb 
1611b5ddfe4Ssimonb /*
1621b5ddfe4Ssimonb  * SMBus Packet Error Check register (Table 14-8)
1631b5ddfe4Ssimonb  */
1641b5ddfe4Ssimonb 
1651b5ddfe4Ssimonb #define S_SPEC_PEC                  0
1661b5ddfe4Ssimonb #define M_SPEC_PEC                  _SB_MAKEMASK(8,S_SPEC_PEC)
1671b5ddfe4Ssimonb #define V_SPEC_MB(x)                _SB_MAKEVALUE(x,S_SPEC_PEC)
1681b5ddfe4Ssimonb 
169e5a27ab1Ssimonb 
170*8ed35a9cSsimonb #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
171e5a27ab1Ssimonb 
172e5a27ab1Ssimonb #define S_SMB_CMDH                  8
173*8ed35a9cSsimonb #define M_SMB_CMDH                  _SB_MAKEMASK(8,S_SMB_CMDH)
174*8ed35a9cSsimonb #define V_SMB_CMDH(x)               _SB_MAKEVALUE(x,S_SMB_CMDH)
175e5a27ab1Ssimonb 
176e5a27ab1Ssimonb #define M_SMB_EXTEND		    _SB_MAKEMASK1(14)
177e5a27ab1Ssimonb 
178e5a27ab1Ssimonb #define S_SMB_DFMT                  8
179e5a27ab1Ssimonb #define M_SMB_DFMT                  _SB_MAKEMASK(3,S_SMB_DFMT)
180e5a27ab1Ssimonb #define V_SMB_DFMT(x)               _SB_MAKEVALUE(x,S_SMB_DFMT)
181e5a27ab1Ssimonb #define G_SMB_DFMT(x)               _SB_GETVALUE(x,S_SMB_DFMT,M_SMB_DFMT)
182e5a27ab1Ssimonb 
183e5a27ab1Ssimonb #define K_SMB_DFMT_1BYTE            0
184e5a27ab1Ssimonb #define K_SMB_DFMT_2BYTE            1
185e5a27ab1Ssimonb #define K_SMB_DFMT_3BYTE            2
186e5a27ab1Ssimonb #define K_SMB_DFMT_4BYTE            3
187e5a27ab1Ssimonb #define K_SMB_DFMT_NODATA           4
188e5a27ab1Ssimonb #define K_SMB_DFMT_CMD4BYTE         5
189e5a27ab1Ssimonb #define K_SMB_DFMT_CMD5BYTE         6
190e5a27ab1Ssimonb #define K_SMB_DFMT_RESERVED         7
191e5a27ab1Ssimonb 
192e5a27ab1Ssimonb #define V_SMB_DFMT_1BYTE	    V_SMB_DFMT(K_SMB_DFMT_1BYTE)
193e5a27ab1Ssimonb #define V_SMB_DFMT_2BYTE	    V_SMB_DFMT(K_SMB_DFMT_2BYTE)
194e5a27ab1Ssimonb #define V_SMB_DFMT_3BYTE	    V_SMB_DFMT(K_SMB_DFMT_3BYTE)
195e5a27ab1Ssimonb #define V_SMB_DFMT_4BYTE	    V_SMB_DFMT(K_SMB_DFMT_4BYTE)
196e5a27ab1Ssimonb #define V_SMB_DFMT_NODATA	    V_SMB_DFMT(K_SMB_DFMT_NODATA)
197e5a27ab1Ssimonb #define V_SMB_DFMT_CMD4BYTE	    V_SMB_DFMT(K_SMB_DFMT_CMD4BYTE)
198e5a27ab1Ssimonb #define V_SMB_DFMT_CMD5BYTE	    V_SMB_DFMT(K_SMB_DFMT_CMD5BYTE)
199e5a27ab1Ssimonb #define V_SMB_DFMT_RESERVED	    V_SMB_DFMT(K_SMB_DFMT_RESERVED)
200e5a27ab1Ssimonb 
201965d1e33Scgd #define S_SMB_AFMT                  11
202965d1e33Scgd #define M_SMB_AFMT                  _SB_MAKEMASK(2,S_SMB_AFMT)
203965d1e33Scgd #define V_SMB_AFMT(x)               _SB_MAKEVALUE(x,S_SMB_AFMT)
204965d1e33Scgd #define G_SMB_AFMT(x)               _SB_GETVALUE(x,S_SMB_AFMT,M_SMB_AFMT)
205965d1e33Scgd 
206965d1e33Scgd #define K_SMB_AFMT_NONE             0
207965d1e33Scgd #define K_SMB_AFMT_ADDR             1
208965d1e33Scgd #define K_SMB_AFMT_ADDR_CMD1BYTE    2
209965d1e33Scgd #define K_SMB_AFMT_ADDR_CMD2BYTE    3
210965d1e33Scgd 
211965d1e33Scgd #define V_SMB_AFMT_NONE		    V_SMB_AFMT(K_SMB_AFMT_NONE)
212965d1e33Scgd #define V_SMB_AFMT_ADDR		    V_SMB_AFMT(K_SMB_AFMT_ADDR)
213*8ed35a9cSsimonb #define V_SMB_AFMT_ADDR_CMD1BYTE    V_SMB_AFMT(K_SMB_AFMT_ADDR_CMD1BYTE)
214*8ed35a9cSsimonb #define V_SMB_AFMT_ADDR_CMD2BYTE    V_SMB_AFMT(K_SMB_AFMT_ADDR_CMD2BYTE)
215965d1e33Scgd 
216965d1e33Scgd #define M_SMB_DIR		    _SB_MAKEMASK1(13)
217965d1e33Scgd 
218*8ed35a9cSsimonb #endif /* 1250 PASS2 || 112x PASS1 || 1480 */
219e5a27ab1Ssimonb 
2201b5ddfe4Ssimonb #endif
221