aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-06-29 13:05:44 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-06-29 13:05:44 -0400
commit00bf377d19ad3d80cbc7a036521279a86e397bfb (patch)
tree1def121cc05855dc8041250a3757cb44b2057d1d
parent52827f389b32f6d04a1bcb4428b5499815c36a24 (diff)
parentb41aa4f8476545e2b663b1549759a8c3a66f47b0 (diff)
Merge tag 'pinctrl-v4.7-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
Pull pin control fixes from Linus Walleij: "Here are a bunch of fixes for pin control. Just drivers and a MAINTAINERS fixup: - Driver fixes for i.MX, single register, Tegra and BayTrail. - MAINTAINERS entry for the documentation" * tag 'pinctrl-v4.7-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: pinctrl: baytrail: Fix mingled clock pins MAINTAINERS: belong Documentation/pinctrl.txt properly pinctrl: tegra: Fix build dependency gpio: tegra: Make lockdep class file-scoped pinctrl: single: Fix missing flush of posted write for a wakeirq pinctrl: imx: Do not treat a PIN without MUX register as an error
-rw-r--r--MAINTAINERS1
-rw-r--r--drivers/gpio/gpio-tegra.c9
-rw-r--r--drivers/pinctrl/Makefile2
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx.c4
-rw-r--r--drivers/pinctrl/intel/pinctrl-baytrail.c6
-rw-r--r--drivers/pinctrl/pinctrl-single.c3
-rw-r--r--drivers/pinctrl/tegra/Makefile2
7 files changed, 18 insertions, 9 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index 0f148d3bdae7..81e2d49e2d02 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -8963,6 +8963,7 @@ L: linux-gpio@vger.kernel.org
8963T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git 8963T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git
8964S: Maintained 8964S: Maintained
8965F: Documentation/devicetree/bindings/pinctrl/ 8965F: Documentation/devicetree/bindings/pinctrl/
8966F: Documentation/pinctrl.txt
8966F: drivers/pinctrl/ 8967F: drivers/pinctrl/
8967F: include/linux/pinctrl/ 8968F: include/linux/pinctrl/
8968 8969
diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c
index ec891a27952f..661b0e34e067 100644
--- a/drivers/gpio/gpio-tegra.c
+++ b/drivers/gpio/gpio-tegra.c
@@ -98,7 +98,6 @@ struct tegra_gpio_info {
98 const struct tegra_gpio_soc_config *soc; 98 const struct tegra_gpio_soc_config *soc;
99 struct gpio_chip gc; 99 struct gpio_chip gc;
100 struct irq_chip ic; 100 struct irq_chip ic;
101 struct lock_class_key lock_class;
102 u32 bank_count; 101 u32 bank_count;
103}; 102};
104 103
@@ -547,6 +546,12 @@ static const struct dev_pm_ops tegra_gpio_pm_ops = {
547 SET_SYSTEM_SLEEP_PM_OPS(tegra_gpio_suspend, tegra_gpio_resume) 546 SET_SYSTEM_SLEEP_PM_OPS(tegra_gpio_suspend, tegra_gpio_resume)
548}; 547};
549 548
549/*
550 * This lock class tells lockdep that GPIO irqs are in a different category
551 * than their parents, so it won't report false recursion.
552 */
553static struct lock_class_key gpio_lock_class;
554
550static int tegra_gpio_probe(struct platform_device *pdev) 555static int tegra_gpio_probe(struct platform_device *pdev)
551{ 556{
552 const struct tegra_gpio_soc_config *config; 557 const struct tegra_gpio_soc_config *config;
@@ -660,7 +665,7 @@ static int tegra_gpio_probe(struct platform_device *pdev)
660 665
661 bank = &tgi->bank_info[GPIO_BANK(gpio)]; 666 bank = &tgi->bank_info[GPIO_BANK(gpio)];
662 667
663 irq_set_lockdep_class(irq, &tgi->lock_class); 668 irq_set_lockdep_class(irq, &gpio_lock_class);
664 irq_set_chip_data(irq, bank); 669 irq_set_chip_data(irq, bank);
665 irq_set_chip_and_handler(irq, &tgi->ic, handle_simple_irq); 670 irq_set_chip_and_handler(irq, &tgi->ic, handle_simple_irq);
666 } 671 }
diff --git a/drivers/pinctrl/Makefile b/drivers/pinctrl/Makefile
index e4bc1151e04f..42a5c1dddfef 100644
--- a/drivers/pinctrl/Makefile
+++ b/drivers/pinctrl/Makefile
@@ -23,7 +23,7 @@ obj-$(CONFIG_PINCTRL_PISTACHIO) += pinctrl-pistachio.o
23obj-$(CONFIG_PINCTRL_ROCKCHIP) += pinctrl-rockchip.o 23obj-$(CONFIG_PINCTRL_ROCKCHIP) += pinctrl-rockchip.o
24obj-$(CONFIG_PINCTRL_SINGLE) += pinctrl-single.o 24obj-$(CONFIG_PINCTRL_SINGLE) += pinctrl-single.o
25obj-$(CONFIG_PINCTRL_SIRF) += sirf/ 25obj-$(CONFIG_PINCTRL_SIRF) += sirf/
26obj-$(CONFIG_PINCTRL_TEGRA) += tegra/ 26obj-$(CONFIG_ARCH_TEGRA) += tegra/
27obj-$(CONFIG_PINCTRL_TZ1090) += pinctrl-tz1090.o 27obj-$(CONFIG_PINCTRL_TZ1090) += pinctrl-tz1090.o
28obj-$(CONFIG_PINCTRL_TZ1090_PDC) += pinctrl-tz1090-pdc.o 28obj-$(CONFIG_PINCTRL_TZ1090_PDC) += pinctrl-tz1090-pdc.o
29obj-$(CONFIG_PINCTRL_U300) += pinctrl-u300.o 29obj-$(CONFIG_PINCTRL_U300) += pinctrl-u300.o
diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c b/drivers/pinctrl/freescale/pinctrl-imx.c
index 47ccfcc8a647..eccb47480e1d 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx.c
@@ -209,9 +209,9 @@ static int imx_pmx_set(struct pinctrl_dev *pctldev, unsigned selector,
209 pin_reg = &info->pin_regs[pin_id]; 209 pin_reg = &info->pin_regs[pin_id];
210 210
211 if (pin_reg->mux_reg == -1) { 211 if (pin_reg->mux_reg == -1) {
212 dev_err(ipctl->dev, "Pin(%s) does not support mux function\n", 212 dev_dbg(ipctl->dev, "Pin(%s) does not support mux function\n",
213 info->pins[pin_id].name); 213 info->pins[pin_id].name);
214 return -EINVAL; 214 continue;
215 } 215 }
216 216
217 if (info->flags & SHARE_MUX_CONF_REG) { 217 if (info->flags & SHARE_MUX_CONF_REG) {
diff --git a/drivers/pinctrl/intel/pinctrl-baytrail.c b/drivers/pinctrl/intel/pinctrl-baytrail.c
index 677a811b3a6f..7abfd42e8ffd 100644
--- a/drivers/pinctrl/intel/pinctrl-baytrail.c
+++ b/drivers/pinctrl/intel/pinctrl-baytrail.c
@@ -401,9 +401,9 @@ static const struct byt_simple_func_mux byt_score_sata_mux[] = {
401static const unsigned int byt_score_plt_clk0_pins[] = { 96 }; 401static const unsigned int byt_score_plt_clk0_pins[] = { 96 };
402static const unsigned int byt_score_plt_clk1_pins[] = { 97 }; 402static const unsigned int byt_score_plt_clk1_pins[] = { 97 };
403static const unsigned int byt_score_plt_clk2_pins[] = { 98 }; 403static const unsigned int byt_score_plt_clk2_pins[] = { 98 };
404static const unsigned int byt_score_plt_clk4_pins[] = { 99 }; 404static const unsigned int byt_score_plt_clk3_pins[] = { 99 };
405static const unsigned int byt_score_plt_clk5_pins[] = { 100 }; 405static const unsigned int byt_score_plt_clk4_pins[] = { 100 };
406static const unsigned int byt_score_plt_clk3_pins[] = { 101 }; 406static const unsigned int byt_score_plt_clk5_pins[] = { 101 };
407static const struct byt_simple_func_mux byt_score_plt_clk_mux[] = { 407static const struct byt_simple_func_mux byt_score_plt_clk_mux[] = {
408 SIMPLE_FUNC("plt_clk", 1), 408 SIMPLE_FUNC("plt_clk", 1),
409}; 409};
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
index cf9bafa10acf..bfdf720db270 100644
--- a/drivers/pinctrl/pinctrl-single.c
+++ b/drivers/pinctrl/pinctrl-single.c
@@ -1580,6 +1580,9 @@ static inline void pcs_irq_set(struct pcs_soc_data *pcs_soc,
1580 else 1580 else
1581 mask &= ~soc_mask; 1581 mask &= ~soc_mask;
1582 pcs->write(mask, pcswi->reg); 1582 pcs->write(mask, pcswi->reg);
1583
1584 /* flush posted write */
1585 mask = pcs->read(pcswi->reg);
1583 raw_spin_unlock(&pcs->lock); 1586 raw_spin_unlock(&pcs->lock);
1584 } 1587 }
1585 1588
diff --git a/drivers/pinctrl/tegra/Makefile b/drivers/pinctrl/tegra/Makefile
index a927379b6794..d9ea2be69cc4 100644
--- a/drivers/pinctrl/tegra/Makefile
+++ b/drivers/pinctrl/tegra/Makefile
@@ -1,4 +1,4 @@
1obj-y += pinctrl-tegra.o 1obj-$(CONFIG_PINCTRL_TEGRA) += pinctrl-tegra.o
2obj-$(CONFIG_PINCTRL_TEGRA20) += pinctrl-tegra20.o 2obj-$(CONFIG_PINCTRL_TEGRA20) += pinctrl-tegra20.o
3obj-$(CONFIG_PINCTRL_TEGRA30) += pinctrl-tegra30.o 3obj-$(CONFIG_PINCTRL_TEGRA30) += pinctrl-tegra30.o
4obj-$(CONFIG_PINCTRL_TEGRA114) += pinctrl-tegra114.o 4obj-$(CONFIG_PINCTRL_TEGRA114) += pinctrl-tegra114.o