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