> -----Original Message----- > From: Hans de Goede [mailto:hdego...@redhat.com] > Sent: 09 June 2014 22:44 > To: Albert ARIBAUD > Cc: Heiko Schocher; Henrik Nordström; Ian Campbell; u- > b...@lists.denx.de; Prafulla Wadaskar > Subject: Re: [PATCH 2/5] sunxi: Add i2c support > > Hi, > > On 06/09/2014 06:09 PM, Albert ARIBAUD wrote: > > Hi Hans, > > > > On Mon, 9 Jun 2014 17:15:27 +0200, Hans de Goede > <hdego...@redhat.com> > > wrote: > > > >> 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. > > > > Should not affect orion or kirkwood, since you're > just adding a > > variant to the "include switch case" where it was > intended; but just in > > case, I'm Cc:ing Prafulla here. > > Ah, good idea, thanks. Prafulla, this patch indeed does > not affect > orion or kirkwood, but the previous patch in the series > does, if you > could review and/or test it that would be great. And > sorry for not > CC-ing you on that patch from the get go.
That's okay Hans > > Regards, > > Hans > > > > >> Signed-off-by: Hans de Goede <hdego...@redhat.com> > >> Acked-by: Ian Campbell <i...@hellion.org.uk> > >> --- > >> arch/arm/cpu/armv7/sunxi/board.c | 6 > ++++++ > >> arch/arm/cpu/armv7/sunxi/u-boot-spl.lds | 5 +++++ > >> arch/arm/include/asm/arch-sunxi/i2c.h | 15 > +++++++++++++++ > >> board/sunxi/board.c | 7 > +++++++ > >> drivers/i2c/mvtwsi.c | 18 > ++++++++++++++++++ > >> include/configs/sunxi-common.h | 8 > ++++++++ > >> 6 files changed, 59 insertions(+) > >> create mode 100644 arch/arm/include/asm/arch- > sunxi/i2c.h > >> > >> diff --git a/arch/arm/cpu/armv7/sunxi/board.c > b/arch/arm/cpu/armv7/sunxi/board.c > >> index 1e506b5..024c8c1 100644 > >> --- a/arch/arm/cpu/armv7/sunxi/board.c > >> +++ b/arch/arm/cpu/armv7/sunxi/board.c > >> @@ -11,6 +11,7 @@ > >> */ > >> > >> #include <common.h> > >> +#include <i2c.h> > >> #include <netdev.h> > >> #include <miiphy.h> > >> #include <serial.h> > >> @@ -91,11 +92,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 > >> } > >> diff --git a/arch/arm/cpu/armv7/sunxi/u-boot-spl.lds > b/arch/arm/cpu/armv7/sunxi/u-boot-spl.lds > >> index c1ae227..53f0cbd 100644 > >> --- a/arch/arm/cpu/armv7/sunxi/u-boot-spl.lds > >> +++ b/arch/arm/cpu/armv7/sunxi/u-boot-spl.lds > >> @@ -39,6 +39,11 @@ SECTIONS > >> .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram > >> > >> . = ALIGN(4); > >> + .u_boot_list : { > >> + KEEP(*(SORT(.u_boot_list*))); > >> + } > .sram > >> + > >> + . = ALIGN(4); > > > > This adds the U-Boot commands section to an SPL > linker script, which > > seems to imply it was not there before. Are you > actually adding command > > line to the SPL of this board family? > > > >> __image_copy_end = .; > >> _end = .; > >> > >> diff --git a/arch/arm/include/asm/arch-sunxi/i2c.h > b/arch/arm/include/asm/arch-sunxi/i2c.h > >> new file mode 100644 > >> index 0000000..dc5406b > >> --- /dev/null > >> +++ b/arch/arm/include/asm/arch-sunxi/i2c.h > >> @@ -0,0 +1,15 @@ > >> +/* > >> + * Copyright 2014 - Hans de Goede > <hdego...@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 > >> diff --git a/board/sunxi/board.c > b/board/sunxi/board.c > >> index b05d0b9..543b809 100644 > >> --- a/board/sunxi/board.c > >> +++ b/board/sunxi/board.c > >> @@ -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) > >> { > >> diff --git a/drivers/i2c/mvtwsi.c > b/drivers/i2c/mvtwsi.c > >> index d3457b9..ad1ce8f 100644 > >> --- a/drivers/i2c/mvtwsi.c > >> +++ b/drivers/i2c/mvtwsi.c > >> @@ -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 > >> */ I ack the changes to this file in this patch. Acked-By: Prafulla Wadaskar <prafu...@marvell.com> Regards... Prafulla . . . _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot