On 05/02/2016 11:58 AM, Laxman Dewangan wrote:
Toggling OE bit is something emulating the open drain here.
From the perspective of the external HW that's attached to the GPIO, I believe there's no difference.
I think idea is that when we configure the pin in open drain then it
should be automatically handled by HW when we want to set pin state
high or low. When we set low, the pin should be driven and when high
then it should be tristated input. We should not need any direction bit
setting.
I don't imagine anything in the kernel cares, so long as the correct logic level is present on the pin based on whatever GPIO API was last called.
I'd be very surprised if there wasn't hardware that could only implement open-drain by this "emulation" method, so I'd be very surprised if something prohibited that implementation style.
Otherwise, if pin is configured as open drain then:
Set out = 0
and when it need to set pin to high then oe = 0 else oe =1. Do not
toggle any other bits.
On this case, we need to store that pin is configured as open drain so
that set_value should toggle OE instead of OUT.
That sounds like a reasonable implementation.
Or do you want to have different implementation?