blob: c419482218375dd2acab5981b7d7a795ae73a7dd [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/* *********************************************************************
2 * SB1250 Board Support Package
Ralf Baechle42a3b4f2005-09-03 15:56:17 -07003 *
Linus Torvalds1da177e2005-04-16 15:20:36 -07004 * SMBUS Constants File: sb1250_smbus.h
Ralf Baechle42a3b4f2005-09-03 15:56:17 -07005 *
6 * This module contains constants and macros useful for
Linus Torvalds1da177e2005-04-16 15:20:36 -07007 * manipulating the SB1250's SMbus devices.
Ralf Baechle42a3b4f2005-09-03 15:56:17 -07008 *
Linus Torvalds1da177e2005-04-16 15:20:36 -07009 * SB1250 specification level: 01/02/2002
Ralf Baechle42a3b4f2005-09-03 15:56:17 -070010 *
Linus Torvalds1da177e2005-04-16 15:20:36 -070011 * Author: Mitch Lichtenberg
Ralf Baechle42a3b4f2005-09-03 15:56:17 -070012 *
13 *********************************************************************
Linus Torvalds1da177e2005-04-16 15:20:36 -070014 *
15 * Copyright 2000,2001,2002,2003
16 * Broadcom Corporation. All rights reserved.
Ralf Baechle42a3b4f2005-09-03 15:56:17 -070017 *
18 * This program is free software; you can redistribute it and/or
19 * modify it under the terms of the GNU General Public License as
20 * published by the Free Software Foundation; either version 2 of
Linus Torvalds1da177e2005-04-16 15:20:36 -070021 * the License, or (at your option) any later version.
22 *
23 * This program is distributed in the hope that it will be useful,
24 * but WITHOUT ANY WARRANTY; without even the implied warranty of
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 * GNU General Public License for more details.
27 *
28 * You should have received a copy of the GNU General Public License
29 * along with this program; if not, write to the Free Software
Ralf Baechle42a3b4f2005-09-03 15:56:17 -070030 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
Linus Torvalds1da177e2005-04-16 15:20:36 -070031 * MA 02111-1307 USA
32 ********************************************************************* */
33
34
35#ifndef _SB1250_SMBUS_H
36#define _SB1250_SMBUS_H
37
38#include "sb1250_defs.h"
39
40/*
41 * SMBus Clock Frequency Register (Table 14-2)
42 */
43
44#define S_SMB_FREQ_DIV 0
45#define M_SMB_FREQ_DIV _SB_MAKEMASK(13,S_SMB_FREQ_DIV)
46#define V_SMB_FREQ_DIV(x) _SB_MAKEVALUE(x,S_SMB_FREQ_DIV)
47
48#define K_SMB_FREQ_400KHZ 0x1F
49#define K_SMB_FREQ_100KHZ 0x7D
Andrew Isaacson4cbf2be2005-10-19 23:55:11 -070050#define K_SMB_FREQ_10KHZ 1250
Linus Torvalds1da177e2005-04-16 15:20:36 -070051
52#define S_SMB_CMD 0
53#define M_SMB_CMD _SB_MAKEMASK(8,S_SMB_CMD)
54#define V_SMB_CMD(x) _SB_MAKEVALUE(x,S_SMB_CMD)
55
56/*
57 * SMBus control register (Table 14-4)
58 */
59
60#define M_SMB_ERR_INTR _SB_MAKEMASK1(0)
61#define M_SMB_FINISH_INTR _SB_MAKEMASK1(1)
Andrew Isaacson4cbf2be2005-10-19 23:55:11 -070062
63#define S_SMB_DATA_OUT 4
64#define M_SMB_DATA_OUT _SB_MAKEMASK1(S_SMB_DATA_OUT)
65#define V_SMB_DATA_OUT(x) _SB_MAKEVALUE(x,S_SMB_DATA_OUT)
66
Linus Torvalds1da177e2005-04-16 15:20:36 -070067#define M_SMB_DATA_DIR _SB_MAKEMASK1(5)
68#define M_SMB_DATA_DIR_OUTPUT M_SMB_DATA_DIR
69#define M_SMB_CLK_OUT _SB_MAKEMASK1(6)
70#define M_SMB_DIRECT_ENABLE _SB_MAKEMASK1(7)
71
72/*
73 * SMBus status registers (Table 14-5)
74 */
75
76#define M_SMB_BUSY _SB_MAKEMASK1(0)
77#define M_SMB_ERROR _SB_MAKEMASK1(1)
78#define M_SMB_ERROR_TYPE _SB_MAKEMASK1(2)
Andrew Isaacson4cbf2be2005-10-19 23:55:11 -070079
80#if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
81#define S_SMB_SCL_IN 5
82#define M_SMB_SCL_IN _SB_MAKEMASK1(S_SMB_SCL_IN)
83#define V_SMB_SCL_IN(x) _SB_MAKEVALUE(x,S_SMB_SCL_IN)
84#define G_SMB_SCL_IN(x) _SB_GETVALUE(x,S_SMB_SCL_IN,M_SMB_SCL_IN)
85#endif /* 1250 PASS3 || 112x PASS1 || 1480 */
86
87#define S_SMB_REF 6
88#define M_SMB_REF _SB_MAKEMASK1(S_SMB_REF)
89#define V_SMB_REF(x) _SB_MAKEVALUE(x,S_SMB_REF)
90#define G_SMB_REF(x) _SB_GETVALUE(x,S_SMB_REF,M_SMB_REF)
91
92#define S_SMB_DATA_IN 7
93#define M_SMB_DATA_IN _SB_MAKEMASK1(S_SMB_DATA_IN)
94#define V_SMB_DATA_IN(x) _SB_MAKEVALUE(x,S_SMB_DATA_IN)
95#define G_SMB_DATA_IN(x) _SB_GETVALUE(x,S_SMB_DATA_IN,M_SMB_DATA_IN)
Linus Torvalds1da177e2005-04-16 15:20:36 -070096
97/*
98 * SMBus Start/Command registers (Table 14-9)
99 */
100
101#define S_SMB_ADDR 0
102#define M_SMB_ADDR _SB_MAKEMASK(7,S_SMB_ADDR)
103#define V_SMB_ADDR(x) _SB_MAKEVALUE(x,S_SMB_ADDR)
104#define G_SMB_ADDR(x) _SB_GETVALUE(x,S_SMB_ADDR,M_SMB_ADDR)
105
106#define M_SMB_QDATA _SB_MAKEMASK1(7)
107
108#define S_SMB_TT 8
109#define M_SMB_TT _SB_MAKEMASK(3,S_SMB_TT)
110#define V_SMB_TT(x) _SB_MAKEVALUE(x,S_SMB_TT)
111#define G_SMB_TT(x) _SB_GETVALUE(x,S_SMB_TT,M_SMB_TT)
112
113#define K_SMB_TT_WR1BYTE 0
114#define K_SMB_TT_WR2BYTE 1
115#define K_SMB_TT_WR3BYTE 2
116#define K_SMB_TT_CMD_RD1BYTE 3
117#define K_SMB_TT_CMD_RD2BYTE 4
118#define K_SMB_TT_RD1BYTE 5
119#define K_SMB_TT_QUICKCMD 6
120#define K_SMB_TT_EEPROMREAD 7
121
122#define V_SMB_TT_WR1BYTE V_SMB_TT(K_SMB_TT_WR1BYTE)
123#define V_SMB_TT_WR2BYTE V_SMB_TT(K_SMB_TT_WR2BYTE)
124#define V_SMB_TT_WR3BYTE V_SMB_TT(K_SMB_TT_WR3BYTE)
125#define V_SMB_TT_CMD_RD1BYTE V_SMB_TT(K_SMB_TT_CMD_RD1BYTE)
126#define V_SMB_TT_CMD_RD2BYTE V_SMB_TT(K_SMB_TT_CMD_RD2BYTE)
127#define V_SMB_TT_RD1BYTE V_SMB_TT(K_SMB_TT_RD1BYTE)
128#define V_SMB_TT_QUICKCMD V_SMB_TT(K_SMB_TT_QUICKCMD)
129#define V_SMB_TT_EEPROMREAD V_SMB_TT(K_SMB_TT_EEPROMREAD)
130
131#define M_SMB_PEC _SB_MAKEMASK1(15)
132
133/*
134 * SMBus Data Register (Table 14-6) and SMBus Extra Register (Table 14-7)
135 */
136
137#define S_SMB_LB 0
138#define M_SMB_LB _SB_MAKEMASK(8,S_SMB_LB)
139#define V_SMB_LB(x) _SB_MAKEVALUE(x,S_SMB_LB)
140
141#define S_SMB_MB 8
142#define M_SMB_MB _SB_MAKEMASK(8,S_SMB_MB)
143#define V_SMB_MB(x) _SB_MAKEVALUE(x,S_SMB_MB)
144
145
146/*
147 * SMBus Packet Error Check register (Table 14-8)
148 */
149
150#define S_SPEC_PEC 0
151#define M_SPEC_PEC _SB_MAKEMASK(8,S_SPEC_PEC)
152#define V_SPEC_MB(x) _SB_MAKEVALUE(x,S_SPEC_PEC)
153
154
Andrew Isaacson4cbf2be2005-10-19 23:55:11 -0700155#if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700156
157#define S_SMB_CMDH 8
Andrew Isaacson4cbf2be2005-10-19 23:55:11 -0700158#define M_SMB_CMDH _SB_MAKEMASK(8,S_SMB_CMDH)
159#define V_SMB_CMDH(x) _SB_MAKEVALUE(x,S_SMB_CMDH)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700160
161#define M_SMB_EXTEND _SB_MAKEMASK1(14)
162
Linus Torvalds1da177e2005-04-16 15:20:36 -0700163#define S_SMB_DFMT 8
164#define M_SMB_DFMT _SB_MAKEMASK(3,S_SMB_DFMT)
165#define V_SMB_DFMT(x) _SB_MAKEVALUE(x,S_SMB_DFMT)
166#define G_SMB_DFMT(x) _SB_GETVALUE(x,S_SMB_DFMT,M_SMB_DFMT)
167
168#define K_SMB_DFMT_1BYTE 0
169#define K_SMB_DFMT_2BYTE 1
170#define K_SMB_DFMT_3BYTE 2
171#define K_SMB_DFMT_4BYTE 3
172#define K_SMB_DFMT_NODATA 4
173#define K_SMB_DFMT_CMD4BYTE 5
174#define K_SMB_DFMT_CMD5BYTE 6
175#define K_SMB_DFMT_RESERVED 7
176
177#define V_SMB_DFMT_1BYTE V_SMB_DFMT(K_SMB_DFMT_1BYTE)
178#define V_SMB_DFMT_2BYTE V_SMB_DFMT(K_SMB_DFMT_2BYTE)
179#define V_SMB_DFMT_3BYTE V_SMB_DFMT(K_SMB_DFMT_3BYTE)
180#define V_SMB_DFMT_4BYTE V_SMB_DFMT(K_SMB_DFMT_4BYTE)
181#define V_SMB_DFMT_NODATA V_SMB_DFMT(K_SMB_DFMT_NODATA)
182#define V_SMB_DFMT_CMD4BYTE V_SMB_DFMT(K_SMB_DFMT_CMD4BYTE)
183#define V_SMB_DFMT_CMD5BYTE V_SMB_DFMT(K_SMB_DFMT_CMD5BYTE)
184#define V_SMB_DFMT_RESERVED V_SMB_DFMT(K_SMB_DFMT_RESERVED)
185
Andrew Isaacson4cbf2be2005-10-19 23:55:11 -0700186#define S_SMB_AFMT 11
187#define M_SMB_AFMT _SB_MAKEMASK(2,S_SMB_AFMT)
188#define V_SMB_AFMT(x) _SB_MAKEVALUE(x,S_SMB_AFMT)
189#define G_SMB_AFMT(x) _SB_GETVALUE(x,S_SMB_AFMT,M_SMB_AFMT)
190
191#define K_SMB_AFMT_NONE 0
192#define K_SMB_AFMT_ADDR 1
193#define K_SMB_AFMT_ADDR_CMD1BYTE 2
194#define K_SMB_AFMT_ADDR_CMD2BYTE 3
195
196#define V_SMB_AFMT_NONE V_SMB_AFMT(K_SMB_AFMT_NONE)
197#define V_SMB_AFMT_ADDR V_SMB_AFMT(K_SMB_AFMT_ADDR)
198#define V_SMB_AFMT_ADDR_CMD1BYTE V_SMB_AFMT(K_SMB_AFMT_ADDR_CMD1BYTE)
199#define V_SMB_AFMT_ADDR_CMD2BYTE V_SMB_AFMT(K_SMB_AFMT_ADDR_CMD2BYTE)
200
201#define M_SMB_DIR _SB_MAKEMASK1(13)
202
203#endif /* 1250 PASS2 || 112x PASS1 || 1480 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700204
205#endif