diff options
| author | Lei Wen <[leiwen@marvell.com]> | 2011-04-13 23:48:44 +0530 | 
|---|---|---|
| committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2011-04-27 19:38:08 +0200 | 
| commit | 81a9ab21ca4f1af85efd37de7baaad131f0e7edc (patch) | |
| tree | 5f38c429f730b8986e90621e45f97ffd46fe47e7 | |
| parent | adb00bb6a05be8b1a64820becdc052513888b280 (diff) | |
| download | olio-uboot-2014.01-81a9ab21ca4f1af85efd37de7baaad131f0e7edc.tar.xz olio-uboot-2014.01-81a9ab21ca4f1af85efd37de7baaad131f0e7edc.zip | |
I2C: add i2c support for Armada100 platform
Add i2c support to aspenite board with Armada100 soc.
Acked-by: Heiko Schocher <hs@denx.de>
Acked-by: Prafulla Wadaskar <prafulla@marvell.com>
Signed-off-by: Lei Wen <leiwen@marvell.com>
| -rw-r--r-- | arch/arm/cpu/arm926ejs/armada100/cpu.c | 16 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-armada100/config.h | 12 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-armada100/mfp.h | 40 | ||||
| -rw-r--r-- | board/Marvell/aspenite/aspenite.c | 5 | ||||
| -rw-r--r-- | include/configs/aspenite.h | 1 | 
5 files changed, 56 insertions, 18 deletions
| diff --git a/arch/arm/cpu/arm926ejs/armada100/cpu.c b/arch/arm/cpu/arm926ejs/armada100/cpu.c index 62aa1753c..c21938e31 100644 --- a/arch/arm/cpu/arm926ejs/armada100/cpu.c +++ b/arch/arm/cpu/arm926ejs/armada100/cpu.c @@ -62,6 +62,16 @@ int arch_cpu_init(void)  	/* Enable GPIO clock */  	writel(APBC_APBCLK, &apb1clkres->gpio); +#ifdef CONFIG_I2C_MV +	/* Enable general I2C clock */ +	writel(APBC_RST | APBC_FNCLK | APBC_APBCLK, &apb1clkres->twsi0); +	writel(APBC_FNCLK | APBC_APBCLK, &apb1clkres->twsi0); + +	/* Enable power I2C clock */ +	writel(APBC_RST | APBC_FNCLK | APBC_APBCLK, &apb1clkres->twsi1); +	writel(APBC_FNCLK | APBC_APBCLK, &apb1clkres->twsi1); +#endif +  	/*  	 * Enable Functional and APB clock at 14.7456MHz  	 * for configured UART console @@ -90,3 +100,9 @@ int print_cpuinfo(void)  	return 0;  }  #endif + +#ifdef CONFIG_I2C_MV +void i2c_clk_enable(void) +{ +} +#endif diff --git a/arch/arm/include/asm/arch-armada100/config.h b/arch/arm/include/asm/arch-armada100/config.h index d8040025e..1126b38a2 100644 --- a/arch/arm/include/asm/arch-armada100/config.h +++ b/arch/arm/include/asm/arch-armada100/config.h @@ -40,5 +40,17 @@  #define MV_UART_CONSOLE_BASE	ARMD1_UART1_BASE  #define CONFIG_SYS_NS16550_IER	(1 << 6)	/* Bit 6 in UART_IER register  						represents UART Unit Enable */ +/* + * I2C definition + */ +#ifdef CONFIG_CMD_I2C +#define CONFIG_I2C_MV		1 +#define CONFIG_MV_I2C_NUM	2 +#define CONFIG_I2C_MULTI_BUS	1 +#define CONFIG_MV_I2C_REG	{0xd4011000, 0xd4025000} +#define CONFIG_HARD_I2C		1 +#define CONFIG_SYS_I2C_SPEED	0 +#define CONFIG_SYS_I2C_SLAVE	0xfe +#endif  #endif /* _ARMD1_CONFIG_H */ diff --git a/arch/arm/include/asm/arch-armada100/mfp.h b/arch/arm/include/asm/arch-armada100/mfp.h index d21a79fa1..73783a764 100644 --- a/arch/arm/include/asm/arch-armada100/mfp.h +++ b/arch/arm/include/asm/arch-armada100/mfp.h @@ -37,28 +37,32 @@   * 				    offset, pull,pF, drv,dF, edge,eF ,afn,aF   */  /* UART1 */ -#define MFP107_UART1_TXD	MFP_REG(0x01ac) | MFP_AF1 | MFP_DRIVE_FAST -#define MFP107_UART1_RXD	MFP_REG(0x01ac) | MFP_AF2 | MFP_DRIVE_FAST -#define MFP108_UART1_RXD	MFP_REG(0x01b0) | MFP_AF1 | MFP_DRIVE_FAST -#define MFP108_UART1_TXD	MFP_REG(0x01b0) | MFP_AF2 | MFP_DRIVE_FAST -#define MFP109_UART1_CTS	MFP_REG(0x01b4) | MFP_AF1 | MFP_DRIVE_MEDIUM -#define MFP109_UART1_RTS	MFP_REG(0x01b4) | MFP_AF2 | MFP_DRIVE_MEDIUM -#define MFP110_UART1_RTS	MFP_REG(0x01b8) | MFP_AF1 | MFP_DRIVE_MEDIUM -#define MFP110_UART1_CTS	MFP_REG(0x01b8) | MFP_AF2 | MFP_DRIVE_MEDIUM -#define MFP111_UART1_RI		MFP_REG(0x01bc) | MFP_AF1 | MFP_DRIVE_MEDIUM -#define MFP111_UART1_DSR	MFP_REG(0x01bc) | MFP_AF2 | MFP_DRIVE_MEDIUM -#define MFP112_UART1_DTR	MFP_REG(0x01c0) | MFP_AF1 | MFP_DRIVE_MEDIUM -#define MFP112_UART1_DCD	MFP_REG(0x01c0) | MFP_AF2 | MFP_DRIVE_MEDIUM +#define MFP107_UART1_TXD	(MFP_REG(0x01ac) | MFP_AF1 | MFP_DRIVE_FAST) +#define MFP107_UART1_RXD	(MFP_REG(0x01ac) | MFP_AF2 | MFP_DRIVE_FAST) +#define MFP108_UART1_RXD	(MFP_REG(0x01b0) | MFP_AF1 | MFP_DRIVE_FAST) +#define MFP108_UART1_TXD	(MFP_REG(0x01b0) | MFP_AF2 | MFP_DRIVE_FAST) +#define MFP109_UART1_CTS	(MFP_REG(0x01b4) | MFP_AF1 | MFP_DRIVE_MEDIUM) +#define MFP109_UART1_RTS	(MFP_REG(0x01b4) | MFP_AF2 | MFP_DRIVE_MEDIUM) +#define MFP110_UART1_RTS	(MFP_REG(0x01b8) | MFP_AF1 | MFP_DRIVE_MEDIUM) +#define MFP110_UART1_CTS	(MFP_REG(0x01b8) | MFP_AF2 | MFP_DRIVE_MEDIUM) +#define MFP111_UART1_RI		(MFP_REG(0x01bc) | MFP_AF1 | MFP_DRIVE_MEDIUM) +#define MFP111_UART1_DSR	(MFP_REG(0x01bc) | MFP_AF2 | MFP_DRIVE_MEDIUM) +#define MFP112_UART1_DTR	(MFP_REG(0x01c0) | MFP_AF1 | MFP_DRIVE_MEDIUM) +#define MFP112_UART1_DCD	(MFP_REG(0x01c0) | MFP_AF2 | MFP_DRIVE_MEDIUM)  /* UART2 */ -#define MFP47_UART2_RXD		MFP_REG(0x0028) | MFP_AF6 | MFP_DRIVE_MEDIUM -#define MFP48_UART2_TXD		MFP_REG(0x002c) | MFP_AF6 | MFP_DRIVE_MEDIUM -#define MFP88_UART2_RXD		MFP_REG(0x0160) | MFP_AF2 | MFP_DRIVE_MEDIUM -#define MFP89_UART2_TXD		MFP_REG(0x0164) | MFP_AF2 | MFP_DRIVE_MEDIUM +#define MFP47_UART2_RXD		(MFP_REG(0x0028) | MFP_AF6 | MFP_DRIVE_MEDIUM) +#define MFP48_UART2_TXD		(MFP_REG(0x002c) | MFP_AF6 | MFP_DRIVE_MEDIUM) +#define MFP88_UART2_RXD		(MFP_REG(0x0160) | MFP_AF2 | MFP_DRIVE_MEDIUM) +#define MFP89_UART2_TXD		(MFP_REG(0x0164) | MFP_AF2 | MFP_DRIVE_MEDIUM)  /* UART3 */ -#define MFPO8_UART3_RXD		MFP_REG(0x06c) | MFP_AF2 | MFP_DRIVE_MEDIUM -#define MFPO9_UART3_TXD		MFP_REG(0x070) | MFP_AF2 | MFP_DRIVE_MEDIUM +#define MFPO8_UART3_RXD		(MFP_REG(0x06c) | MFP_AF2 | MFP_DRIVE_MEDIUM) +#define MFPO9_UART3_TXD		(MFP_REG(0x070) | MFP_AF2 | MFP_DRIVE_MEDIUM) + +/* I2c */ +#define MFP105_CI2C_SDA		(MFP_REG(0x1a4) | MFP_AF1 | MFP_DRIVE_MEDIUM) +#define MFP106_CI2C_SCL		(MFP_REG(0x1a8) | MFP_AF1 | MFP_DRIVE_MEDIUM)  /* More macros can be defined here... */ diff --git a/board/Marvell/aspenite/aspenite.c b/board/Marvell/aspenite/aspenite.c index 046ffd62c..34ac7aa55 100644 --- a/board/Marvell/aspenite/aspenite.c +++ b/board/Marvell/aspenite/aspenite.c @@ -33,9 +33,14 @@ DECLARE_GLOBAL_DATA_PTR;  int board_early_init_f(void)  {  	u32 mfp_cfg[] = { +		/* I2C */ +		MFP105_CI2C_SDA, +		MFP106_CI2C_SCL, +  		/* Enable Console on UART1 */  		MFP107_UART1_RXD,  		MFP108_UART1_TXD, +  		MFP_EOC		/*End of configureation*/  	};  	/* configure MFP's */ diff --git a/include/configs/aspenite.h b/include/configs/aspenite.h index fd35f3e11..1619db5b2 100644 --- a/include/configs/aspenite.h +++ b/include/configs/aspenite.h @@ -52,6 +52,7 @@   */  #define CONFIG_SYS_NO_FLASH		/* Declare no flash (NOR/SPI) */  #include <config_cmd_default.h> +#define CONFIG_CMD_I2C  #define CONFIG_CMD_AUTOSCRIPT  #undef CONFIG_CMD_NET  #undef CONFIG_CMD_NFS |