[PATCH v5 0/4] Fix i2c bus hang on A0 version of the Armada XP SoCs
Gregory CLEMENT
gregory.clement at free-electrons.com
Wed Jan 8 11:46:17 EST 2014
On 08/01/2014 16:06, Gregory CLEMENT wrote:
> Hi,
>
> Here come the 5th version of the series fixing the i2c bus hang on A0
> version of the Armada XP SoCs. It occurred on the early release of the
> OpenBlocks AX3-4 boards. Indeed the first variants of Armada XP SoCs
> (A0 stepping) have issues related to the i2c controller which prevent
> to use the offload mechanism and lead to a kernel hang during boot.
>
> The main change are the use of marvell,mv78230-a0-i2c and that the
> function mvebu_get_soc_id() is now local to mach-mvebu.
>
> The first patch add a mean to detect the SoCs version at run-time and
> the second one use this feature in the driver.
>
> The 3 first patches should be applied on 3.13-rc and on stable kernel
> 3.12 as it fixes a regression introduce by the commit 930ab3d403ae
> "i2c: mv64xxx: Add I2C Transaction Generator support".
>
> The first patch could be latter be extend to also be used with dove,
> kirkwood, orion5x and mv78x00 when there will be merged in mvebu and
> even expose the SoC ID and revision to userspace.
>
> Jason, do you still agree to take the series once Wolfram have given
> his acked-by?
Jason,
if it can help you I have just pull my branch at:
https://github.com/MISL-EBU-System-SW/mainline-public/tree/i2c-mv64xxx-3.13-rc6-fixes-v6
git at github.com:MISL-EBU-System-SW/mainline-public.git
I also taken into account the two comments and added the acked-by from Wolfram and
Arnd on the appropriate commit.
Thanks,
Gregory
>
> Thanks,
>
> Gregory
>
> Changelog:
> v4 -> v5:
>
> - use the marvell,mv78230-a0-i2c compatible string instead of the
> offload-broken property.
>
> - move the mvebu-soc-id.h file into mach-mvebu
>
> - no more export the mvebu_get_soc_id() function
>
> - enable the quirk only on machines that we know may be affected, i.e.
> OpenBlocks AX3-4.
>
> v3 -> v4:
>
> - checked the offload-broken property instead of calling the
> mvebu_get_soc_id() function in the mv64xxx_of_config() function.
>
> - added the second patch to manage the quirk and update the device
> node with the offload-broken if needed.
>
> - removed the acked-by from Wolfram as the code have change in the 3rd
> patch
>
> In mvebu-soc-id.c:
> - used EXPORT_SYMBOL_GPL instead of EXPORT_SYMBOL
>
> - used core_initcall instead of arch_initcall to be called earlier
> enough.
>
> v2 -> v3:
>
> - fixed typo in the comments added in i2c-mv64xxx.c
>
> - used pr_fmt instead of %s __func__ in all the pr_* functions
>
> - added a check on the pointer returned by of_get_next_child()
>
> - added a return immediately after the 1st check to be able to get rid
> of indenting the entire function code inside the if { ... } block.
>
> v1 -> v2:
>
> - Changed the way to test the return of the function mvebu_get_soc_id
> in order to make it clearer.
>
> - Removed the superfluous parentheses
>
> - Added Wolfram's acked-by on the 2nd patch
>
> Gregory CLEMENT (4):
> ARM: mvebu: Add support to get the ID and the revision of a SoC
> ARM: mvebu: Add quirk for i2c for the OpenBlocks AX3-4 board
> i2c: mv64xxx: Fix bus hang on A0 version of the Armada XP SoCs
> i2c: mv64xxx: Document the newly introduced Armada XP A0 compatible
>
> .../devicetree/bindings/i2c/i2c-mv64xxx.txt | 2 +-
> arch/arm/mach-mvebu/Makefile | 2 +-
> arch/arm/mach-mvebu/armada-370-xp.c | 32 ++++++
> arch/arm/mach-mvebu/mvebu-soc-id.c | 119 +++++++++++++++++++++
> arch/arm/mach-mvebu/mvebu-soc-id.h | 32 ++++++
> drivers/i2c/busses/i2c-mv64xxx.c | 8 ++
> 6 files changed, 193 insertions(+), 2 deletions(-)
> create mode 100644 arch/arm/mach-mvebu/mvebu-soc-id.c
> create mode 100644 arch/arm/mach-mvebu/mvebu-soc-id.h
>
--
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
More information about the linux-arm-kernel
mailing list