[PATCH 3/5] gpio/omap: Add DT support to GPIO driver
From: Javier Martinez Canillas <hidden>
Date: 2013-02-27 03:47:42
Also in:
linux-devicetree, linux-omap
On Wed, Feb 27, 2013 at 12:08 AM, Jon Hunter [off-list ref] wrote:
On 02/26/2013 04:01 AM, Javier Martinez Canillas wrote: [snip]quoted
I was wondering if the level/edge settings for gpios is working on OMAP. I'm adding DT support for an SMSC911x ethernet chip connected to the GPMC for an OMAP3 SoC based board. In the smsc911x driver probe function (smsc911x_drv_probe() in drivers/net/ethernet/smsc/smsc911x.c), a call to request_irq() with the flag IRQF_TRIGGER_LOW is needed because of the wiring on my board. Reading the gpio-omap.txt documentation it says that #interrupt-cells should be <2> and that a value of 8 is "active low level-sensitive". So I tried this: &gpmc { ethernet at 5,0 { pinctrl-names = "default"; pinctrl-0 = <&smsc911x_pins>; compatible = "smsc,lan9221", "smsc,lan9115"; reg = <5 0 0xff>; /* CS5 */ interrupt-parent = <&gpio6>; interrupts = <16 8>; /* gpio line 176 */ interrupt-names = "smsc911x irq"; vmmc-supply = <&vddvario>; vmmc_aux-supply = <&vdd33a>; reg-io-width = <4>;By the way, reg-io-width for omap does not look correct. The GPMC only supports 8-bit or 16-bit devices IIRC. I believe all my omap boards use 16-bit.
I thought that even when the GPMC was a 16-bit external memory
controller it could do some access adaptation to support 32-bit
devices.
By looking at the board files for others OMAP3 based boards
(board-{omap3evm,overo,zoom-debugboard}.c) most of them set the struct
omap_smsc911x_platform_data .flags member to SMSC911X_USE_32BIT.
And by looking at Documentation/devicetree/bindings/net/smsc911x.txt I
thought that the corresponding DT property for this flag was
"reg-io-width"
Anyway, I tried using both reg-io-width = <4> and reg-io-width = <2>.
The ethernet chip works with both of them and I don't see too much
difference in performance:
16-bit
round-trip min/avg/max = 0.611/0.738/0.946 ms
32-bit
round-trip min/avg/max = 0.519/0.690/0.976 ms
So, is your call ;-)
Cheers Jon
Thanks a lot for your help, Javier