Re: [RFC] i2c: designware: Avoid initcall and initialize the driver like a regular one

From: Wolfram Sang
Date: Mon Dec 22 2014 - 14:02:55 EST


On Mon, Dec 22, 2014 at 03:15:49PM -0300, Walter Lozano wrote:
> Currently, the driver is relying on a subsys_initcall() to register
> the platform driver struct. This is typically done to allow early uses
> of the I2C bus (for instance, I2C regulators used from early machine code).
>
> While this might work on some cases, it breaks on others. For instance,
> I2C devices with GPIO-wired interrupts will fail to request the
> interrupt because of this initcall usage.
>
> This commits attempts to fix the above issue, by converting the I2C
> driver into a regular kernel platform driver. This guarantees it will
> probe after GPIOs drivers.
>
> Platforms based on devicetree won't be affected by this change.

Huh, why is that?

> Legacy platforms, relying on the I2C being available early, might need
> to implement proper defered mechanisms to overcome potential problems.

NAK. We can't say "Let's cause a regression to force people to fix
things that used to work" IMO. You exactly pointed out the problem that using
subsys_initcall() creates.

What about fixing the drivers you use to support deferred probing when
acquitin the irq?

Regards,

Wolfram

Attachment: signature.asc
Description: Digital signature