aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2019-06-27Merge tag 'gpio-v5.3-updates-for-linus' of ↵Linus Walleij5-75/+33
git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux into devel gpio: updates for v5.3 - add include/linux/gpio.h to .gitignore in /tools - improve and simplify code in the em driver - simplify code in max732x by using devm helpers (including the new devm_i2c_new_dummy_device()) - fix SPDX header for madera - remove checking of return values of debugfs routines in gpio-mockup
2019-06-27gpio: siox: Switch to IRQ_TYPE_NONELinus Walleij1-1/+1
The siox driver is hardcoding a default type of IRQ_TYPE_EDGE_RISING to the irq helper, but this should only be applicable to old boardfiles and odd device tree irqchips with just onecell irq (no flags). I doubt this is the case with the siox, I think all consumers specify the flags they use in the device tree. Acked-by: Uwe Kleine-König <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-27gpio: siox: Do not call gpiochip_remove() on errorpathLinus Walleij1-5/+2
gpiochip_remove() was called on the errorpath if gpiochip_add() failed: this is wrong, if the chip failed to add it is not there so it should not be removed. Fixes: be8c8facc707 ("gpio: new driver to work with a 8x12 siox") Acked-by: Uwe Kleine-König <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-27gpio: pl061: Pass irqchip when adding gpiochipLinus Walleij1-14/+16
We need to convert all old gpio irqchips to pass the irqchip setup along when adding the gpio_chip. For chained irqchips this is a pretty straight-forward conversion. Cc: Manivannan Sadhasivam <[email protected]> Reviewed-by: Sudeep Holla <[email protected]> Tested-by: Sudeep Holla <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-27gpio: tegra: No need to cast away return value of debugfs_create_file()Greg Kroah-Hartman1-2/+2
It is fine to ignore the return value (and encouraged), so no need to cast away the return value, you will not get a build warning at all. Cc: Bartosz Golaszewski <[email protected]> Cc: [email protected] Cc: [email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]> Acked-by: Jon Hunter <[email protected]> Acked-by: Thierry Reding <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-27gpio: No need to cast away return value of debugfs_create_file()Greg Kroah-Hartman1-2/+2
It is fine to ignore the return value (and encouraged), so need to cast away the return value, you will not get a build warning at all. Cc: Bartosz Golaszewski <[email protected]> Cc: [email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-27gpio: Sort GPIO drivers in MakefileGeert Uytterhoeven1-148/+148
Sort the definitions for the individual GPIO drivers in the Makefile by object file name. Align all entries while we're at it. Signed-off-by: Geert Uytterhoeven <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-27gpio: siox: Use module_siox_driver()Enrico Weigelt1-12/+1
Reduce driver init boilerplate by using the new module_siox_driver() macro. Signed-off-by: Enrico Weigelt <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-27siox: Add helper macro to simplify driver registrationEnrico Weigelt1-0/+10
Add more helper macros for trivial driver init cases, similar to the already existing module_platform_driver() or module_i2c_driver(). This helps to reduce driver init boilerplate. Signed-off-by: Enrico Weigelt <[email protected]> Acked-by: Uwe Kleine-König <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-27gpio: eic-sprd: Use devm_platform_ioremap_resource()Enrico Weigelt, metux IT consult1-7/+2
Use the new helper that wraps the calls to platform_get_resource() and devm_ioremap_resource() together. Signed-off-by: Enrico Weigelt, metux IT consult <[email protected]> Reviewed-by: Baolin Wang <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-27gpio: vr41xx: Use devm_platform_ioremap_resource()Enrico Weigelt, metux IT consult1-14/+5
Use the new helper that wraps the calls to platform_get_resource() and devm_ioremap_resource() together. this driver deserves a bit more cleanup, to get rid of the global variable giu_base, which makes it single-instance-only. Signed-off-by: Enrico Weigelt, metux IT consult <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-27gpio: janz-ttl: Drop unneccessary temp variable devEnrico Weigelt, metux IT consult1-5/+4
don't need the temporary variable "dev", directly use &pdev->dev Signed-off-by: Enrico Weigelt, metux IT consult <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-27gpio: grgpio: Use devm_platform_ioremap_resource()Enrico Weigelt, metux IT consult1-3/+1
Use the new helper that wraps the calls to platform_get_resource() and devm_ioremap_resource() together. Signed-off-by: Enrico Weigelt, metux IT consult <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-27gpio: ep93xx: Use devm_platform_ioremap_resource()Enrico Weigelt, metux IT consult1-5/+2
Use the new helper that wraps the calls to platform_get_resource() and devm_ioremap_resource() together. Signed-off-by: Enrico Weigelt, metux IT consult <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-27gpio: amdpt: Drop unneeded deref of &pdev->devEnrico Weigelt, metux IT consult1-5/+5
We already have the struct device* pointer in a local variable, so we can write this a bit shorter. Signed-off-by: Enrico Weigelt, metux IT consult <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-27gpio: rcar: Pedantic formattingEnrico Weigelt, metux IT consult1-1/+1
A tab sneaked in, where it shouldn't be. Reviewed-by: Geert Uytterhoeven <[email protected]> Signed-off-by: Enrico Weigelt, metux IT consult <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-27gpio: Add comments on #if/#else/#endifEnrico Weigelt3-11/+11
Improve readability a bit by commenting #if/#else/#endif statements with the checked preprocessor symbols. Signed-off-by: Enrico Weigelt <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-27gpio: amd: Drop unused pdev pointer in privata dataEnrico Weigelt1-2/+0
The pointer to the struct platform_device in the driver's private data struct is never used and therefore can be dropped. Signed-off-by: Enrico Weigelt <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-27gpio: mockup: no need to check return value of debugfs_create functionsGreg Kroah-Hartman1-16/+5
When calling debugfs functions, there is no need to ever check the return value. The function can work or not, but the code logic should never do something different based on this. Cc: Bamvor Jian Zhang <[email protected]> Cc: Linus Walleij <[email protected]> Cc: Bartosz Golaszewski <[email protected]> Cc: [email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]> [Bartosz: removed one more check for debugfs return value] Signed-off-by: Bartosz Golaszewski <[email protected]> Reviewed-by: Linus Walleij <[email protected]>
2019-06-26gpio: madera: Fixup SPDX headersCharles Keepax1-5/+1
GPL-2.0-only is the preferred way of expressing v2 of the GPL, so switch to that and remove some redundant copyright notices. Signed-off-by: Charles Keepax <[email protected]> Signed-off-by: Bartosz Golaszewski <[email protected]>
2019-06-14gpio: Drop the parent_irq from gpio_irq_chipLinus Walleij2-18/+19
We already have an array named "parents" so instead of letting one point to the other, simply allocate a dynamic array to hold the parents, just one if desired and drop the number of members in gpio_irq_chip by 1. Rename gpiochip to gc in the process. Signed-off-by: Linus Walleij <[email protected]>
2019-06-14gpio: Add GPIOLIB_IRQCHIP cleanup to TODOLinus Walleij1-0/+40
We now have two APIs for registering GPIOLIB_IRQCHIP, this is not working and creating confusion. Add a TODO item to fix it up. Cc: Thierry Reding <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-14gpio: ftgpio: Pass irqchip when adding gpiochipLinus Walleij1-16/+19
We need to convert all old gpio irqchips to pass the irqchip setup along when adding the gpio_chip. For chained irqchips this is a pretty straight-forward conversion. Cc: Thierry Reding <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: Fix lost edge wake-up interruptsTony Lindgren1-1/+11
If an edge interrupt triggers while entering idle just before we save GPIO datain register to saved_datain, the triggered GPIO will not be noticed on wake-up. This is because the saved_datain and GPIO datain are the same on wake-up in omap_gpio_unidle(). Let's fix this by ignoring any pending edge interrupts for saved_datain. This issue affects only idle states where the GPIO module internal wake-up path is operational. For deeper idle states where the GPIO module gets powered off, Linux generic wakeirqs must be used for the padconf wake-up events with pinctrl-single driver. For examples, please see "interrupts-extended" dts usage in many drivers. This issue can be somewhat easily reproduced by pinging an idle system with smsc911x Ethernet interface configured IRQ_TYPE_EDGE_FALLING. At some point the smsc911x interrupts will just stop triggering. Also if WLCORE WLAN is used with EDGE interrupt like it's documentation specifies, we can see lost interrupts without this patch. Note that in the long run we may be able to cancel entering idle by returning an error in gpio_omap_cpu_notifier() on pending interrupts. But let's fix the bug first. Also note that because of the recent clean-up efforts this patch does not apply directly to older kernels. This does fix a long term issue though, and can be backported as needed. Cc: Aaro Koskinen <[email protected]> Cc: Grygorii Strashko <[email protected]> Cc: Keerthy <[email protected]> Cc: Ladislav Michl <[email protected]> Cc: Peter Ujfalusi <[email protected]> Cc: Russell King <[email protected]> Cc: Tero Kristo <[email protected]> Signed-off-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12fmc: Delete the FMC subsystemLinus Walleij27-3257/+0
The FMC subsystem was created in 2012 with the ambition to drive development of drivers for this hardware upstream. The current implementation has architectural flaws and would need to be revamped using real hardware to something that can reuse existing kernel abstractions in the subsystems for e.g. I2C, FPGA and GPIO. We have concluded that for the mainline kernel it will be better to delete the subsystem and start over with a clean slate when/if an active maintainer steps up. For details see: https://lkml.org/lkml/2018/10/29/534 Suggested-by: Federico Vaga <[email protected]> Cc: Pat Riehecky <[email protected]> Acked-by: Alessandro Rubini <[email protected]> Signed-off-by: Federico Vaga <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: clean up register access in omap2_set_gpio_debounce()Russell King1-3/+1
Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: irq_startup() must not return error codesRussell King1-5/+0
The irq_startup() method returns an unsigned int, but in __irq_startup() it is assigned to an int. However, nothing checks for errors, so any error that is returned is ignored. Remove the check for GPIO-input mode and the error return. Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: clean up wakeup handlingRussell King1-23/+13
Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: constify register tablesRussell King2-7/+7
We must never alter the register tables; these are read-only as far as the driver is concerned. Constify these tables. Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: clean up omap_gpio_restore_context()Russell King1-21/+15
Use local variables to store the base iomem address and regs table pointer like omap_gpio_init_context() does. Not only does this make the function neater, it also avoids unnecessary reloads of the same data multiple times. Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: remove dataout variation in context handlingRussell King1-10/+2
When a GPIO block has the set/clear dataout registers implemented, it also has the normal dataout register implemented. Reading this register reads the current GPIO output state, and writing it sets the GPIOs to the explicit state. This is the behaviour that we want when saving and restoring the context, so use the dataout register exclusively. Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: simplify omap_set_gpio_irqenable()Russell King1-46/+15
omap_set_gpio_irqenable() calls two helpers that are almost the same apart from whether they set or clear bits. We can consolidate these: - in the set/clear bit register case, we can perform the operation on our saved context copy and write the appropriate set/clear register. - otherwise, we can use our read-modify-write helper and invert enable if irqenable_inv is set. Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: simplify omap_toggle_gpio_edge_triggering()Russell King1-18/+4
This function open-codes an exclusive-or bitwise operation using an if() statement and explicitly setting or clearing the bit. Instead, use an exclusive-or operation instead, and simplify the function. We can combine the preprocessor conditional using IS_ENABLED() and gain some additional compilation coverage. Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: simplify read-modify-writeRussell King1-53/+30
We already have a read-modify-write helper, but there's more that can be done with a read-modify-write helper if it returned the new value. Modify the existing helper to return the new value, and arrange for it to take one less argument by having the caller compute the register address. Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: simplify bank->level_maskRussell King1-4/+3
bank->level_mask is merely the bitwise or of the level detection context which we have already read in this function. Rather than repeating additional reads, compute it from the values already read. Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: simplify set_multiple()Russell King1-38/+7
One of the reasons for set_multiple() to exist is to allow multiple GPIOs on the same chip to be changed simultaneously - see commit 5f42424354f5 ("gpiolib: allow simultaneous setting of multiple GPIO outputs"): - Simultaneous glitch-free setting of multiple pins on any kind of parallel bus attached to GPIOs provided they all reside on the same chip and bank. In order for this to work, we should not use the atomic set/clear registers, but instead read-modify-write the dataout register. We already take the spinlock to ensure that happens atomically, so move the code into the set_multiple() function and kill the two helper functions. Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: simplify get_multiple()Russell King1-25/+11
There is no reason to have helper functions to read the datain and dataout registers when they are only used in one location. Simplify this code to make it more readable. Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: simplify get() methodRussell King1-19/+6
omap_gpio_get() calls omap_get_gpio_datain() or omap_get_gpio_dataout() to read the GPIO state. These two functions are only called from this method, so they don't add much value. Move their contents into omap_gpio_get() method and simplify. Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: simplify omap_gpio_get_direction()Russell King1-10/+3
Architectures are single-copy atomic, which means that simply reading a register is an inherently atomic operation. There is no need to take a spinlock here. Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: move omap_gpio_request() and omap_gpio_free()Russell King1-32/+32
Move these two functions to live beside the rest of the gpio chip implementation, rather than in the middle of the irq chip implementation. Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: remove irq_ack methodRussell King1-14/+3
The irq_ack method does not fit our hardware requirements. Edge interrupts must be cleared before we handle them, and level interrupts must be cleared after handling them. We handle the interrupt clearance in our interrupt handler for edge IRQs and in the unmask method for level IRQs. Replace the irq_ack method with the no-op method from the dummy irq chip. Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: clean up edge interrupt handlingRussell King1-11/+9
The edge interrupt handling was effectively: isr = ISR_reg & enabled; if (bank->level_mask) level_mask = bank->level_mask & enabled; else level_mask = 0; edge = isr & ~level_mask; When bank->level_mask is zero, level_mask will be computed as zero anyway, so the if() statement is redundant. We are then left with: isr = ISR_reg & enabled; level_mask = bank->level_mask & enabled; edge = isr & ~level_mask; This can be simplified further to: isr = ISR_reg & enabled; edge = isr & ~bank->level_mask; since the second mask with 'enabled' is redundant. Improve the associated comment as well. Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: remove remainder of list managementRussell King1-2/+0
Commit c4791bc6e3a6 ("gpio: omap: drop omap_gpio_list") removed the list head and addition to the list head of each gpio bank, but failed to remove the list_del() call and the node inside struct gpio_bank. Remove these too. Fixes: c4791bc6e3a6 ("gpio: omap: drop omap_gpio_list") Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: fix lack of irqstatus_raw0 for OMAP4Russell King1-0/+2
Commit 384ebe1c2849 ("gpio/omap: Add DT support to GPIO driver") added the register definition tables to the gpio-omap driver. Subsequently to that commit, commit 4e962e8998cc ("gpio/omap: remove cpu_is_omapxxxx() checks from *_runtime_resume()") added definitions for irqstatus_raw* registers to the legacy OMAP4 definitions, but missed the DT definitions. This causes an unintentional change of behaviour for the 1.101 errata workaround on OMAP4 platforms. Fix this oversight. Fixes: 4e962e8998cc ("gpio/omap: remove cpu_is_omapxxxx() checks from *_runtime_resume()") Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12gpio: omap: ensure irq is enabled before wakeupRussell King1-7/+8
Documentation states: NOTE: There must be a correlation between the wake-up enable and interrupt-enable registers. If a GPIO pin has a wake-up configured on it, it must also have the corresponding interrupt enabled (on one of the two interrupt lines). Ensure that this condition is always satisfied by enabling the detection events after enabling the interrupt, and disabling the detection before disabling the interrupt. This ensures interrupt/wakeup events can not happen until both the wakeup and interrupt enables correlate. If we do any clearing, clear between the interrupt enable/disable and trigger setting. Signed-off-by: Russell King <[email protected]> Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Tony Lindgren <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-12Merge branch 'ib-snps-reset-gpio' into develLinus Walleij1-0/+6
2019-06-12gpio: of: parse stmmac PHY reset line specific active-low propertyMartin Blumenstingl1-0/+6
The stmmac driver currently ignores the GPIO flags which are passed via devicetree because it operates with legacy GPIO numbers instead of GPIO descriptors. stmmac assumes that the GPIO is "active HIGH" by default. This can be overwritten by setting "snps,reset-active-low" to make the reset line "active LOW". Recent Amlogic SoCs (G12A which includes S905X2 and S905D2 as well as G12B which includes S922X) use GPIOZ_14 or GPIOZ_15 for the PHY reset line. These GPIOs are special because they are marked as "3.3V input tolerant open drain" pins which means they can only drive the pin output LOW (to reset the PHY) or to switch to input mode (to take the PHY out of reset). The GPIO subsystem already supports this with the GPIO_OPEN_DRAIN and GPIO_OPEN_SOURCE flags in the devicetree bindings. Add the stmmac PHY reset line specific active low parsing to gpiolib-of so stmmac can be ported to GPIO descriptors while being backwards compatible with device trees which use the "old" way of specifying the polarity. Signed-off-by: Martin Blumenstingl <[email protected]> Reviewed-by: Linus Walleij <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-10gpio: altera: Allocate irq_chip dynamicallyPhil Reid1-12/+11
Keeping the irq_chip definition static shares it with multiple instances of the altera gpiochip in the system. This is bad and now we get this warning from gpiolib core: "detected irqchip that is shared with multiple gpiochips: please fix the driver." Hence, move the irq_chip definition from being driver static into the struct altera_gpio_chips. So a unique irq_chip is used for each gpiochip instance. Signed-off-by: Phil Reid <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-10gpio: xilinx: convert from OF GPIO to standard devm APIsRobert Hancock2-55/+36
This driver was using the OF GPIO helper API, but barely used any of its features and it cost more code than it saved. Also, the OF GPIO code is now deprecated. Convert it to use a more standard setup and use devm APIs for initialization to avoid the need for a remove function. Our rationale for this change is that we are using the Xilinx GPIO with resources injected using the MFD core rather than on the device tree itself. Using platform rather than OF-specific resources allows this to work for free. Signed-off-by: Robert Hancock <[email protected]> Acked-by: Michal Simek <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-06-10fmc: Decouple from Linux GPIO subsystemLinus Walleij2-9/+10
FMC has its own GPIO handling, the inclusion of <linux/gpio.h> is only to reuse some flags that we can just as well provide using local defines. Cc: Federico Vaga <[email protected]> Cc: Pat Riehecky <[email protected]> Acked-by: Alessandro Rubini <[email protected]> Signed-off-by: Linus Walleij <[email protected]>