mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-18 13:11:31 +00:00
sunxi: Add i2c support
Add support for the i2c controller found on all Allwinner sunxi SoCs, this is the same controller as found on the Marvell orion5x and kirkwood SoC families, with a slightly different register layout, so this patch uses the existing mvtwsi code. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Acked-by: Ian Campbell <ijc@hellion.org.uk> Acked-By: Prafulla Wadaskar <prafulla@marvell.com> Acked-by: Heiko Schocher <hs@denx.de> [ ijc -- updated u-boot-spl-fel.lds ]
This commit is contained in:
parent
0db2bbdc04
commit
6620377e4b
7 changed files with 64 additions and 0 deletions
|
@ -11,6 +11,7 @@
|
|||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <i2c.h>
|
||||
#include <netdev.h>
|
||||
#include <miiphy.h>
|
||||
#include <serial.h>
|
||||
|
@ -93,11 +94,16 @@ void s_init(void)
|
|||
clock_init();
|
||||
timer_init();
|
||||
gpio_init();
|
||||
i2c_init_board();
|
||||
|
||||
#ifdef CONFIG_SPL_BUILD
|
||||
gd = &gdata;
|
||||
preloader_console_init();
|
||||
|
||||
#ifdef CONFIG_SPL_I2C_SUPPORT
|
||||
/* Needed early by sunxi_board_init if PMU is enabled */
|
||||
i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
|
||||
#endif
|
||||
sunxi_board_init();
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -26,6 +26,11 @@ SECTIONS
|
|||
*(.data*)
|
||||
}
|
||||
|
||||
. = ALIGN(4);
|
||||
.u_boot_list : {
|
||||
KEEP(*(SORT(.u_boot_list*)));
|
||||
}
|
||||
|
||||
. = ALIGN(4);
|
||||
. = .;
|
||||
|
||||
|
|
|
@ -38,6 +38,11 @@ SECTIONS
|
|||
. = ALIGN(4);
|
||||
.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
|
||||
|
||||
. = ALIGN(4);
|
||||
.u_boot_list : {
|
||||
KEEP(*(SORT(.u_boot_list*)));
|
||||
} > .sram
|
||||
|
||||
. = ALIGN(4);
|
||||
__image_copy_end = .;
|
||||
_end = .;
|
||||
|
|
15
arch/arm/include/asm/arch-sunxi/i2c.h
Normal file
15
arch/arm/include/asm/arch-sunxi/i2c.h
Normal file
|
@ -0,0 +1,15 @@
|
|||
/*
|
||||
* Copyright 2014 - Hans de Goede <hdegoede@redhat.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
#ifndef _SUNXI_I2C_H_
|
||||
#define _SUNXI_I2C_H_
|
||||
|
||||
#include <asm/arch/cpu.h>
|
||||
|
||||
#define CONFIG_I2C_MVTWSI_BASE SUNXI_TWI0_BASE
|
||||
/* This is abp0-clk on sun4i/5i/7i / abp1-clk on sun6i/sun8i which is 24MHz */
|
||||
#define CONFIG_SYS_TCLK 24000000
|
||||
|
||||
#endif
|
|
@ -106,6 +106,13 @@ int board_mmc_init(bd_t *bis)
|
|||
}
|
||||
#endif
|
||||
|
||||
void i2c_init_board(void)
|
||||
{
|
||||
sunxi_gpio_set_cfgpin(SUNXI_GPB(0), SUNXI_GPB0_TWI0);
|
||||
sunxi_gpio_set_cfgpin(SUNXI_GPB(1), SUNXI_GPB0_TWI0);
|
||||
clock_twi_onoff(0, 1);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SPL_BUILD
|
||||
void sunxi_board_init(void)
|
||||
{
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
#include <asm/arch/orion5x.h>
|
||||
#elif defined(CONFIG_KIRKWOOD)
|
||||
#include <asm/arch/kirkwood.h>
|
||||
#elif defined(CONFIG_SUNXI)
|
||||
#include <asm/arch/i2c.h>
|
||||
#else
|
||||
#error Driver mvtwsi not supported by SoC or board
|
||||
#endif
|
||||
|
@ -30,6 +32,20 @@
|
|||
* TWSI register structure
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_SUNXI
|
||||
|
||||
struct mvtwsi_registers {
|
||||
u32 slave_address;
|
||||
u32 xtnd_slave_addr;
|
||||
u32 data;
|
||||
u32 control;
|
||||
u32 status;
|
||||
u32 baudrate;
|
||||
u32 soft_reset;
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
struct mvtwsi_registers {
|
||||
u32 slave_address;
|
||||
u32 data;
|
||||
|
@ -43,6 +59,8 @@ struct mvtwsi_registers {
|
|||
u32 soft_reset;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Control register fields
|
||||
*/
|
||||
|
|
|
@ -161,6 +161,14 @@
|
|||
#undef CONFIG_CMD_NET
|
||||
#undef CONFIG_CMD_NFS
|
||||
|
||||
/* I2C */
|
||||
#define CONFIG_SPL_I2C_SUPPORT
|
||||
#define CONFIG_SYS_I2C
|
||||
#define CONFIG_SYS_I2C_MVTWSI
|
||||
#define CONFIG_SYS_I2C_SPEED 400000
|
||||
#define CONFIG_SYS_I2C_SLAVE 0x7f
|
||||
#define CONFIG_CMD_I2C
|
||||
|
||||
#ifndef CONFIG_CONS_INDEX
|
||||
#define CONFIG_CONS_INDEX 1 /* UART0 */
|
||||
#endif
|
||||
|
|
Loading…
Add table
Reference in a new issue