Added I2C support
authorTsiChungLiew <Tsi-Chung.Liew@freescale.com>
Sun, 5 Aug 2007 09:11:20 +0000 (04:11 -0500)
committerStefan Roese <sr@denx.de>
Wed, 8 Aug 2007 07:47:38 +0000 (09:47 +0200)
Signed-off-by: TsiChungLiew <Tsi-Chung.Liew@freescale.com>
include/asm-m68k/fsl_i2c.h [new file with mode: 0644]
include/configs/M5329EVB.h

diff --git a/include/asm-m68k/fsl_i2c.h b/include/asm-m68k/fsl_i2c.h
new file mode 100644 (file)
index 0000000..4f71341
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * Freescale I2C Controller
+ *
+ * Copyright 2006 Freescale Semiconductor, Inc.
+ *
+ * Based on earlier versions by Gleb Natapov <gnatapov@mrv.com>,
+ * Xianghua Xiao <x.xiao@motorola.com>, Eran Liberty (liberty@freescale.com),
+ * and Jeff Brown.
+ * Some bits are taken from linux driver writen by adrian@humboldt.co.uk.
+ *
+ * This software may be used and distributed according to the
+ * terms of the GNU Public License, Version 2, incorporated
+ * herein by reference.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef _ASM_FSL_I2C_H_
+#define _ASM_FSL_I2C_H_
+
+#include <asm/types.h>
+
+typedef struct fsl_i2c {
+
+       u8 adr;         /* I2C slave address */
+       u8 res0[3];
+#define I2C_ADR                0xFE
+#define I2C_ADR_SHIFT  1
+#define I2C_ADR_RES    ~(I2C_ADR)
+
+       u8 fdr;         /* I2C frequency divider register */
+       u8 res1[3];
+#define IC2_FDR                0x3F
+#define IC2_FDR_SHIFT  0
+#define IC2_FDR_RES    ~(IC2_FDR)
+
+       u8 cr;          /* I2C control redister */
+       u8 res2[3];
+#define I2C_CR_MEN     0x80
+#define I2C_CR_MIEN    0x40
+#define I2C_CR_MSTA    0x20
+#define I2C_CR_MTX     0x10
+#define I2C_CR_TXAK    0x08
+#define I2C_CR_RSTA    0x04
+#define I2C_CR_BCST    0x01
+
+       u8 sr;          /* I2C status register */
+       u8 res3[3];
+#define I2C_SR_MCF     0x80
+#define I2C_SR_MAAS    0x40
+#define I2C_SR_MBB     0x20
+#define I2C_SR_MAL     0x10
+#define I2C_SR_BCSTM   0x08
+#define I2C_SR_SRW     0x04
+#define I2C_SR_MIF     0x02
+#define I2C_SR_RXAK    0x01
+
+       u8 dr;          /* I2C data register */
+       u8 res4[3];
+#define I2C_DR         0xFF
+#define I2C_DR_SHIFT   0
+#define I2C_DR_RES     ~(I2C_DR)
+
+       u8 dfsrr;       /* I2C digital filter sampling rate register */
+       u8 res5[3];
+#define I2C_DFSRR      0x3F
+#define I2C_DFSRR_SHIFT        0
+#define I2C_DFSRR_RES  ~(I2C_DR)
+
+       /* Fill out the reserved block */
+       u8 res6[0xE8];
+} fsl_i2c_t;
+
+#endif /* _ASM_I2C_H_ */
index 50be03fe3781e4373adb0c4e77a6a3596437f4ac..605684bee367ab4bee33400c0e359193cc3c20da 100644 (file)
@@ -52,6 +52,7 @@
                                  CFG_CMD_DATE | \
                                  CFG_CMD_ELF | \
                                  CFG_CMD_FLASH | \
+                                 CFG_CMD_I2C | \
                                  (CFG_CMD_LOADB | CFG_CMD_LOADS) | \
                                  CFG_CMD_MEMORY | \
                                  CFG_CMD_MISC | \
 
 #define CONFIG_MCFFEC
 #ifdef CONFIG_MCFFEC
-#      define CONFIG_NET_MULTI 1
+#      define CONFIG_NET_MULTI         1
 #      define CONFIG_MII               1
 #      define CFG_DISCOVER_PHY
 #      define CFG_RX_ETH_BUFFER        8
 #      define CFG_FAULT_ECHO_LINK_DOWN
 
-#      define CFG_FEC0_PINMUX  0
-#      define CFG_FEC0_MIIBASE CFG_FEC0_IOBASE
-#      define MCFFEC_TOUT_LOOP 50000
+#      define CFG_FEC0_PINMUX          0
+#      define CFG_FEC0_MIIBASE         CFG_FEC0_IOBASE
+#      define MCFFEC_TOUT_LOOP         50000
 /* If CFG_DISCOVER_PHY is not defined - hardcoded */
 #      ifndef CFG_DISCOVER_PHY
 #              define FECDUPLEX        FULL
 #define CONFIG_MCFTMR
 #undef CONFIG_MCFPIT
 
+/* I2C */
+#define CONFIG_FSL_I2C
+#define CONFIG_HARD_I2C                        /* I2C with hw support */
+#undef CONFIG_SOFT_I2C                 /* I2C bit-banged */
+#define CFG_I2C_SPEED          80000
+#define CFG_I2C_SLAVE          0x7F
+#define CFG_I2C_OFFSET         0x58000
+#define CFG_IMMR               CFG_MBAR
+
 /* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
 #include <cmd_confdefs.h>
 #define CONFIG_BOOTDELAY       1       /* autoboot after 5 seconds */
 #ifdef CONFIG_MCFFEC
-#      define CONFIG_ETHADDR           00:e0:0c:bc:e5:60
-#      define CONFIG_IPADDR            192.162.1.2
-#      define CONFIG_NETMASK           255.255.255.0
-#      define CONFIG_SERVERIP          192.162.1.1
+#      define CONFIG_ETHADDR   00:e0:0c:bc:e5:60
+#      define CONFIG_IPADDR    192.162.1.2
+#      define CONFIG_NETMASK   255.255.255.0
+#      define CONFIG_SERVERIP  192.162.1.1
 #      define CONFIG_GATEWAYIP 192.162.1.1
 #      define CONFIG_OVERWRITE_ETHADDR_ONCE
 #endif                         /* FEC_ENET */
        "save\0"        \
        ""
 
-#define CONFIG_PRAM                    512     /* 512 KB */
-#define CFG_PROMPT                     "-> "
+#define CONFIG_PRAM            512     /* 512 KB */
+#define CFG_PROMPT             "-> "
 #define CFG_LONGHELP           /* undef to save memory */
 
 #if (CONFIG_COMMANDS & CFG_CMD_KGDB)
-#      define CFG_CBSIZE                       1024    /* Console I/O Buffer Size */
+#      define CFG_CBSIZE       1024    /* Console I/O Buffer Size */
 #else
-#      define CFG_CBSIZE                       256     /* Console I/O Buffer Size */
+#      define CFG_CBSIZE       256     /* Console I/O Buffer Size */
 #endif
 
 #define CFG_PBSIZE                     (CFG_CBSIZE+sizeof(CFG_PROMPT)+16)      /* Print Buffer Size */
-#define CFG_MAXARGS                    16      /* max number of command args */
+#define CFG_MAXARGS            16      /* max number of command args */
 #define CFG_BARGSIZE           CFG_CBSIZE      /* Boot Argument Buffer Size    */
 #define CFG_LOAD_ADDR          0x40010000
 
-#define CFG_HZ                         1000
-#define CFG_CLK                                80000000
-#define CFG_CPU_CLK                    CFG_CLK * 3
+#define CFG_HZ                 1000
+#define CFG_CLK                        80000000
+#define CFG_CPU_CLK            CFG_CLK * 3
 
-#define CFG_MBAR                       0xFC000000
+#define CFG_MBAR               0xFC000000
 
 /*
  * Low Level Configuration Settings
 #      define CFG_FLASH_CFI_DRIVER     1
 #      define CFG_FLASH_SIZE           0x800000        /* Max size that the board might have */
 #      define CFG_FLASH_CFI_WIDTH      FLASH_CFI_16BIT
-#      define CFG_MAX_FLASH_BANKS              1       /* max number of memory banks */
-#      define CFG_MAX_FLASH_SECT               137     /* max number of sectors on one chip */
+#      define CFG_MAX_FLASH_BANKS      1       /* max number of memory banks */
+#      define CFG_MAX_FLASH_SECT       137     /* max number of sectors on one chip */
 #      define CFG_FLASH_PROTECTION     /* "Real" (hardware) sectors protection */
 #endif
 
-#define CFG_FLASH_BASE                 0
-#define CFG_FLASH0_BASE                        (CFG_CS0_BASE << 16)
+#define CFG_FLASH_BASE         0
+#define CFG_FLASH0_BASE                (CFG_CS0_BASE << 16)
 
 /* Configuration for environment
  * Environment is embedded in u-boot in the second sector of the flash