Skip to contentSkip to conversation

iio: dht11 broken

DISCUSSION Richard Weinberger 3 participants 5 messages Nov 30, 2014 – Dec 1, 2014

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hi!

Staring with 3.12 gpiolib refuses to set an GPIO used as IRQ into output mode. see commit d468bf9e (gpio: add API to be strict about GPIO IRQ usage) The dht driver does this and is therefore not functional.
As the dht11 driver got merged in 3.13 there is a high chance that it never worked.

Harald, are you aware of this issue?

Thanks,
//richard

#1 lore raw

Hi Richard!

Quoted 5 lines · Richard Weinberger

Staring with 3.12 gpiolib refuses to set an GPIO used as IRQ into output mode. see commit d468bf9e (gpio: add API to be strict about GPIO IRQ usage) The dht driver does this and is therefore not functional.
As the dht11 driver got merged in 3.13 there is a high chance that it never worked.

Well, I'm developing on mxs and there it works on 3.13 and 3.14 at least. (I have it in production using 3.14.18 ATM.)

Quoted 1 line

Harald, are you aware of this issue?

I got one report about this issue, but couldn't reproduce it yet and the reporter didn't agree to quoting his messages to kernel mailing lists, so this has been rather low priority on my todo list. Next plan is to see if I can reproduce the issue on sunxi (A10).

However anybody able to reproduce this and willing to test patches, would of course push this up on my todo list.

Any input from gpiolib people about what the proper fix would be in their opinion, of course is appreciated. I don't think the dht11 driver is doing anything unreasonable per se, so maybe they can clarify how the API is intended to be used?

Harald

#2 lore raw

Hi!

Am 01.12.2014 um 11:49 schrieb Harald Geyer:

Quoted 12 lines

Hi Richard!

Quoted 5 lines · Richard Weinberger

Staring with 3.12 gpiolib refuses to set an GPIO used as IRQ into output mode. see commit d468bf9e (gpio: add API to be strict about GPIO IRQ usage) The dht driver does this and is therefore not functional.
As the dht11 driver got merged in 3.13 there is a high chance that it never worked.

Well, I'm developing on mxs and there it works on 3.13 and 3.14 at least. (I have it in production using 3.14.18 ATM.)

Quoted 6 lines
Quoted 1 line

Harald, are you aware of this issue?

I got one report about this issue, but couldn't reproduce it yet and the reporter didn't agree to quoting his messages to kernel mailing lists, so this has been rather low priority on my todo list. Next plan is to see if I can reproduce the issue on sunxi (A10).

Not all gpio drivers use the new IRQ lock stuff.

Quoted 7 lines

However anybody able to reproduce this and willing to test patches, would of course push this up on my todo list.

Any input from gpiolib people about what the proper fix would be in their opinion, of course is appreciated. I don't think the dht11 driver is doing anything unreasonable per se, so maybe they can clarify how the API is intended to be used?

Your driver sets up a GPIO as IRQ and then you switch the mode to output to enable the DHT sensor.
This is not an API issue, it is an design issue.
I'm not a hardware expert but AFAIK setting an IRQ pin into output mode can lead to undefined behavior.

Thanks,
//richard

#3 lore raw
Quoted 7 lines · Richard Weinberger

Am 01.12.2014 um 11:49 schrieb Harald Geyer:

Quoted 4 lines

Any input from gpiolib people about what the proper fix would be in their opinion, of course is appreciated. I don't think the dht11 driver is doing anything unreasonable per se, so maybe they can clarify how the API is intended to be used?

Quoted 5 lines

Your driver sets up a GPIO as IRQ and then you switch the mode to output to enable the DHT sensor.
This is not an API issue, it is an design issue.
I'm not a hardware expert but AFAIK setting an IRQ pin into output mode can lead to undefined behavior.

Well that check is there exactly to prevent madness like this.

IRQs on pins set to output *does* *not* *make* *sense*.

Remove the IRQ before setting the pin to output and vice versa and everyone will be happier.

Yours,
Linus Walleij

#4 lore raw

Am 01.12.2014 um 15:08 schrieb Linus Walleij:

Quoted 14 lines · Richard Weinberger
Quoted 7 lines

Am 01.12.2014 um 11:49 schrieb Harald Geyer:

Quoted 4 lines

Any input from gpiolib people about what the proper fix would be in their opinion, of course is appreciated. I don't think the dht11 driver is doing anything unreasonable per se, so maybe they can clarify how the API is intended to be used?

Quoted 5 lines

Your driver sets up a GPIO as IRQ and then you switch the mode to output to enable the DHT sensor.
This is not an API issue, it is an design issue.
I'm not a hardware expert but AFAIK setting an IRQ pin into output mode can lead to undefined behavior.

Quoted 6 lines

Well that check is there exactly to prevent madness like this.

IRQs on pins set to output *does* *not* *make* *sense*.

Remove the IRQ before setting the pin to output and vice versa and everyone will be happier.

Thanks for the confirmation.
I'll cook up a patch.

Thanks,
//richard