On 5/09/2018 12:39 AM, Andy Shevchenko wrote:
On Tue, Sep 4, 2018 at 3:34 PM Wolfram Sang <wsa@xxxxxxxxxxxxx> wrote:
LGTM.
Though I would expect that call back optional, so, it means that I2C
core, perhaps, may put some generic one as a stub.
Right, stupid me. After some many variations, I missed to add one
condition to this version. It should have been something like the
following:
- ret = adap->algo->master_xfer(adap, msgs, num);
+ if (in_atomic() || irqs_disabled())
if (adap->algo->master_xfer_irqless && (in_atomic() || irqs_disabled()))
I think something like
if (in_atomic() || irqs_disabled()) {
if (adap->algo->master_xfer_irqless)
ret = adap->algo->master_xfer_irqless(adap, msgs, num);
else
ret = -ENOTSUPP;
}
At the moment I have an i2c gpio that is set to power off the system.
A design flaw for sure but somehow it is working and so far no problems.
Would this break that, vs falling back to the existing behaviour of
calling master_xfer as proposed.
+ ret = adap->algo->master_xfer_irqless(adap, msgs, num);
+ else
+ ret = adap->algo->master_xfer(adap, msgs, num);
+
if (ret != -EAGAIN)
break;
--
Regards
Phil Reid