Re: [PATCH] i2c-davinci: Implement a bus recovery that actually works
On 03/10/2014 08:26 AM, Wolfram Sang wrote: I won't be doing those changes though. My sponsor's budget is limited, so I'm just having to do the minimum I can get away with. Pity. Are you available for testing in case someone comes up with a patch? Not really, the customer is using a 2.6.37 kernel, and that's currently the only board we have with an OMAP-L1. Mike. Met vriendelijke groet / kind regards, Mike Looijmans TOPIC Embedded Systems Eindhovenseweg 32-C, NL-5683 KH Best Postbus 440, NL-5680 AK Best Telefoon: (+31) (0) 499 33 69 79 Telefax: (+31) (0) 499 33 69 70 E-mail: mike.looijm...@topic.nl Website: www.topic.nl Please consider the environment before printing this e-mail -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] i2c-davinci: Implement a bus recovery that actually works
> I won't be doing those changes though. My sponsor's budget is > limited, so I'm just having to do the minimum I can get away with. Pity. Are you available for testing in case someone comes up with a patch? signature.asc Description: Digital signature
Re: [PATCH] i2c-davinci: Implement a bus recovery that actually works
On 03/09/2014 09:28 PM, Wolfram Sang wrote: On Fri, Feb 28, 2014 at 11:32:05AM +0100, mike.looijm...@topic.nl wrote: From: Mike Looijmans Having a board where the I2C bus locks up occasionally made it clear that the bus recovery in the i2c-davinci driver will only work on some boards, because on regular boards, this will only toggle GPIO lines that aren't muxed to the actual pins. The I2C controller has the built-in capability to bit-bang its lines. Use this to implement a generic recovery routine that puts the controller in GPIO mode and pulse the clk lines until both SDA and SCL return to a high state. Because the controller must be held in reset while doing so, the recovery routine must re-init the controller. Since this was already being done after each call to i2c_recover_bus, move that call into the recovery routine as well. Tested on a custom board with OMAP-L138, and after this change, the board can recover from chips keeping SDA low. Note: This is an adapted port from 2.6.37 code, and was only tested with that kernel. What about using struct i2c_bus_recovery_info, so the actual recovery logic is taken from the core? I never knew such a thing existed, but it sounds like a sensible thing to do. In addition, one could also remove the "sda_pin" and "scl_pin" members from the platform data struct, as they no longer serve any purpose after this patch. I won't be doing those changes though. My sponsor's budget is limited, so I'm just having to do the minimum I can get away with. Maybe someone from TI can take it further? Mike. Met vriendelijke groet / kind regards, Mike Looijmans TOPIC Embedded Systems Eindhovenseweg 32-C, NL-5683 KH Best Postbus 440, NL-5680 AK Best Telefoon: (+31) (0) 499 33 69 79 Telefax: (+31) (0) 499 33 69 70 E-mail: mike.looijm...@topic.nl Website: www.topic.nl Please consider the environment before printing this e-mail -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] i2c-davinci: Implement a bus recovery that actually works
On Fri, Feb 28, 2014 at 11:32:05AM +0100, mike.looijm...@topic.nl wrote: > From: Mike Looijmans > > Having a board where the I2C bus locks up occasionally made it clear > that the bus recovery in the i2c-davinci driver will only work on > some boards, because on regular boards, this will only toggle GPIO > lines that aren't muxed to the actual pins. > > The I2C controller has the built-in capability to bit-bang its lines. > Use this to implement a generic recovery routine that puts the > controller in GPIO mode and pulse the clk lines until both SDA and > SCL return to a high state. > > Because the controller must be held in reset while doing so, the > recovery routine must re-init the controller. Since this was already > being done after each call to i2c_recover_bus, move that call into > the recovery routine as well. > > Tested on a custom board with OMAP-L138, and after this change, the > board can recover from chips keeping SDA low. > > Note: This is an adapted port from 2.6.37 code, and was only tested > with that kernel. What about using struct i2c_bus_recovery_info, so the actual recovery logic is taken from the core? Thanks, Wolfram signature.asc Description: Digital signature