1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* ********************************************************************* 3*4882a593Smuzhiyun * SB1250 Board Support Package 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * SMBUS Constants File: sb1250_smbus.h 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * This module contains constants and macros useful for 8*4882a593Smuzhiyun * manipulating the SB1250's SMbus devices. 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * SB1250 specification level: 10/21/02 11*4882a593Smuzhiyun * BCM1280 specification level: 11/24/03 12*4882a593Smuzhiyun * 13*4882a593Smuzhiyun ********************************************************************* 14*4882a593Smuzhiyun * 15*4882a593Smuzhiyun * Copyright 2000,2001,2002,2003 16*4882a593Smuzhiyun * Broadcom Corporation. All rights reserved. 17*4882a593Smuzhiyun * 18*4882a593Smuzhiyun ********************************************************************* */ 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun #ifndef _SB1250_SMBUS_H 22*4882a593Smuzhiyun #define _SB1250_SMBUS_H 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun #include <asm/sibyte/sb1250_defs.h> 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun /* 27*4882a593Smuzhiyun * SMBus Clock Frequency Register (Table 14-2) 28*4882a593Smuzhiyun */ 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun #define S_SMB_FREQ_DIV 0 31*4882a593Smuzhiyun #define M_SMB_FREQ_DIV _SB_MAKEMASK(13, S_SMB_FREQ_DIV) 32*4882a593Smuzhiyun #define V_SMB_FREQ_DIV(x) _SB_MAKEVALUE(x, S_SMB_FREQ_DIV) 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun #define K_SMB_FREQ_400KHZ 0x1F 35*4882a593Smuzhiyun #define K_SMB_FREQ_100KHZ 0x7D 36*4882a593Smuzhiyun #define K_SMB_FREQ_10KHZ 1250 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun #define S_SMB_CMD 0 39*4882a593Smuzhiyun #define M_SMB_CMD _SB_MAKEMASK(8, S_SMB_CMD) 40*4882a593Smuzhiyun #define V_SMB_CMD(x) _SB_MAKEVALUE(x, S_SMB_CMD) 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun /* 43*4882a593Smuzhiyun * SMBus control register (Table 14-4) 44*4882a593Smuzhiyun */ 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun #define M_SMB_ERR_INTR _SB_MAKEMASK1(0) 47*4882a593Smuzhiyun #define M_SMB_FINISH_INTR _SB_MAKEMASK1(1) 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun #define S_SMB_DATA_OUT 4 50*4882a593Smuzhiyun #define M_SMB_DATA_OUT _SB_MAKEMASK1(S_SMB_DATA_OUT) 51*4882a593Smuzhiyun #define V_SMB_DATA_OUT(x) _SB_MAKEVALUE(x, S_SMB_DATA_OUT) 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun #define M_SMB_DATA_DIR _SB_MAKEMASK1(5) 54*4882a593Smuzhiyun #define M_SMB_DATA_DIR_OUTPUT M_SMB_DATA_DIR 55*4882a593Smuzhiyun #define M_SMB_CLK_OUT _SB_MAKEMASK1(6) 56*4882a593Smuzhiyun #define M_SMB_DIRECT_ENABLE _SB_MAKEMASK1(7) 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun /* 59*4882a593Smuzhiyun * SMBus status registers (Table 14-5) 60*4882a593Smuzhiyun */ 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun #define M_SMB_BUSY _SB_MAKEMASK1(0) 63*4882a593Smuzhiyun #define M_SMB_ERROR _SB_MAKEMASK1(1) 64*4882a593Smuzhiyun #define M_SMB_ERROR_TYPE _SB_MAKEMASK1(2) 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 67*4882a593Smuzhiyun #define S_SMB_SCL_IN 5 68*4882a593Smuzhiyun #define M_SMB_SCL_IN _SB_MAKEMASK1(S_SMB_SCL_IN) 69*4882a593Smuzhiyun #define V_SMB_SCL_IN(x) _SB_MAKEVALUE(x, S_SMB_SCL_IN) 70*4882a593Smuzhiyun #define G_SMB_SCL_IN(x) _SB_GETVALUE(x, S_SMB_SCL_IN, M_SMB_SCL_IN) 71*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */ 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun #define S_SMB_REF 6 74*4882a593Smuzhiyun #define M_SMB_REF _SB_MAKEMASK1(S_SMB_REF) 75*4882a593Smuzhiyun #define V_SMB_REF(x) _SB_MAKEVALUE(x, S_SMB_REF) 76*4882a593Smuzhiyun #define G_SMB_REF(x) _SB_GETVALUE(x, S_SMB_REF, M_SMB_REF) 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun #define S_SMB_DATA_IN 7 79*4882a593Smuzhiyun #define M_SMB_DATA_IN _SB_MAKEMASK1(S_SMB_DATA_IN) 80*4882a593Smuzhiyun #define V_SMB_DATA_IN(x) _SB_MAKEVALUE(x, S_SMB_DATA_IN) 81*4882a593Smuzhiyun #define G_SMB_DATA_IN(x) _SB_GETVALUE(x, S_SMB_DATA_IN, M_SMB_DATA_IN) 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun /* 84*4882a593Smuzhiyun * SMBus Start/Command registers (Table 14-9) 85*4882a593Smuzhiyun */ 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun #define S_SMB_ADDR 0 88*4882a593Smuzhiyun #define M_SMB_ADDR _SB_MAKEMASK(7, S_SMB_ADDR) 89*4882a593Smuzhiyun #define V_SMB_ADDR(x) _SB_MAKEVALUE(x, S_SMB_ADDR) 90*4882a593Smuzhiyun #define G_SMB_ADDR(x) _SB_GETVALUE(x, S_SMB_ADDR, M_SMB_ADDR) 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun #define M_SMB_QDATA _SB_MAKEMASK1(7) 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun #define S_SMB_TT 8 95*4882a593Smuzhiyun #define M_SMB_TT _SB_MAKEMASK(3, S_SMB_TT) 96*4882a593Smuzhiyun #define V_SMB_TT(x) _SB_MAKEVALUE(x, S_SMB_TT) 97*4882a593Smuzhiyun #define G_SMB_TT(x) _SB_GETVALUE(x, S_SMB_TT, M_SMB_TT) 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun #define K_SMB_TT_WR1BYTE 0 100*4882a593Smuzhiyun #define K_SMB_TT_WR2BYTE 1 101*4882a593Smuzhiyun #define K_SMB_TT_WR3BYTE 2 102*4882a593Smuzhiyun #define K_SMB_TT_CMD_RD1BYTE 3 103*4882a593Smuzhiyun #define K_SMB_TT_CMD_RD2BYTE 4 104*4882a593Smuzhiyun #define K_SMB_TT_RD1BYTE 5 105*4882a593Smuzhiyun #define K_SMB_TT_QUICKCMD 6 106*4882a593Smuzhiyun #define K_SMB_TT_EEPROMREAD 7 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun #define V_SMB_TT_WR1BYTE V_SMB_TT(K_SMB_TT_WR1BYTE) 109*4882a593Smuzhiyun #define V_SMB_TT_WR2BYTE V_SMB_TT(K_SMB_TT_WR2BYTE) 110*4882a593Smuzhiyun #define V_SMB_TT_WR3BYTE V_SMB_TT(K_SMB_TT_WR3BYTE) 111*4882a593Smuzhiyun #define V_SMB_TT_CMD_RD1BYTE V_SMB_TT(K_SMB_TT_CMD_RD1BYTE) 112*4882a593Smuzhiyun #define V_SMB_TT_CMD_RD2BYTE V_SMB_TT(K_SMB_TT_CMD_RD2BYTE) 113*4882a593Smuzhiyun #define V_SMB_TT_RD1BYTE V_SMB_TT(K_SMB_TT_RD1BYTE) 114*4882a593Smuzhiyun #define V_SMB_TT_QUICKCMD V_SMB_TT(K_SMB_TT_QUICKCMD) 115*4882a593Smuzhiyun #define V_SMB_TT_EEPROMREAD V_SMB_TT(K_SMB_TT_EEPROMREAD) 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun #define M_SMB_PEC _SB_MAKEMASK1(15) 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun /* 120*4882a593Smuzhiyun * SMBus Data Register (Table 14-6) and SMBus Extra Register (Table 14-7) 121*4882a593Smuzhiyun */ 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun #define S_SMB_LB 0 124*4882a593Smuzhiyun #define M_SMB_LB _SB_MAKEMASK(8, S_SMB_LB) 125*4882a593Smuzhiyun #define V_SMB_LB(x) _SB_MAKEVALUE(x, S_SMB_LB) 126*4882a593Smuzhiyun 127*4882a593Smuzhiyun #define S_SMB_MB 8 128*4882a593Smuzhiyun #define M_SMB_MB _SB_MAKEMASK(8, S_SMB_MB) 129*4882a593Smuzhiyun #define V_SMB_MB(x) _SB_MAKEVALUE(x, S_SMB_MB) 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun /* 133*4882a593Smuzhiyun * SMBus Packet Error Check register (Table 14-8) 134*4882a593Smuzhiyun */ 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun #define S_SPEC_PEC 0 137*4882a593Smuzhiyun #define M_SPEC_PEC _SB_MAKEMASK(8, S_SPEC_PEC) 138*4882a593Smuzhiyun #define V_SPEC_MB(x) _SB_MAKEVALUE(x, S_SPEC_PEC) 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun #define S_SMB_CMDH 8 144*4882a593Smuzhiyun #define M_SMB_CMDH _SB_MAKEMASK(8, S_SMB_CMDH) 145*4882a593Smuzhiyun #define V_SMB_CMDH(x) _SB_MAKEVALUE(x, S_SMB_CMDH) 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun #define M_SMB_EXTEND _SB_MAKEMASK1(14) 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun #define S_SMB_DFMT 8 150*4882a593Smuzhiyun #define M_SMB_DFMT _SB_MAKEMASK(3, S_SMB_DFMT) 151*4882a593Smuzhiyun #define V_SMB_DFMT(x) _SB_MAKEVALUE(x, S_SMB_DFMT) 152*4882a593Smuzhiyun #define G_SMB_DFMT(x) _SB_GETVALUE(x, S_SMB_DFMT, M_SMB_DFMT) 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun #define K_SMB_DFMT_1BYTE 0 155*4882a593Smuzhiyun #define K_SMB_DFMT_2BYTE 1 156*4882a593Smuzhiyun #define K_SMB_DFMT_3BYTE 2 157*4882a593Smuzhiyun #define K_SMB_DFMT_4BYTE 3 158*4882a593Smuzhiyun #define K_SMB_DFMT_NODATA 4 159*4882a593Smuzhiyun #define K_SMB_DFMT_CMD4BYTE 5 160*4882a593Smuzhiyun #define K_SMB_DFMT_CMD5BYTE 6 161*4882a593Smuzhiyun #define K_SMB_DFMT_RESERVED 7 162*4882a593Smuzhiyun 163*4882a593Smuzhiyun #define V_SMB_DFMT_1BYTE V_SMB_DFMT(K_SMB_DFMT_1BYTE) 164*4882a593Smuzhiyun #define V_SMB_DFMT_2BYTE V_SMB_DFMT(K_SMB_DFMT_2BYTE) 165*4882a593Smuzhiyun #define V_SMB_DFMT_3BYTE V_SMB_DFMT(K_SMB_DFMT_3BYTE) 166*4882a593Smuzhiyun #define V_SMB_DFMT_4BYTE V_SMB_DFMT(K_SMB_DFMT_4BYTE) 167*4882a593Smuzhiyun #define V_SMB_DFMT_NODATA V_SMB_DFMT(K_SMB_DFMT_NODATA) 168*4882a593Smuzhiyun #define V_SMB_DFMT_CMD4BYTE V_SMB_DFMT(K_SMB_DFMT_CMD4BYTE) 169*4882a593Smuzhiyun #define V_SMB_DFMT_CMD5BYTE V_SMB_DFMT(K_SMB_DFMT_CMD5BYTE) 170*4882a593Smuzhiyun #define V_SMB_DFMT_RESERVED V_SMB_DFMT(K_SMB_DFMT_RESERVED) 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun #define S_SMB_AFMT 11 173*4882a593Smuzhiyun #define M_SMB_AFMT _SB_MAKEMASK(2, S_SMB_AFMT) 174*4882a593Smuzhiyun #define V_SMB_AFMT(x) _SB_MAKEVALUE(x, S_SMB_AFMT) 175*4882a593Smuzhiyun #define G_SMB_AFMT(x) _SB_GETVALUE(x, S_SMB_AFMT, M_SMB_AFMT) 176*4882a593Smuzhiyun 177*4882a593Smuzhiyun #define K_SMB_AFMT_NONE 0 178*4882a593Smuzhiyun #define K_SMB_AFMT_ADDR 1 179*4882a593Smuzhiyun #define K_SMB_AFMT_ADDR_CMD1BYTE 2 180*4882a593Smuzhiyun #define K_SMB_AFMT_ADDR_CMD2BYTE 3 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun #define V_SMB_AFMT_NONE V_SMB_AFMT(K_SMB_AFMT_NONE) 183*4882a593Smuzhiyun #define V_SMB_AFMT_ADDR V_SMB_AFMT(K_SMB_AFMT_ADDR) 184*4882a593Smuzhiyun #define V_SMB_AFMT_ADDR_CMD1BYTE V_SMB_AFMT(K_SMB_AFMT_ADDR_CMD1BYTE) 185*4882a593Smuzhiyun #define V_SMB_AFMT_ADDR_CMD2BYTE V_SMB_AFMT(K_SMB_AFMT_ADDR_CMD2BYTE) 186*4882a593Smuzhiyun 187*4882a593Smuzhiyun #define M_SMB_DIR _SB_MAKEMASK1(13) 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 || 1480 */ 190*4882a593Smuzhiyun 191*4882a593Smuzhiyun #endif 192