]> git.ipfire.org Git - people/ms/u-boot.git/blame - arch/powerpc/include/asm/ppc4xx-i2c.h
i2c, ppc4xx_i2c: switch to new multibus/multiadapter support
[people/ms/u-boot.git] / arch / powerpc / include / asm / ppc4xx-i2c.h
CommitLineData
79b2d0bb 1/*
eb5eb2b0 2 * (C) Copyright 2007-2009
79b2d0bb
SR
3 * Stefan Roese, DENX Software Engineering, sr@denx.de.
4 *
5 * See file CREDITS for list of people who contributed to this
6 * project.
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License as
10 * published by the Free Software Foundation; either version 2 of
11 * the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21 * MA 02111-1307 USA
22 */
23
24#ifndef _4xx_i2c_h_
25#define _4xx_i2c_h_
26
27#define IIC_OK 0
28#define IIC_NOK 1
29#define IIC_NOK_LA 2 /* Lost arbitration */
30#define IIC_NOK_ICT 3 /* Incomplete transfer */
31#define IIC_NOK_XFRA 4 /* Transfer aborted */
32#define IIC_NOK_DATA 5 /* No data in buffer */
33#define IIC_NOK_TOUT 6 /* Transfer timeout */
34
35#define IIC_TIMEOUT 1 /* 1 second */
36
eb5eb2b0
SR
37struct ppc4xx_i2c {
38 u8 mdbuf;
39 u8 res1;
40 u8 sdbuf;
41 u8 res2;
42 u8 lmadr;
43 u8 hmadr;
44 u8 cntl;
45 u8 mdcntl;
46 u8 sts;
47 u8 extsts;
48 u8 lsadr;
49 u8 hsadr;
50 u8 clkdiv;
51 u8 intrmsk;
52 u8 xfrcnt;
53 u8 xtcntlss;
54 u8 directcntl;
55 u8 intr;
56};
79b2d0bb
SR
57
58/* MDCNTL Register Bit definition */
59#define IIC_MDCNTL_HSCL 0x01
60#define IIC_MDCNTL_EUBS 0x02
61#define IIC_MDCNTL_EINT 0x04
62#define IIC_MDCNTL_ESM 0x08
63#define IIC_MDCNTL_FSM 0x10
64#define IIC_MDCNTL_EGC 0x20
65#define IIC_MDCNTL_FMDB 0x40
66#define IIC_MDCNTL_FSDB 0x80
67
68/* CNTL Register Bit definition */
69#define IIC_CNTL_PT 0x01
70#define IIC_CNTL_READ 0x02
71#define IIC_CNTL_CHT 0x04
72#define IIC_CNTL_RPST 0x08
73/* bit 2/3 for Transfer count*/
74#define IIC_CNTL_AMD 0x40
75#define IIC_CNTL_HMT 0x80
76
77/* STS Register Bit definition */
78#define IIC_STS_PT 0x01
79#define IIC_STS_IRQA 0x02
80#define IIC_STS_ERR 0x04
81#define IIC_STS_SCMP 0x08
82#define IIC_STS_MDBF 0x10
83#define IIC_STS_MDBS 0x20
84#define IIC_STS_SLPR 0x40
85#define IIC_STS_SSS 0x80
86
87/* EXTSTS Register Bit definition */
88#define IIC_EXTSTS_XFRA 0x01
89#define IIC_EXTSTS_ICT 0x02
90#define IIC_EXTSTS_LA 0x04
91
92/* XTCNTLSS Register Bit definition */
93#define IIC_XTCNTLSS_SRST 0x01
94#define IIC_XTCNTLSS_EPI 0x02
95#define IIC_XTCNTLSS_SDBF 0x04
96#define IIC_XTCNTLSS_SBDD 0x08
97#define IIC_XTCNTLSS_SWS 0x10
98#define IIC_XTCNTLSS_SWC 0x20
99#define IIC_XTCNTLSS_SRS 0x40
100#define IIC_XTCNTLSS_SRC 0x80
101
102/* IICx_DIRECTCNTL register */
103#define IIC_DIRCNTL_SDAC 0x08
104#define IIC_DIRCNTL_SCC 0x04
105#define IIC_DIRCNTL_MSDA 0x02
106#define IIC_DIRCNTL_MSC 0x01
107
108#define DIRCTNL_FREE(v) (((v) & 0x0f) == 0x0f)
109#endif