Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*  *********************************************************************
0003     *  SB1250 Board Support Package
0004     *
0005     *  SMBUS Constants              File: sb1250_smbus.h
0006     *
0007     *  This module contains constants and macros useful for
0008     *  manipulating the SB1250's SMbus devices.
0009     *
0010     *  SB1250 specification level:  10/21/02
0011     *  BCM1280 specification level:  11/24/03
0012     *
0013     *********************************************************************
0014     *
0015     *  Copyright 2000,2001,2002,2003
0016     *  Broadcom Corporation. All rights reserved.
0017     *
0018     ********************************************************************* */
0019 
0020 
0021 #ifndef _SB1250_SMBUS_H
0022 #define _SB1250_SMBUS_H
0023 
0024 #include <asm/sibyte/sb1250_defs.h>
0025 
0026 /*
0027  * SMBus Clock Frequency Register (Table 14-2)
0028  */
0029 
0030 #define S_SMB_FREQ_DIV          0
0031 #define M_SMB_FREQ_DIV          _SB_MAKEMASK(13, S_SMB_FREQ_DIV)
0032 #define V_SMB_FREQ_DIV(x)       _SB_MAKEVALUE(x, S_SMB_FREQ_DIV)
0033 
0034 #define K_SMB_FREQ_400KHZ       0x1F
0035 #define K_SMB_FREQ_100KHZ       0x7D
0036 #define K_SMB_FREQ_10KHZ        1250
0037 
0038 #define S_SMB_CMD           0
0039 #define M_SMB_CMD           _SB_MAKEMASK(8, S_SMB_CMD)
0040 #define V_SMB_CMD(x)            _SB_MAKEVALUE(x, S_SMB_CMD)
0041 
0042 /*
0043  * SMBus control register (Table 14-4)
0044  */
0045 
0046 #define M_SMB_ERR_INTR          _SB_MAKEMASK1(0)
0047 #define M_SMB_FINISH_INTR       _SB_MAKEMASK1(1)
0048 
0049 #define S_SMB_DATA_OUT          4
0050 #define M_SMB_DATA_OUT          _SB_MAKEMASK1(S_SMB_DATA_OUT)
0051 #define V_SMB_DATA_OUT(x)       _SB_MAKEVALUE(x, S_SMB_DATA_OUT)
0052 
0053 #define M_SMB_DATA_DIR          _SB_MAKEMASK1(5)
0054 #define M_SMB_DATA_DIR_OUTPUT       M_SMB_DATA_DIR
0055 #define M_SMB_CLK_OUT           _SB_MAKEMASK1(6)
0056 #define M_SMB_DIRECT_ENABLE     _SB_MAKEMASK1(7)
0057 
0058 /*
0059  * SMBus status registers (Table 14-5)
0060  */
0061 
0062 #define M_SMB_BUSY          _SB_MAKEMASK1(0)
0063 #define M_SMB_ERROR         _SB_MAKEMASK1(1)
0064 #define M_SMB_ERROR_TYPE        _SB_MAKEMASK1(2)
0065 
0066 #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
0067 #define S_SMB_SCL_IN            5
0068 #define M_SMB_SCL_IN            _SB_MAKEMASK1(S_SMB_SCL_IN)
0069 #define V_SMB_SCL_IN(x)         _SB_MAKEVALUE(x, S_SMB_SCL_IN)
0070 #define G_SMB_SCL_IN(x)         _SB_GETVALUE(x, S_SMB_SCL_IN, M_SMB_SCL_IN)
0071 #endif /* 1250 PASS3 || 112x PASS1 || 1480 */
0072 
0073 #define S_SMB_REF           6
0074 #define M_SMB_REF           _SB_MAKEMASK1(S_SMB_REF)
0075 #define V_SMB_REF(x)            _SB_MAKEVALUE(x, S_SMB_REF)
0076 #define G_SMB_REF(x)            _SB_GETVALUE(x, S_SMB_REF, M_SMB_REF)
0077 
0078 #define S_SMB_DATA_IN           7
0079 #define M_SMB_DATA_IN           _SB_MAKEMASK1(S_SMB_DATA_IN)
0080 #define V_SMB_DATA_IN(x)        _SB_MAKEVALUE(x, S_SMB_DATA_IN)
0081 #define G_SMB_DATA_IN(x)        _SB_GETVALUE(x, S_SMB_DATA_IN, M_SMB_DATA_IN)
0082 
0083 /*
0084  * SMBus Start/Command registers (Table 14-9)
0085  */
0086 
0087 #define S_SMB_ADDR          0
0088 #define M_SMB_ADDR          _SB_MAKEMASK(7, S_SMB_ADDR)
0089 #define V_SMB_ADDR(x)           _SB_MAKEVALUE(x, S_SMB_ADDR)
0090 #define G_SMB_ADDR(x)           _SB_GETVALUE(x, S_SMB_ADDR, M_SMB_ADDR)
0091 
0092 #define M_SMB_QDATA         _SB_MAKEMASK1(7)
0093 
0094 #define S_SMB_TT            8
0095 #define M_SMB_TT            _SB_MAKEMASK(3, S_SMB_TT)
0096 #define V_SMB_TT(x)         _SB_MAKEVALUE(x, S_SMB_TT)
0097 #define G_SMB_TT(x)         _SB_GETVALUE(x, S_SMB_TT, M_SMB_TT)
0098 
0099 #define K_SMB_TT_WR1BYTE        0
0100 #define K_SMB_TT_WR2BYTE        1
0101 #define K_SMB_TT_WR3BYTE        2
0102 #define K_SMB_TT_CMD_RD1BYTE        3
0103 #define K_SMB_TT_CMD_RD2BYTE        4
0104 #define K_SMB_TT_RD1BYTE        5
0105 #define K_SMB_TT_QUICKCMD       6
0106 #define K_SMB_TT_EEPROMREAD     7
0107 
0108 #define V_SMB_TT_WR1BYTE        V_SMB_TT(K_SMB_TT_WR1BYTE)
0109 #define V_SMB_TT_WR2BYTE        V_SMB_TT(K_SMB_TT_WR2BYTE)
0110 #define V_SMB_TT_WR3BYTE        V_SMB_TT(K_SMB_TT_WR3BYTE)
0111 #define V_SMB_TT_CMD_RD1BYTE        V_SMB_TT(K_SMB_TT_CMD_RD1BYTE)
0112 #define V_SMB_TT_CMD_RD2BYTE        V_SMB_TT(K_SMB_TT_CMD_RD2BYTE)
0113 #define V_SMB_TT_RD1BYTE        V_SMB_TT(K_SMB_TT_RD1BYTE)
0114 #define V_SMB_TT_QUICKCMD       V_SMB_TT(K_SMB_TT_QUICKCMD)
0115 #define V_SMB_TT_EEPROMREAD     V_SMB_TT(K_SMB_TT_EEPROMREAD)
0116 
0117 #define M_SMB_PEC           _SB_MAKEMASK1(15)
0118 
0119 /*
0120  * SMBus Data Register (Table 14-6) and SMBus Extra Register (Table 14-7)
0121  */
0122 
0123 #define S_SMB_LB            0
0124 #define M_SMB_LB            _SB_MAKEMASK(8, S_SMB_LB)
0125 #define V_SMB_LB(x)         _SB_MAKEVALUE(x, S_SMB_LB)
0126 
0127 #define S_SMB_MB            8
0128 #define M_SMB_MB            _SB_MAKEMASK(8, S_SMB_MB)
0129 #define V_SMB_MB(x)         _SB_MAKEVALUE(x, S_SMB_MB)
0130 
0131 
0132 /*
0133  * SMBus Packet Error Check register (Table 14-8)
0134  */
0135 
0136 #define S_SPEC_PEC          0
0137 #define M_SPEC_PEC          _SB_MAKEMASK(8, S_SPEC_PEC)
0138 #define V_SPEC_MB(x)            _SB_MAKEVALUE(x, S_SPEC_PEC)
0139 
0140 
0141 #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
0142 
0143 #define S_SMB_CMDH          8
0144 #define M_SMB_CMDH          _SB_MAKEMASK(8, S_SMB_CMDH)
0145 #define V_SMB_CMDH(x)           _SB_MAKEVALUE(x, S_SMB_CMDH)
0146 
0147 #define M_SMB_EXTEND            _SB_MAKEMASK1(14)
0148 
0149 #define S_SMB_DFMT          8
0150 #define M_SMB_DFMT          _SB_MAKEMASK(3, S_SMB_DFMT)
0151 #define V_SMB_DFMT(x)           _SB_MAKEVALUE(x, S_SMB_DFMT)
0152 #define G_SMB_DFMT(x)           _SB_GETVALUE(x, S_SMB_DFMT, M_SMB_DFMT)
0153 
0154 #define K_SMB_DFMT_1BYTE        0
0155 #define K_SMB_DFMT_2BYTE        1
0156 #define K_SMB_DFMT_3BYTE        2
0157 #define K_SMB_DFMT_4BYTE        3
0158 #define K_SMB_DFMT_NODATA       4
0159 #define K_SMB_DFMT_CMD4BYTE     5
0160 #define K_SMB_DFMT_CMD5BYTE     6
0161 #define K_SMB_DFMT_RESERVED     7
0162 
0163 #define V_SMB_DFMT_1BYTE        V_SMB_DFMT(K_SMB_DFMT_1BYTE)
0164 #define V_SMB_DFMT_2BYTE        V_SMB_DFMT(K_SMB_DFMT_2BYTE)
0165 #define V_SMB_DFMT_3BYTE        V_SMB_DFMT(K_SMB_DFMT_3BYTE)
0166 #define V_SMB_DFMT_4BYTE        V_SMB_DFMT(K_SMB_DFMT_4BYTE)
0167 #define V_SMB_DFMT_NODATA       V_SMB_DFMT(K_SMB_DFMT_NODATA)
0168 #define V_SMB_DFMT_CMD4BYTE     V_SMB_DFMT(K_SMB_DFMT_CMD4BYTE)
0169 #define V_SMB_DFMT_CMD5BYTE     V_SMB_DFMT(K_SMB_DFMT_CMD5BYTE)
0170 #define V_SMB_DFMT_RESERVED     V_SMB_DFMT(K_SMB_DFMT_RESERVED)
0171 
0172 #define S_SMB_AFMT          11
0173 #define M_SMB_AFMT          _SB_MAKEMASK(2, S_SMB_AFMT)
0174 #define V_SMB_AFMT(x)           _SB_MAKEVALUE(x, S_SMB_AFMT)
0175 #define G_SMB_AFMT(x)           _SB_GETVALUE(x, S_SMB_AFMT, M_SMB_AFMT)
0176 
0177 #define K_SMB_AFMT_NONE         0
0178 #define K_SMB_AFMT_ADDR         1
0179 #define K_SMB_AFMT_ADDR_CMD1BYTE    2
0180 #define K_SMB_AFMT_ADDR_CMD2BYTE    3
0181 
0182 #define V_SMB_AFMT_NONE         V_SMB_AFMT(K_SMB_AFMT_NONE)
0183 #define V_SMB_AFMT_ADDR         V_SMB_AFMT(K_SMB_AFMT_ADDR)
0184 #define V_SMB_AFMT_ADDR_CMD1BYTE    V_SMB_AFMT(K_SMB_AFMT_ADDR_CMD1BYTE)
0185 #define V_SMB_AFMT_ADDR_CMD2BYTE    V_SMB_AFMT(K_SMB_AFMT_ADDR_CMD2BYTE)
0186 
0187 #define M_SMB_DIR           _SB_MAKEMASK1(13)
0188 
0189 #endif /* 1250 PASS2 || 112x PASS1 || 1480 */
0190 
0191 #endif