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@xxxxxxxxxx: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 -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html