aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2019-02-22drivers: depend on HAS_IOMEM for devm_platform_ioremap_resource()Bartosz Golaszewski1-0/+2
We only build devm_ioremap_resource() if HAS_IOMEM is selected, so this dependency must cascade down to devm_platform_ioremap_resource(). Signed-off-by: Bartosz Golaszewski <[email protected]> Acked-by: Greg Kroah-Hartman <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-21gpio: tqmx86: Set proper output level for direction_outputAxel Lin1-2/+3
For output-only gpios, direction_output should set proper output level. Signed-off-by: Axel Lin <[email protected]> Fixes: b868db94a6a7 ("gpio: tqmx86: Add GPIO from for this IO controller") Reviewed-by: Andrew Lunn <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-21gpio: sprd: Change to use SoC compatible stringBaolin Wang1-1/+1
Change to use SoC compatible string instead of wildcard string. The Spreadtrum SC9860 platform device trees and drivers' development are still in progress, and now we will always recompile and ship device trees at the same time as we will compile and ship the kernel, so we do not need care about the backwards compatibility. Signed-off-by: Baolin Wang <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-21gpio: sprd: Use SoC compatible string instead of wildcard stringBaolin Wang1-2/+2
Use SoC compatible string instead of wildcard string. Reviewed-by: Rob Herring <[email protected]> Signed-off-by: Baolin Wang <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-21gpio: of: Handle both enable-gpio{,s}Marek Vasut1-1/+2
Handle both enable-gpio and enable-gpios properties of the GPIO regulator in the quirk. The later is the preferred modern name of the property. Signed-off-by: Marek Vasut <[email protected]> Cc: Geert Uytterhoeven <[email protected]> Cc: Jan Kotas <[email protected]> Cc: Linus Walleij <[email protected]> Cc: Mark Brown <[email protected]> Cc: Thierry Reding <[email protected]> Cc: Wolfram Sang <[email protected]> Cc: [email protected] To: [email protected] Signed-off-by: Linus Walleij <[email protected]>
2019-02-21gpio: of: Restrict enable-gpio quirk to regulator-gpioThierry Reding1-2/+2
Commit 0e7d6f940164 ("gpio: of: Apply regulator-gpio quirk only to enable-gpios") breaks the device tree ABI specified in the device tree bindings for fixed regulators (compatible "regulator-fixed"). According to these bindings the polarity of the GPIO is exclusively controlled by the presence or absence of the enable-active-high property. As such the polarity quirk implemented in of_gpio_flags_quirks() must be applied to the GPIO specified for fixed regulators. However, commit 0e7d6f940164 ("gpio: of: Apply regulator-gpio quirk only to enable-gpios") restricted the quirk to the enable-gpios property for fixed regulators as well, whereas according to the commit message itself it should only apply to "regulator-gpio" compatible device tree nodes. Fix this by actually implementing what the offending commit intended, which is to ensure that the quirk is applied to the GPIO specified by the "enable-gpio" property for the "regulator-gpio" bindings only. This fixes a regression on Jetson TX1 where the fixed regulator for the HDMI +5V pin relies on the flags quirk for the proper polarity. Fixes: 0e7d6f940164 ("gpio: of: Apply regulator-gpio quirk only to enable-gpios") Signed-off-by: Thierry Reding <[email protected]> Tested-by: Marek Vasut <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-21gpio: davinci: use devm_platform_ioremap_resource()Bartosz Golaszewski1-3/+1
Use the new helper that wraps the calls to platform_get_resource() and devm_ioremap_resource() together. Signed-off-by: Bartosz Golaszewski <[email protected]> Reviewed-by: Andy Shevchenko <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-21drivers: provide devm_platform_ioremap_resource()Bartosz Golaszewski2-0/+21
There are currently 1200+ instances of using platform_get_resource() and devm_ioremap_resource() together in the kernel tree. This patch wraps these two calls in a single helper. Thanks to that we don't have to declare a local variable for struct resource * and can omit the redundant argument for resource type. We also have one function call less. Signed-off-by: Bartosz Golaszewski <[email protected]> Acked-by: Greg Kroah-Hartman <[email protected]> Reviewed-by: Andy Shevchenko <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-21Merge branch 'ib-qcom-ssbi' into develLinus Walleij12-184/+236
2019-02-20Documentation: gpio: legacy: Don't use POLLERR for poll(2)Uwe Kleine-König1-5/+4
According to the manpage of poll(2) and also looking at the respective syscall providing POLLERR in .events is a no-op. So don't recommend using it. Signed-off-by: Uwe Kleine-König <[email protected]> Reviewed-by: Bartosz Golaszewski <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-20gpio: pca953x: Add wake-up supportGeert Uytterhoeven1-0/+9
Implement the irq_set_wake() method in the (optional) irq_chip of the GPIO expander, and propagate wake-up settings to the upstream interrupt controller. This allows GPIOs connected to a PCA953X GPIO expander to serve as wake-up sources. Signed-off-by: Geert Uytterhoeven <[email protected]> Reviewed-by: Niklas Söderlund <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-20Merge tag 'gpio-v5.1-updates-for-linus-part-2' of ↵Linus Walleij2-27/+174
git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux into devel gpio: updates for v5.1 - part 2 - gpio-mockup updates improving the user-space testing interface and adding line state tracking for correct edge interrupts - interrupt simulator patch exposing the irq type configuration to users
2019-02-19gpio: tegra: Fix offset of pinctrl callsLinus Walleij1-4/+21
This patch hunk is a lightly modified version of a diff found in a Tegra code dump from a product tree. It makes a lot of sense because this is what most drivers do. Cc: Thierry Reding <[email protected]> Cc: Stefan Agner <[email protected]> Cc: Dmitry Osipenko <[email protected]> Cc: Jon Hunter <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-19gpio: mockup: rework debugfs interfaceBartosz Golaszewski1-14/+103
Modify the way the debugfs interface works in gpio-mockup. Introduce the concept of dummy pull config which will keep the mockup lines in known state. The pull values can be modified by writing to the debugfs files corresponding to lines. Lines in input mode always report the current pull value, lines in output mode change the line value but it will revert back to the one specified by current pull when released. Signed-off-by: Bartosz Golaszewski <[email protected]>
2019-02-19gpio: mockup: change the signature of unlocked get/set helpersBartosz Golaszewski1-11/+8
The unlocked variants only get called from places where we already have the pointer to the underlying gpio_mockup_chip structure, so take it as parameter instead of struct gpio_chip. Signed-off-by: Bartosz Golaszewski <[email protected]>
2019-02-19gpio: mockup: change the type of 'offset' to unsigned intBartosz Golaszewski1-1/+1
This field can never be negative. Signed-off-by: Bartosz Golaszewski <[email protected]>
2019-02-19gpio: mockup: don't create the debugfs link named after the labelBartosz Golaszewski1-5/+1
User-space tests no longer use it and we're breaking the interface anyway. Signed-off-by: Bartosz Golaszewski <[email protected]>
2019-02-19gpio: mockup: implement get_multiple()Bartosz Golaszewski1-0/+17
We already support set_multiple(). Implement get_multiple() as well. Signed-off-by: Bartosz Golaszewski <[email protected]>
2019-02-19gpio: mockup: add lockingBartosz Golaszewski1-7/+43
While no user reported any race condition problems with gpio-mockup, let's be on the safe side and use a mutex when performing any changes on the dummy chip structures. Suggested-by: Uwe Kleine-König <[email protected]> Signed-off-by: Bartosz Golaszewski <[email protected]>
2019-02-19irq/irq_sim: add irq_set_type() callbackBartosz Golaszewski1-0/+12
Implement the irq_set_type() callback and call irqd_set_trigger_type() internally so that users interested in the configured trigger type can later retrieve it using irqd_get_trigger_type(). We only support edge trigger types. Signed-off-by: Bartosz Golaszewski <[email protected]> Acked-by: Marc Zyngier <[email protected]>
2019-02-17gpio: of: Apply regulator-gpio quirk only to enable-gpiosMarek Vasut1-0/+1
Since commit d6cd33ad7102 ("regulator: gpio: Convert to use descriptors") the GPIO regulator had inverted the polarity of the control GPIO. This problem manifested itself on systems with DT containing the following description (snippet from salvator-common.dtsi): gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>; gpios-states = <1>; states = <3300000 1 1800000 0>; Prior to the aforementioned commit, the gpio-regulator code used gpio_request_array() to claim the GPIO(s) specified in the "gpios" DT node, while the commit changed that to devm_gpiod_get_index(). The legacy gpio_request_array() calls gpio_request_one() and then gpiod_request(), which parses the DT flags of the "gpios" node and populates the GPIO descriptor flags field accordingly. The new devm_gpiod_get_index() calls gpiod_get_index(), then of_find_gpio(), of_get_named_gpiod_flags() with flags != NULL, and then of_gpio_flags_quirks(). Since commit a603a2b8d86e ("gpio: of: Add special quirk to parse regulator flags"), of_gpio_flags_quirks() contains a quirk for regulator-gpio which was never triggered by the legacy gpio_request_array() code path, but is triggered by devm_gpiod_get_index() code path. This quirk checks whether a GPIO is associated with a fixed or gpio-regulator and if so, checks two additional conditions. First, whether such GPIO is active-low, and if so, ignores the active-low flag. Second, whether the regulator DT node does have an "enable-active-high" property and if the property is NOT present, sets the GPIO flags as active-low. The second check triggers a problem, since it is applied to all GPIOs associated with a gpio-regulator, rather than only on the "enable" GPIOs, as the old code did. This changes the way the gpio-regulator interprets the DT description of the control GPIOs. The old code using gpio_request_array() explicitly parsed the "enable-active-high" DT property and only applied it to the GPIOs described in the "enable-gpios" DT node, and only if those were present. This patch fixes the quirk code by only applying the quirk to "enable-gpios", thus restoring the old behavior. Signed-off-by: Marek Vasut <[email protected]> Cc: Geert Uytterhoeven <[email protected]> Cc: Jan Kotas <[email protected]> Cc: Linus Walleij <[email protected]> Cc: Mark Brown <[email protected]> Cc: Wolfram Sang <[email protected]> Cc: [email protected] To: [email protected] Signed-off-by: Linus Walleij <[email protected]>
2019-02-17Merge tag 'intel-gpio-v5.1-1' of ↵Linus Walleij3-64/+29
git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel into devel intel-gpio for v5.1-1 Small clean up for Intel PMIC GPIO drivers, includes: - optimizing IRQ handlers by usage of for_each_set_bit() - sorting headers alphabetically for better maintenance - conversion to SPDX identifier The following is an automated git shortlog grouped by driver: crystalcove: - Convert to use SPDX identifier - Sort headers alphabetically - Use for_each_set_bit() in IRQ handler msic: - Convert to use SPDX identifier - Sort headers alphabetically - Remove duplicate check in IRQ handler wcove: - Convert to use SPDX identifier - Fix indentation - Sort headers alphabetically - Allow return negative error code from to_reg()
2019-02-17Merge tag 'gpio-v5.1-updates-for-linus' of ↵Linus Walleij1628-8644/+17387
git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux into devel gpio updates for v5.1 - support for a new variant of pca953x - documentation fix from Wolfram - some tegra186 name changes - two minor fixes for madera and altera-a10sr
2019-02-14gpio: altera-a10sr: Trivial coding style fixAxel Lin1-8/+9
Change the coding style to make it does error checking first. This also fixes checkpatch warning about line over 80 characters. Signed-off-by: Axel Lin <[email protected]> Tested by: Thor Thayer <[email protected]> Reviewed by: Thor Thayer <[email protected]> Signed-off-by: Bartosz Golaszewski <[email protected]>
2019-02-14gpio: tegra186: Use TEGRA186_ prefix for GPIO namesThierry Reding1-35/+35
The new prefix allows the GPIOs to be uniquely identified on a per-chip basis, which makes it easier to distinguish Tegra186 specific GPIOs from those of later chips such as Tegra194 which supports a very different set of GPIOs. Signed-off-by: Thierry Reding <[email protected]> Signed-off-by: Bartosz Golaszewski <[email protected]>
2019-02-14Documentation: gpio: driver: fix wire name for I2CWolfram Sang1-1/+1
Typo: the data line is called "SDA" not "SCA". Signed-off-by: Wolfram Sang <[email protected]> Reviewed-by: Geert Uytterhoeven <[email protected]> Signed-off-by: Bartosz Golaszewski <[email protected]>
2019-02-14gpio: madera: Add missing constCharles Keepax1-1/+1
madera_gpio_chip is only used as a template so it can be marked as const. Signed-off-by: Charles Keepax <[email protected]> Signed-off-by: Bartosz Golaszewski <[email protected]>
2019-02-14gpio: pca953x: add support for pcal6416 typeThomas Petazzoni1-0/+1
The NXP PCAL6416, documented at [1], is a variant of the PCA GPIO expander with 16 GPIOs, and supporting an interrupt and the "extended" features for interrupt, pull-up/pull-down configuration, etc. [1] https://www.nxp.com/docs/en/data-sheet/PCAL6416A.pdf Signed-off-by: Thomas Petazzoni <[email protected]> Signed-off-by: Bartosz Golaszewski <[email protected]>
2019-02-14dt-bindings: gpio: pca953x: document the nxp,pcal6416Thomas Petazzoni1-0/+1
The NXP PCAL6416 is a variant of the PCA GPIO expander, with 16 GPIOs. Signed-off-by: Thomas Petazzoni <[email protected]> Signed-off-by: Bartosz Golaszewski <[email protected]>
2019-02-14qcom: ssbi-gpio: correct boundary conditions in pm8xxx_domain_translateBrian Masney1-1/+2
SSBI GPIOs are numbered 1..ngpio, so the boundary check in pm8xxx_domain_translate() is off by one. This patch corrects that check. Signed-off-by: Brian Masney <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-14mfd: pm8xxx: select IRQ_DOMAIN_HIERARCHY in KconfigBrian Masney1-1/+1
Select IRQ_DOMAIN_HIERARCHY for pm8xxx in Kconfig since this driver uses the version 2 IRQ interfaces. IRQ_DOMAIN_HIERARCHY selects IRQ_DOMAIN, so it can be removed from here. Signed-off-by: Brian Masney <[email protected]> Acked-by: Lee Jones <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-14spmi: pmic-arb: select IRQ_DOMAIN_HIERARCHY in KconfigBrian Masney1-1/+1
Select IRQ_DOMAIN_HIERARCHY for pmic-arb in Kconfig since this driver uses the version 2 IRQ interfaces. IRQ_DOMAIN_HIERARCHY selects IRQ_DOMAIN, so it can be removed from here. Signed-off-by: Brian Masney <[email protected]> Reported-by: Randy Dunlap <[email protected]> Acked-by: Randy Dunlap <[email protected]> # build-tested Signed-off-by: Linus Walleij <[email protected]>
2019-02-14gpio: pcf857x: Simpify wake-up handlingGeert Uytterhoeven1-14/+1
Unlike gpio_rcar_irq_set_wake(), which this solution was based on, pcf857x_irq_set_wake() does not need to do anything else than calling irq_set_irq_wake() for the upstream interrupt controller. Hence there is no reason for making this call conditional, and no longer a need for keeping a copy of the interrupt number that also serves as a flag. Just propagate irq_set_irq_wake() to the upstream interrupt controller, using the original interrupt number. Signed-off-by: Geert Uytterhoeven <[email protected]> Reviewed-by: Niklas Söderlund <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-14Merge branch 'ib-pca953x-config' into develLinus Walleij8-18/+127
2019-02-13gpio: sprd: Add missing break in switch statementGustavo A. R. Silva1-0/+1
Fix the following warning by adding a missing break: drivers/gpio/gpio-eic-sprd.c: In function ‘sprd_eic_irq_set_type’: drivers/gpio/gpio-eic-sprd.c:403:3: warning: this statement may fall through [-Wimplicit-fallthrough=] switch (flow_type) { ^~~~~~ drivers/gpio/gpio-eic-sprd.c:435:2: note: here default: ^~~~~~~ This patch is part of the ongoing efforts to enable -Wimplicit-fallthrough. Signed-off-by: Gustavo A. R. Silva <[email protected]> Reviewed-by: Baolin Wang <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-13gpio: zynq: properly support runtime PM for GPIO used as interruptsThomas Petazzoni1-0/+24
The Zynq GPIO driver currently implements runtime PM by: - Enabling runtime PM support in ->probe() and letting the runtime PM reference counter drop to zero at the end of ->probe(). - Increasing the runtime PM reference counter in ->request() and decreasing it in ->free(). However, the latter is not sufficient: when a GPIO is used as an interrupt, ->request() and ->free() are not called. Due to this, the runtime PM counter remains to zero when the only GPIOs in use are used as interrupts, causing them to simply not work. To address this problem, this commit implement the ->irq_request_resources() and ->irq_release_resources() hooks, ensuring that the runtime PM counter is properly incremented/decremented. Since we override the default hooks, we keep the existing behavior by making sure they call gpiochip_reqres_irq() / gpiochip_relres_irq() respectively. Signed-off-by: Thomas Petazzoni <[email protected]> Reviewed-by: Shubhrajyoti Datta <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-13mfd: pm8xxx: revert "disassociate old virq if hwirq mapping already exists"Brian Masney1-6/+0
Now that ssbi-gpio is a proper hierarchical IRQ chip, and all in-tree users of device tree have been updated, we can now drop the hack that was introduced to disassociate the old Linux virq if a hwirq mapping already exists. That patch was introduced to not break git bisect for any existing boards. This change was tested on an APQ8060 DragonBoard. Signed-off-by: Brian Masney <[email protected]> Tested-by: Linus Walleij <[email protected]> Acked-by: Lee Jones <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-13ARM: dts: qcom-apq8060: Fix up interrupt parentsLinus Walleij1-13/+8
Before we fixed up the interrupt hierarchy for the SSBI GPIO controller, we had to use the PM8058 directly to pick interrupts. After making the interrupt controller work properly, we can reference the real interrupt parent. Signed-off-by: Brian Masney <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-13arm: dts: qcom: mdm9615: add interrupt controller propertiesBrian Masney1-7/+2
Add interrupt controller properties now that ssbi-gpio is a proper hierarchical IRQ chip. The interrupts property is no longer needed so remove it. Note that the IRQs started at 24 instead of 192 like all of the other PMICs. This is the same IRQs as the MPP for this board. qcom-pm8xxx.c doesn't set the shared IRQs so this is highly likely to be a copy and paste error. Signed-off-by: Brian Masney <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-13arm: dts: qcom: msm8660: add interrupt controller propertiesBrian Masney1-45/+2
Add interrupt controller properties now that ssbi-gpio is a proper hierarchical IRQ chip. The interrupts property is no longer needed so remove it. This change was tested on an APQ8060 DragonBoard. Signed-off-by: Brian Masney <[email protected]> Tested-by: Linus Walleij <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-13arm: dts: qcom: apq8064: add interrupt controller propertiesBrian Masney1-44/+2
Add interrupt controller properties now that ssbi-gpio is a proper hierarchical IRQ chip. The interrupts property is no longer needed so remove it. This change was not tested on any hardware but the same change was tested on an APQ8060 DragonBoard with no issues. Signed-off-by: Brian Masney <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-13qcom: ssbi-gpio: add support for hierarchical IRQ chipBrian Masney2-12/+124
ssbi-gpio did not have any irqchip support so consumers of this in device tree would need to call gpio[d]_to_irq() in order to get the proper IRQ on the underlying PMIC. IRQ chips in device tree should be usable from the start without the consumer having to make an additional call to get the proper IRQ on the parent. This patch adds hierarchical IRQ chip support to the ssbi-gpio code to correct this issue. The constant PM8XXX_GPIO_PHYSICAL_OFFSET is introduced to replace the hardcoded '1' that previously existed in two places in this driver to improve code readability. This change was tested on an APQ8060 DragonBoard. Signed-off-by: Brian Masney <[email protected]> Tested-by: Linus Walleij <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-13mfd: pm8xxx: disassociate old virq if hwirq mapping already existsBrian Masney1-0/+6
Check to see if the hwirq is already associated with another virq on this IRQ domain. If so, then disassociate it before associating the hwirq with the new virq. This is a temporary hack that is needed in order to not break git bisect for existing boards. The next patch in this series converts ssbi-gpio to be a hierarchical IRQ chip, then there are several patches to update all of the device tree files, and finally this patch will be reverted within the same patch series. IRQs for ssbi-gpio are all initially setup without an IRQ hierarchy this driver is probed due to the interrupts property in device tree. Once ssbi-gpio is converted to be a hierarchical IRQ chip in the next patch, existing users of gpio[d]_to_irq() will call pmic_gpio_to_irq(), and that will use the new IRQ chip code in ssbi-gpio that sets up the IRQ in an IRQ hierarchy. The hwirq is now associated with two Linux virqs and interrupts will not work as expected. This patch corrects that issue. This change was tested on an APQ8060 DragonBoard. Signed-off-by: Brian Masney <[email protected]> Tested-by: Linus Walleij <[email protected]> Acked-by: Lee Jones <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-13mfd: pm8xxx: convert to v2 irq interfaces to support hierarchical IRQ chipsBrian Masney1-37/+38
Convert the PM8XXX IRQ code to use the version 2 IRQ interface in order to support hierarchical IRQ chips. This is necessary so that ssbi-gpio can be setup as a hierarchical IRQ chip with PM8xxx as the parent. IRQ chips in device tree should be usable from the start without having to make an additional call to gpio[d]_to_irq() to get the proper IRQ on the parent. pm8821_irq_domain_ops and pm8821_irq_domain_map are removed by this patch since the irq_chip is now contained in the pm_irq_data struct, and that allows us to use a common IRQ mapping function. This change was tested on an APQ8060 DragonBoard. Signed-off-by: Brian Masney <[email protected]> Tested-by: Linus Walleij <[email protected]> Acked-by: Lee Jones <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-13genirq: introduce irq_chip_mask_ack_parent()Linus Walleij2-0/+12
The hierarchical irqchip never before ran into a situation where the parent is not "simple", i.e. does not implement .irq_ack() and .irq_mask() like most, but the qcom-pm8xxx.c happens to implement only .irq_mask_ack(). Since we want to make ssbi-gpio a hierarchical child of this irqchip, it must *also* only implement .irq_mask_ack() and call down to the parent, and for this we of course need irq_chip_mask_ack_parent(). Cc: Marc Zyngier <[email protected]> Cc: Thomas Gleixner <[email protected]> Acked-by: Marc Zyngier <[email protected]> Signed-off-by: Brian Masney <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-13genirq: introduce irq_domain_translate_twocellBrian Masney2-11/+39
Add a new function irq_domain_translate_twocell() that is to be used as the translate function in struct irq_domain_ops for the v2 IRQ API. This patch also changes irq_domain_xlate_twocell() from the v1 IRQ API to call irq_domain_translate_twocell() in the v2 IRQ API. This required changes to of_phandle_args_to_fwspec()'s arguments so that it can be called from multiple places. Cc: Thomas Gleixner <[email protected]> Reviewed-by: Marc Zyngier <[email protected]> Signed-off-by: Brian Masney <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-13pinctrl: qcom: ssbi-gpio: hardcode IRQ countsBrian Masney1-14/+7
The probing of this driver calls platform_irq_count, which will setup all of the IRQs that are configured in device tree. In preparation for converting this driver to be a hierarchical IRQ chip, hardcode the IRQ count based on the hardware type so that all the IRQs are not configured immediately and are configured on an as-needed basis later in the boot process. This change will also allow for the removal of the interrupts property later in this patch series once the hierarchical IRQ chip support is in. This patch also removes the generic qcom,ssbi-gpio OF match since we don't know the number of pins. All of the existing upstream bindings already include the more-specific binding. This change was tested on an APQ8060 DragonBoard. Signed-off-by: Brian Masney <[email protected]> Tested-by: Linus Walleij <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-13qcom: spmi-gpio: Fix boundary conditions IRQ domain translateBjorn Andersson1-1/+2
GPIOs on the SPMI PMIC are numbered 1..ngpio, so the boundary check in pmic_gpio_domain_translate() is off by one, correct this. Fixes: ca69e2d165eb ("qcom: spmi-gpio: add support for hierarchical IRQ chip") Signed-off-by: Bjorn Andersson <[email protected]> Reviewed-by: Brian Masney <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-13gpio: pca953x: add ->set_config implementationThomas Petazzoni1-2/+64
This commit adds a minimal implementation of the ->set_config() hook, with support for the PIN_CONFIG_BIAS_PULL_UP and PIN_CONFIG_BIAS_PULL_DOWN configurations. Signed-off-by: Thomas Petazzoni <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
2019-02-13gpio: add core support for pull-up/pull-down configurationThomas Petazzoni5-0/+29
This commit adds support for configuring the pull-up and pull-down resistors available in some GPIO controllers. While configuring pull-up/pull-down is already possible through the pinctrl subsystem, some GPIO controllers, especially simple ones such as GPIO expanders on I2C, don't have any pinmuxing capability and therefore do not use the pinctrl subsystem. This commit implements the GPIO_PULL_UP and GPIO_PULL_DOWN flags, which can be used from the Device Tree, to enable a pull-up or pull-down resistor on a given GPIO. The flag is simply propagated all the way to the core GPIO subsystem, where it is used to call the gpio_chip ->set_config callback with the appropriate existing PIN_CONFIG_BIAS_* values. Signed-off-by: Thomas Petazzoni <[email protected]> Signed-off-by: Linus Walleij <[email protected]>