Signed-off-by: Jens Gehrlein <[EMAIL PROTECTED]>
---

 board/tqc/tqma31/tqma31.c             |    6 +++++
 cpu/arm1136/mx31/generic.c            |   17 ++++++++++++++
 drivers/i2c/mxc_i2c.c                 |   13 +++++++++++
 include/asm-arm/arch-mx31/mx31-regs.h |   32 ++++++++++++++++++++++++++
 include/asm-arm/arch-mx31/mx31.h      |    1 +
 include/configs/TQMA31.h              |   40 +++++++++++++++++++++++++++++++++
 6 files changed, 109 insertions(+), 0 deletions(-)


diff --git a/board/tqc/tqma31/tqma31.c b/board/tqc/tqma31/tqma31.c
index 7cec8db..0c67af3 100644
--- a/board/tqc/tqma31/tqma31.c
+++ b/board/tqc/tqma31/tqma31.c
@@ -49,6 +49,12 @@ static void setup_iomux (void)
        mx31_gpio_mux (MUX_TXD1__UART1_TXD_MUX);
        mx31_gpio_mux (MUX_RTS1__UART1_RTS_B);
        mx31_gpio_mux (MUX_CTS1__UART1_CTS_B);
+
+       /* Pins for I2C1 */
+       mx31_gpio_mux (MUX_I2C_CLK__I2C1_SCL);
+       mx31_gpio_mux (MUX_I2C_DAT__I2C1_SDA);
+       mx31_pad_ctl (PAD_CTL_I2C_CLK, PAD_CTL_IPP_ODE_OD);
+       mx31_pad_ctl (PAD_CTL_I2C_DAT, PAD_CTL_IPP_ODE_OD);
 }
 
 int dram_init (void)
diff --git a/cpu/arm1136/mx31/generic.c b/cpu/arm1136/mx31/generic.c
index bf4c99c..9999e12 100644
--- a/cpu/arm1136/mx31/generic.c
+++ b/cpu/arm1136/mx31/generic.c
@@ -90,6 +90,23 @@ void mx31_gpio_mux(unsigned long mode)
        __REG(reg) = tmp;
 }
 
+void mx31_pad_ctl (u32 field, u32 val)
+{
+       u32 reg, shift, mask, tmp;
+
+       /* extract 32 bit register address and shifter for bit field */
+       reg = IOMUXC_BASE + (field >> 8);
+       shift = field & 0xFF;
+
+       /* field consists of 10 bits */
+       mask = 0x3FF << shift;
+
+       tmp = __REG(reg);
+       tmp &= ~mask;
+       tmp |= (val << shift) & mask;
+       __REG(reg) = tmp;
+}
+
 #if defined(CONFIG_DISPLAY_CPUINFO)
 int print_cpuinfo (void)
 {
diff --git a/drivers/i2c/mxc_i2c.c b/drivers/i2c/mxc_i2c.c
index 6f9306f..68d2720 100644
--- a/drivers/i2c/mxc_i2c.c
+++ b/drivers/i2c/mxc_i2c.c
@@ -209,4 +209,17 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buf, 
int len)
        return 0;
 }
 
+int i2c_get_bus_speed(void)
+{
+       return -1;
+}
+
+int i2c_set_bus_speed (unsigned int speed)
+{
+       if (speed != CFG_I2C_SPEED)
+               return -1;
+
+       return 0;
+}
+
 #endif /* CONFIG_HARD_I2C */
diff --git a/include/asm-arm/arch-mx31/mx31-regs.h 
b/include/asm-arm/arch-mx31/mx31-regs.h
index ea15108..c0e516f 100644
--- a/include/asm-arm/arch-mx31/mx31-regs.h
+++ b/include/asm-arm/arch-mx31/mx31-regs.h
@@ -168,6 +168,9 @@
 #define MUX_CTL_CSPI2_SS2      0x87
 #define MUX_CTL_CSPI2_MOSI     0x8b
 
+#define MUX_CTL_I2C_CLK                0xa2
+#define MUX_CTL_I2C_DAT                0xa3
+
 /* The modes a specific pin can be in
  * these macros can be used in mx31_gpio_mux() and have the form
  * MUX_[contact name]__[pin function]
@@ -180,6 +183,35 @@
 #define MUX_CSPI2_MOSI__I2C2_SCL ((MUX_CTL_ALT1 << 8) | MUX_CTL_CSPI2_MOSI)
 #define MUX_CSPI2_MISO__I2C2_SDA ((MUX_CTL_ALT1 << 8) | MUX_CTL_CSPI2_MISO)
 
+#define MUX_I2C_CLK__I2C1_SCL  ((MUX_CTL_FUNC << 8) | MUX_CTL_I2C_CLK)
+#define MUX_I2C_DAT__I2C1_SDA  ((MUX_CTL_FUNC << 8) | MUX_CTL_I2C_DAT)
+
+/* bits in the SW_PAD_CTL registers */
+#define PAD_CTL_LOOPBACK_DIS           (0 << 9)
+#define PAD_CTL_LOOPBACK_ENA           (1 << 9)
+#define PAD_CTL_IPP_PUE_DIS            (0 << 7)
+#define PAD_CTL_IPP_PUE_KEEPER         (2 << 7)
+#define PAD_CTL_IPP_PUE_PULL           (3 << 7)
+#define PAD_CTL_IPP_PUS_100K_DN                (0 << 5)
+#define PAD_CTL_IPP_PUS_100K_UP                (1 << 5)
+#define PAD_CTL_IPP_HYS_STD            (0 << 4)
+#define PAD_CTL_IPP_HYS_SCHMITT                (1 << 4)
+#define PAD_CTL_IPP_ODE_STD            (0 << 3)
+#define PAD_CTL_IPP_ODE_OD             (1 << 3)
+#define PAD_CTL_IPP_DSE_STD            (0 << 1)
+#define PAD_CTL_IPP_DSE_HIGH           (1 << 1)
+#define PAD_CTL_IPP_DSE_MAX            (2 << 1)
+#define PAD_CTL_IPP_SRE_SLOW           (0 << 0)
+#define PAD_CTL_IPP_SRE_FAST           (1 << 0)
+
+/* bit fields in the SW_PAD_CTL registers, offsets based on IOMUXC_BASE */
+#define        PAD_CTL_IO1_SHIFT               0
+#define        PAD_CTL_IO2_SHIFT               10
+#define        PAD_CTL_IO3_SHIFT               20
+#define PAD_CTL_I2C_CLK                        ((0x21C << 8) | 
PAD_CTL_IO2_SHIFT)
+#define PAD_CTL_I2C_DAT                        ((0x21C << 8) | 
PAD_CTL_IO1_SHIFT)
+
+
 /*
  * Memory regions and CS
  */
diff --git a/include/asm-arm/arch-mx31/mx31.h b/include/asm-arm/arch-mx31/mx31.h
index 0552c27..7b784e6 100644
--- a/include/asm-arm/arch-mx31/mx31.h
+++ b/include/asm-arm/arch-mx31/mx31.h
@@ -26,5 +26,6 @@
 
 extern u32 mx31_get_ipg_clk(void);
 extern void mx31_gpio_mux(unsigned long mode);
+extern void mx31_pad_ctl (u32 field, u32 val);
 
 #endif /* __ASM_ARCH_MX31_H */
diff --git a/include/configs/TQMA31.h b/include/configs/TQMA31.h
index 255355d..f96fd74 100644
--- a/include/configs/TQMA31.h
+++ b/include/configs/TQMA31.h
@@ -154,6 +154,43 @@
 
 
 
/*******************************************************************************
+ * I2C
+ 
******************************************************************************/
+
+/* Use the processor internal controller */
+#define CONFIG_HARD_I2C
+#define CONFIG_I2C_MXC
+
+/* Configure I2C1 */
+#define CFG_I2C_MX31_PORT1
+
+#define CFG_I2C_SPEED                  100000
+#define CFG_I2C_SLAVE                  0
+
+/* Don't probe these addrs */
+#define CFG_I2C_NOPROBES               {0x00}
+
+/* I2C EEPROM, configuration for onboard EEPROM */
+#define CFG_I2C_EEPROM_ADDR            0x50
+#define CFG_I2C_EEPROM_ADDR_LEN                2
+
+/* 32 bytes per write */
+#define CFG_EEPROM_PAGE_WRITE_BITS     5
+
+#define CFG_EEPROM_PAGE_WRITE_ENABLE
+
+/* 10ms +/- 20% */
+#define CFG_EEPROM_PAGE_WRITE_DELAY_MS 12
+
+/* I2C SYSMON (LM75) */
+#define CONFIG_DTT_LM75                        1       /* ON Semi's LM75 */
+#define CONFIG_DTT_SENSORS             {0}     /* Sensor addresses */
+#define CFG_DTT_MAX_TEMP               70
+#define CFG_DTT_LOW_TEMP               -30
+#define CFG_DTT_HYSTERESIS             3
+
+
+/*******************************************************************************
  * Commands
  
******************************************************************************/
 
@@ -161,6 +198,9 @@
 
 #define CONFIG_CMD_PING
 #define CONFIG_CMD_DHCP
+#define CONFIG_CMD_I2C
+#define CONFIG_CMD_DTT
+#define CONFIG_CMD_EEPROM
 
 
 
/*******************************************************************************


-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
U-Boot-Users mailing list
U-Boot-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/u-boot-users

Reply via email to