mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-18 13:11:31 +00:00
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
7 changed files with 118 additions and 1 deletions
|
@ -113,6 +113,11 @@ static void enable_per_clocks(void)
|
|||
writel(PRCM_MOD_EN, &cmper->mmc0clkctrl);
|
||||
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)
|
||||
|
|
|
@ -18,5 +18,6 @@
|
|||
|
||||
extern void enable_uart0_pin_mux(void);
|
||||
extern void enable_mmc0_pin_mux(void);
|
||||
extern void enable_i2c0_pin_mux(void);
|
||||
|
||||
#endif/*__COMMON_DEF_H__ */
|
||||
|
|
|
@ -95,7 +95,8 @@ struct cm_wkuppll {
|
|||
unsigned int divm2dpllper; /* offset 0xAC */
|
||||
unsigned int resv11[1];
|
||||
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 */
|
||||
};
|
||||
|
||||
|
|
81
arch/arm/include/asm/arch-am33xx/i2c.h
Normal file
81
arch/arm/include/asm/arch-am33xx/i2c.h
Normal file
|
@ -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/common_def.h>
|
||||
#include <serial.h>
|
||||
#include <i2c.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
|
@ -42,6 +43,12 @@ int init_basic_setup(void)
|
|||
int board_init(void)
|
||||
{
|
||||
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();
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -272,6 +272,14 @@ static struct module_pin_mux mmc0_pin_mux[] = {
|
|||
};
|
||||
#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
|
||||
*/
|
||||
|
@ -297,3 +305,8 @@ void enable_mmc0_pin_mux(void)
|
|||
configure_module_pin_mux(mmc0_pin_mux);
|
||||
}
|
||||
#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_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_SYS_BAUDRATE_TABLE { 110, 300, 600, 1200, 2400, \
|
||||
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_MMC_SUPPORT
|
||||
#define CONFIG_SPL_FAT_SUPPORT
|
||||
#define CONFIG_SPL_I2C_SUPPORT
|
||||
|
||||
#define CONFIG_SPL_LIBCOMMON_SUPPORT
|
||||
#define CONFIG_SPL_LIBDISK_SUPPORT
|
||||
|
|
Loading…
Add table
Reference in a new issue