ARM: AM33XX: Add i2c support
Add i2c driver board hookup for AM335X EVM Signed-off-by: Chandan Nath <chandan.nath@ti.com> Signed-off-by: Patil, Rachna <rachna@ti.com>
This commit is contained in:
parent
498cbdfe62
commit
b4116ede36
|
@ -113,6 +113,11 @@ static void enable_per_clocks(void)
|
||||||
writel(PRCM_MOD_EN, &cmper->mmc0clkctrl);
|
writel(PRCM_MOD_EN, &cmper->mmc0clkctrl);
|
||||||
while (readl(&cmper->mmc0clkctrl) != PRCM_MOD_EN)
|
while (readl(&cmper->mmc0clkctrl) != PRCM_MOD_EN)
|
||||||
;
|
;
|
||||||
|
|
||||||
|
/* i2c0 */
|
||||||
|
writel(PRCM_MOD_EN, &cmwkup->wkup_i2c0ctrl);
|
||||||
|
while (readl(&cmwkup->wkup_i2c0ctrl) != PRCM_MOD_EN)
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mpu_pll_config(void)
|
static void mpu_pll_config(void)
|
||||||
|
|
|
@ -18,5 +18,6 @@
|
||||||
|
|
||||||
extern void enable_uart0_pin_mux(void);
|
extern void enable_uart0_pin_mux(void);
|
||||||
extern void enable_mmc0_pin_mux(void);
|
extern void enable_mmc0_pin_mux(void);
|
||||||
|
extern void enable_i2c0_pin_mux(void);
|
||||||
|
|
||||||
#endif/*__COMMON_DEF_H__ */
|
#endif/*__COMMON_DEF_H__ */
|
||||||
|
|
|
@ -95,7 +95,8 @@ struct cm_wkuppll {
|
||||||
unsigned int divm2dpllper; /* offset 0xAC */
|
unsigned int divm2dpllper; /* offset 0xAC */
|
||||||
unsigned int resv11[1];
|
unsigned int resv11[1];
|
||||||
unsigned int wkup_uart0ctrl; /* offset 0xB4 */
|
unsigned int wkup_uart0ctrl; /* offset 0xB4 */
|
||||||
unsigned int resv12[8];
|
unsigned int wkup_i2c0ctrl; /* offset 0xB8 */
|
||||||
|
unsigned int resv12[7];
|
||||||
unsigned int divm6dpllcore; /* offset 0xD8 */
|
unsigned int divm6dpllcore; /* offset 0xD8 */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,81 @@
|
||||||
|
/*
|
||||||
|
* (C) Copyright 2012
|
||||||
|
* Texas Instruments, <www.ti.com>
|
||||||
|
*
|
||||||
|
* See file CREDITS for list of people who contributed to this
|
||||||
|
* project.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License as
|
||||||
|
* published by the Free Software Foundation; either version 2 of
|
||||||
|
* the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* 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 _I2C_H_
|
||||||
|
#define _I2C_H_
|
||||||
|
|
||||||
|
#define I2C_BASE1 0x44E0B000
|
||||||
|
#define I2C_BASE2 0x4802A000
|
||||||
|
#define I2C_BASE3 0x4819C000
|
||||||
|
#define I2C_BUS_MAX 3
|
||||||
|
|
||||||
|
#define I2C_DEFAULT_BASE I2C_BASE1
|
||||||
|
|
||||||
|
struct i2c {
|
||||||
|
unsigned short revnb_lo; /* 0x00 */
|
||||||
|
unsigned short res1;
|
||||||
|
unsigned short revnb_hi; /* 0x04 */
|
||||||
|
unsigned short res2[13];
|
||||||
|
unsigned short sysc; /* 0x20 */
|
||||||
|
unsigned short res3;
|
||||||
|
unsigned short irqstatus_raw; /* 0x24 */
|
||||||
|
unsigned short res4;
|
||||||
|
unsigned short stat; /* 0x28 */
|
||||||
|
unsigned short res5;
|
||||||
|
unsigned short ie; /* 0x2C */
|
||||||
|
unsigned short res6;
|
||||||
|
unsigned short irqenable_clr; /* 0x30 */
|
||||||
|
unsigned short res7;
|
||||||
|
unsigned short iv; /* 0x34 */
|
||||||
|
unsigned short res8[45];
|
||||||
|
unsigned short syss; /* 0x90 */
|
||||||
|
unsigned short res9;
|
||||||
|
unsigned short buf; /* 0x94 */
|
||||||
|
unsigned short res10;
|
||||||
|
unsigned short cnt; /* 0x98 */
|
||||||
|
unsigned short res11;
|
||||||
|
unsigned short data; /* 0x9C */
|
||||||
|
unsigned short res13;
|
||||||
|
unsigned short res14; /* 0xA0 */
|
||||||
|
unsigned short res15;
|
||||||
|
unsigned short con; /* 0xA4 */
|
||||||
|
unsigned short res16;
|
||||||
|
unsigned short oa; /* 0xA8 */
|
||||||
|
unsigned short res17;
|
||||||
|
unsigned short sa; /* 0xAC */
|
||||||
|
unsigned short res18;
|
||||||
|
unsigned short psc; /* 0xB0 */
|
||||||
|
unsigned short res19;
|
||||||
|
unsigned short scll; /* 0xB4 */
|
||||||
|
unsigned short res20;
|
||||||
|
unsigned short sclh; /* 0xB8 */
|
||||||
|
unsigned short res21;
|
||||||
|
unsigned short systest; /* 0xBC */
|
||||||
|
unsigned short res22;
|
||||||
|
unsigned short bufstat; /* 0xC0 */
|
||||||
|
unsigned short res23;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define I2C_IP_CLK 48000000
|
||||||
|
#define I2C_INTERNAL_SAMLPING_CLK 12000000
|
||||||
|
|
||||||
|
#endif /* _I2C_H_ */
|
|
@ -18,6 +18,7 @@
|
||||||
#include <asm/arch/hardware.h>
|
#include <asm/arch/hardware.h>
|
||||||
#include <asm/arch/common_def.h>
|
#include <asm/arch/common_def.h>
|
||||||
#include <serial.h>
|
#include <serial.h>
|
||||||
|
#include <i2c.h>
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
|
@ -42,6 +43,12 @@ int init_basic_setup(void)
|
||||||
int board_init(void)
|
int board_init(void)
|
||||||
{
|
{
|
||||||
enable_uart0_pin_mux();
|
enable_uart0_pin_mux();
|
||||||
|
|
||||||
|
#ifdef CONFIG_I2C
|
||||||
|
enable_i2c0_pin_mux();
|
||||||
|
i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
|
||||||
|
#endif
|
||||||
|
|
||||||
init_basic_setup();
|
init_basic_setup();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -272,6 +272,14 @@ static struct module_pin_mux mmc0_pin_mux[] = {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static struct module_pin_mux i2c0_pin_mux[] = {
|
||||||
|
{OFFSET(i2c0_sda), (MODE(0) | RXACTIVE |
|
||||||
|
PULLUDEN | SLEWCTRL)}, /* I2C_DATA */
|
||||||
|
{OFFSET(i2c0_scl), (MODE(0) | RXACTIVE |
|
||||||
|
PULLUDEN | SLEWCTRL)}, /* I2C_SCLK */
|
||||||
|
{-1},
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Configure the pin mux for the module
|
* Configure the pin mux for the module
|
||||||
*/
|
*/
|
||||||
|
@ -297,3 +305,8 @@ void enable_mmc0_pin_mux(void)
|
||||||
configure_module_pin_mux(mmc0_pin_mux);
|
configure_module_pin_mux(mmc0_pin_mux);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void enable_i2c0_pin_mux(void)
|
||||||
|
{
|
||||||
|
configure_module_pin_mux(i2c0_pin_mux);
|
||||||
|
}
|
||||||
|
|
|
@ -103,6 +103,14 @@
|
||||||
#define CONFIG_SYS_NS16550_CLK (48000000)
|
#define CONFIG_SYS_NS16550_CLK (48000000)
|
||||||
#define CONFIG_SYS_NS16550_COM1 0x44e09000 /* Base EVM has UART0 */
|
#define CONFIG_SYS_NS16550_COM1 0x44e09000 /* Base EVM has UART0 */
|
||||||
|
|
||||||
|
/* I2C Configuration */
|
||||||
|
#define CONFIG_I2C
|
||||||
|
#define CONFIG_CMD_I2C
|
||||||
|
#define CONFIG_HARD_I2C
|
||||||
|
#define CONFIG_SYS_I2C_SPEED 100000
|
||||||
|
#define CONFIG_SYS_I2C_SLAVE 1
|
||||||
|
#define CONFIG_DRIVER_OMAP24XX_I2C
|
||||||
|
|
||||||
#define CONFIG_BAUDRATE 115200
|
#define CONFIG_BAUDRATE 115200
|
||||||
#define CONFIG_SYS_BAUDRATE_TABLE { 110, 300, 600, 1200, 2400, \
|
#define CONFIG_SYS_BAUDRATE_TABLE { 110, 300, 600, 1200, 2400, \
|
||||||
4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200 }
|
4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200 }
|
||||||
|
@ -131,6 +139,7 @@
|
||||||
#define CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME "u-boot.img"
|
#define CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME "u-boot.img"
|
||||||
#define CONFIG_SPL_MMC_SUPPORT
|
#define CONFIG_SPL_MMC_SUPPORT
|
||||||
#define CONFIG_SPL_FAT_SUPPORT
|
#define CONFIG_SPL_FAT_SUPPORT
|
||||||
|
#define CONFIG_SPL_I2C_SUPPORT
|
||||||
|
|
||||||
#define CONFIG_SPL_LIBCOMMON_SUPPORT
|
#define CONFIG_SPL_LIBCOMMON_SUPPORT
|
||||||
#define CONFIG_SPL_LIBDISK_SUPPORT
|
#define CONFIG_SPL_LIBDISK_SUPPORT
|
||||||
|
|
Loading…
Reference in New Issue