All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] pinctrl-msm: Fixes for various issues
@ 2013-12-15  7:01 ` Bjorn Andersson
  0 siblings, 0 replies; 14+ messages in thread
From: Bjorn Andersson @ 2013-12-15  7:01 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Stephen Warren,
	Ian Campbell, Rob Landley, Linus Walleij, Bjorn Andersson,
	devicetree, linux-doc, linux-kernel, linux-arm-msm

Various fixes based on feedback from Stephen Boyd and kbuild test robot

Bjorn Andersson (4):
  pinctrl-msm: Fix spelling misstakes and missing consts
  pinctrl-msm: Tidy up error handling
  pinctrl-msm: Remove separate allocation of bitmaps
  pinctrl-msm: Rename compatible to be more specific

 ...sm8x74-pinctrl.txt => qcom,msm8974-pinctrl.txt} |    4 +-
 drivers/pinctrl/pinctrl-msm.c                      |  122 ++++++--------------
 drivers/pinctrl/pinctrl-msm8x74.c                  |    6 +-
 3 files changed, 43 insertions(+), 89 deletions(-)
 rename Documentation/devicetree/bindings/pinctrl/{qcom,msm8x74-pinctrl.txt => qcom,msm8974-pinctrl.txt} (97%)

-- 
1.7.9.5

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 0/4] pinctrl-msm: Fixes for various issues
@ 2013-12-15  7:01 ` Bjorn Andersson
  0 siblings, 0 replies; 14+ messages in thread
From: Bjorn Andersson @ 2013-12-15  7:01 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Stephen Warren,
	Ian Campbell, Rob Landley, Linus Walleij, Bjorn Andersson,
	devicetree, linux-doc, linux-kernel, linux-arm-msm

Various fixes based on feedback from Stephen Boyd and kbuild test robot

Bjorn Andersson (4):
  pinctrl-msm: Fix spelling misstakes and missing consts
  pinctrl-msm: Tidy up error handling
  pinctrl-msm: Remove separate allocation of bitmaps
  pinctrl-msm: Rename compatible to be more specific

 ...sm8x74-pinctrl.txt => qcom,msm8974-pinctrl.txt} |    4 +-
 drivers/pinctrl/pinctrl-msm.c                      |  122 ++++++--------------
 drivers/pinctrl/pinctrl-msm8x74.c                  |    6 +-
 3 files changed, 43 insertions(+), 89 deletions(-)
 rename Documentation/devicetree/bindings/pinctrl/{qcom,msm8x74-pinctrl.txt => qcom,msm8974-pinctrl.txt} (97%)

-- 
1.7.9.5


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 1/4] pinctrl-msm: Fix spelling misstakes and missing consts
  2013-12-15  7:01 ` Bjorn Andersson
@ 2013-12-15  7:01   ` Bjorn Andersson
  -1 siblings, 0 replies; 14+ messages in thread
From: Bjorn Andersson @ 2013-12-15  7:01 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Stephen Warren,
	Ian Campbell, Rob Landley, Linus Walleij, Bjorn Andersson,
	devicetree, linux-doc, linux-kernel, linux-arm-msm

Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
---
 drivers/pinctrl/pinctrl-msm.c     |   14 +++++++-------
 drivers/pinctrl/pinctrl-msm8x74.c |    4 ++--
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-msm.c b/drivers/pinctrl/pinctrl-msm.c
index 28b90ab..322bc0a 100644
--- a/drivers/pinctrl/pinctrl-msm.c
+++ b/drivers/pinctrl/pinctrl-msm.c
@@ -96,7 +96,7 @@ static int msm_get_group_pins(struct pinctrl_dev *pctldev,
 	return 0;
 }
 
-static struct pinctrl_ops msm_pinctrl_ops = {
+static const struct pinctrl_ops msm_pinctrl_ops = {
 	.get_groups_count	= msm_get_groups_count,
 	.get_group_name		= msm_get_group_name,
 	.get_group_pins		= msm_get_group_pins,
@@ -190,7 +190,7 @@ static void msm_pinmux_disable(struct pinctrl_dev *pctldev,
 	spin_unlock_irqrestore(&pctrl->lock, flags);
 }
 
-static struct pinmux_ops msm_pinmux_ops = {
+static const struct pinmux_ops msm_pinmux_ops = {
 	.get_functions_count	= msm_get_functions_count,
 	.get_function_name	= msm_get_function_name,
 	.get_function_groups	= msm_get_function_groups,
@@ -378,7 +378,7 @@ static int msm_config_group_set(struct pinctrl_dev *pctldev,
 	return 0;
 }
 
-static struct pinconf_ops msm_pinconf_ops = {
+static const struct pinconf_ops msm_pinconf_ops = {
 	.pin_config_get		= msm_config_get,
 	.pin_config_set		= msm_config_set,
 	.pin_config_group_get	= msm_config_group_get,
@@ -518,7 +518,7 @@ static void msm_gpio_dbg_show_one(struct seq_file *s,
 	int pull;
 	u32 ctl_reg;
 
-	const char *pulls[] = {
+	static const char * const pulls[] = {
 		"no pull",
 		"pull down",
 		"keeper",
@@ -545,7 +545,7 @@ static void msm_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
 
 	for (i = 0; i < chip->ngpio; i++, gpio++) {
 		msm_gpio_dbg_show_one(s, NULL, chip, i, gpio);
-		seq_printf(s, "\n");
+		seq_puts(s, "\n");
 	}
 }
 
@@ -868,7 +868,7 @@ static void msm_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 	chained_irq_enter(chip, desc);
 
 	/*
-	 * Each pin have it's own IRQ status register, so use
+	 * Each pin has it's own IRQ status register, so use
 	 * enabled_irq bitmap to limit the number of reads.
 	 */
 	for_each_set_bit(i, pctrl->enabled_irqs, pctrl->chip.ngpio) {
@@ -881,7 +881,7 @@ static void msm_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 		}
 	}
 
-	/* No interrutps where flagged */
+	/* No interrupts were flagged */
 	if (handled == 0)
 		handle_bad_irq(irq, desc);
 
diff --git a/drivers/pinctrl/pinctrl-msm8x74.c b/drivers/pinctrl/pinctrl-msm8x74.c
index 762552b..c702e77 100644
--- a/drivers/pinctrl/pinctrl-msm8x74.c
+++ b/drivers/pinctrl/pinctrl-msm8x74.c
@@ -352,7 +352,7 @@ static const unsigned int sdc2_data_pins[] = { 151 };
 			MSM_MUX_##f6,			\
 			MSM_MUX_##f7			\
 		},					\
-		.ctl_reg = 0x1000 + 0x10 * id ,		\
+		.ctl_reg = 0x1000 + 0x10 * id,		\
 		.io_reg = 0x1004 + 0x10 * id,		\
 		.intr_cfg_reg = 0x1008 + 0x10 * id,	\
 		.intr_status_reg = 0x100c + 0x10 * id,	\
@@ -602,7 +602,7 @@ static int msm8x74_pinctrl_probe(struct platform_device *pdev)
 	return msm_pinctrl_probe(pdev, &msm8x74_pinctrl);
 }
 
-static struct of_device_id msm8x74_pinctrl_of_match[] = {
+static const struct of_device_id msm8x74_pinctrl_of_match[] = {
 	{ .compatible = "qcom,msm8x74-pinctrl", },
 	{ },
 };
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 1/4] pinctrl-msm: Fix spelling misstakes and missing consts
@ 2013-12-15  7:01   ` Bjorn Andersson
  0 siblings, 0 replies; 14+ messages in thread
From: Bjorn Andersson @ 2013-12-15  7:01 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Stephen Warren,
	Ian Campbell, Rob Landley, Linus Walleij, Bjorn Andersson,
	devicetree, linux-doc, linux-kernel, linux-arm-msm

Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
---
 drivers/pinctrl/pinctrl-msm.c     |   14 +++++++-------
 drivers/pinctrl/pinctrl-msm8x74.c |    4 ++--
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-msm.c b/drivers/pinctrl/pinctrl-msm.c
index 28b90ab..322bc0a 100644
--- a/drivers/pinctrl/pinctrl-msm.c
+++ b/drivers/pinctrl/pinctrl-msm.c
@@ -96,7 +96,7 @@ static int msm_get_group_pins(struct pinctrl_dev *pctldev,
 	return 0;
 }
 
-static struct pinctrl_ops msm_pinctrl_ops = {
+static const struct pinctrl_ops msm_pinctrl_ops = {
 	.get_groups_count	= msm_get_groups_count,
 	.get_group_name		= msm_get_group_name,
 	.get_group_pins		= msm_get_group_pins,
@@ -190,7 +190,7 @@ static void msm_pinmux_disable(struct pinctrl_dev *pctldev,
 	spin_unlock_irqrestore(&pctrl->lock, flags);
 }
 
-static struct pinmux_ops msm_pinmux_ops = {
+static const struct pinmux_ops msm_pinmux_ops = {
 	.get_functions_count	= msm_get_functions_count,
 	.get_function_name	= msm_get_function_name,
 	.get_function_groups	= msm_get_function_groups,
@@ -378,7 +378,7 @@ static int msm_config_group_set(struct pinctrl_dev *pctldev,
 	return 0;
 }
 
-static struct pinconf_ops msm_pinconf_ops = {
+static const struct pinconf_ops msm_pinconf_ops = {
 	.pin_config_get		= msm_config_get,
 	.pin_config_set		= msm_config_set,
 	.pin_config_group_get	= msm_config_group_get,
@@ -518,7 +518,7 @@ static void msm_gpio_dbg_show_one(struct seq_file *s,
 	int pull;
 	u32 ctl_reg;
 
-	const char *pulls[] = {
+	static const char * const pulls[] = {
 		"no pull",
 		"pull down",
 		"keeper",
@@ -545,7 +545,7 @@ static void msm_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
 
 	for (i = 0; i < chip->ngpio; i++, gpio++) {
 		msm_gpio_dbg_show_one(s, NULL, chip, i, gpio);
-		seq_printf(s, "\n");
+		seq_puts(s, "\n");
 	}
 }
 
@@ -868,7 +868,7 @@ static void msm_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 	chained_irq_enter(chip, desc);
 
 	/*
-	 * Each pin have it's own IRQ status register, so use
+	 * Each pin has it's own IRQ status register, so use
 	 * enabled_irq bitmap to limit the number of reads.
 	 */
 	for_each_set_bit(i, pctrl->enabled_irqs, pctrl->chip.ngpio) {
@@ -881,7 +881,7 @@ static void msm_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
 		}
 	}
 
-	/* No interrutps where flagged */
+	/* No interrupts were flagged */
 	if (handled == 0)
 		handle_bad_irq(irq, desc);
 
diff --git a/drivers/pinctrl/pinctrl-msm8x74.c b/drivers/pinctrl/pinctrl-msm8x74.c
index 762552b..c702e77 100644
--- a/drivers/pinctrl/pinctrl-msm8x74.c
+++ b/drivers/pinctrl/pinctrl-msm8x74.c
@@ -352,7 +352,7 @@ static const unsigned int sdc2_data_pins[] = { 151 };
 			MSM_MUX_##f6,			\
 			MSM_MUX_##f7			\
 		},					\
-		.ctl_reg = 0x1000 + 0x10 * id ,		\
+		.ctl_reg = 0x1000 + 0x10 * id,		\
 		.io_reg = 0x1004 + 0x10 * id,		\
 		.intr_cfg_reg = 0x1008 + 0x10 * id,	\
 		.intr_status_reg = 0x100c + 0x10 * id,	\
@@ -602,7 +602,7 @@ static int msm8x74_pinctrl_probe(struct platform_device *pdev)
 	return msm_pinctrl_probe(pdev, &msm8x74_pinctrl);
 }
 
-static struct of_device_id msm8x74_pinctrl_of_match[] = {
+static const struct of_device_id msm8x74_pinctrl_of_match[] = {
 	{ .compatible = "qcom,msm8x74-pinctrl", },
 	{ },
 };
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 2/4] pinctrl-msm: Tidy up error handling
  2013-12-15  7:01 ` Bjorn Andersson
@ 2013-12-15  7:01   ` Bjorn Andersson
  -1 siblings, 0 replies; 14+ messages in thread
From: Bjorn Andersson @ 2013-12-15  7:01 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Stephen Warren,
	Ian Campbell, Rob Landley, Linus Walleij, Bjorn Andersson,
	devicetree, linux-doc, linux-kernel, linux-arm-msm

Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
---
 drivers/pinctrl/pinctrl-msm.c |   76 ++++++++++++++---------------------------
 1 file changed, 26 insertions(+), 50 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-msm.c b/drivers/pinctrl/pinctrl-msm.c
index 322bc0a..c1a3053 100644
--- a/drivers/pinctrl/pinctrl-msm.c
+++ b/drivers/pinctrl/pinctrl-msm.c
@@ -57,7 +57,7 @@ struct msm_pinctrl {
 	struct pinctrl_dev *pctrl;
 	struct irq_domain *domain;
 	struct gpio_chip chip;
-	unsigned irq;
+	int irq;
 
 	spinlock_t lock;
 
@@ -201,7 +201,7 @@ static const struct pinmux_ops msm_pinmux_ops = {
 static int msm_config_reg(struct msm_pinctrl *pctrl,
 			  const struct msm_pingroup *g,
 			  unsigned param,
-			  unsigned *reg,
+			  s16 *reg,
 			  unsigned *mask,
 			  unsigned *bit)
 {
@@ -272,7 +272,7 @@ static int msm_config_group_get(struct pinctrl_dev *pctldev,
 	unsigned mask;
 	unsigned arg;
 	unsigned bit;
-	unsigned reg;
+	s16 reg;
 	int ret;
 	u32 val;
 
@@ -322,7 +322,7 @@ static int msm_config_group_set(struct pinctrl_dev *pctldev,
 	unsigned mask;
 	unsigned arg;
 	unsigned bit;
-	unsigned reg;
+	s16 reg;
 	int ret;
 	u32 val;
 	int i;
@@ -350,7 +350,7 @@ static int msm_config_group_set(struct pinctrl_dev *pctldev,
 			break;
 		case PIN_CONFIG_DRIVE_STRENGTH:
 			/* Check for invalid values */
-			if (arg > ARRAY_SIZE(msm_drive_to_regval))
+			if (arg >= ARRAY_SIZE(msm_drive_to_regval))
 				arg = -1;
 			else
 				arg = msm_drive_to_regval[arg];
@@ -399,12 +399,8 @@ static int msm_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
 	unsigned long flags;
 	u32 val;
 
-	if (WARN_ON(offset >= pctrl->soc->ngroups))
-		return -EINVAL;
-
 	g = &pctrl->soc->groups[offset];
-
-	if (WARN_ON(g->oe_bit < 0))
+	if (WARN_ON(g->io_reg < 0))
 		return -EINVAL;
 
 	spin_lock_irqsave(&pctrl->lock, flags);
@@ -425,12 +421,8 @@ static int msm_gpio_direction_output(struct gpio_chip *chip, unsigned offset, in
 	unsigned long flags;
 	u32 val;
 
-	if (WARN_ON(offset >= pctrl->soc->ngroups))
-		return -EINVAL;
-
 	g = &pctrl->soc->groups[offset];
-
-	if (WARN_ON(g->oe_bit < 0))
+	if (WARN_ON(g->io_reg < 0))
 		return -EINVAL;
 
 	spin_lock_irqsave(&pctrl->lock, flags);
@@ -452,10 +444,9 @@ static int msm_gpio_get(struct gpio_chip *chip, unsigned offset)
 	struct msm_pinctrl *pctrl = container_of(chip, struct msm_pinctrl, chip);
 	u32 val;
 
-	if (WARN_ON(offset >= pctrl->soc->ngroups))
-		return -EINVAL;
-
 	g = &pctrl->soc->groups[offset];
+	if (WARN_ON(g->io_reg < 0))
+		return -EINVAL;
 
 	val = readl(pctrl->regs + g->io_reg);
 	return !!(val & BIT(g->in_bit));
@@ -468,10 +459,9 @@ static void msm_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
 	unsigned long flags;
 	u32 val;
 
-	if (WARN_ON(offset >= pctrl->soc->ngroups))
-		return;
-
 	g = &pctrl->soc->groups[offset];
+	if (WARN_ON(g->io_reg < 0))
+		return;
 
 	spin_lock_irqsave(&pctrl->lock, flags);
 
@@ -616,13 +606,9 @@ static void msm_gpio_irq_mask(struct irq_data *d)
 	u32 val;
 
 	pctrl = irq_data_get_irq_chip_data(d);
-	if (!pctrl)
-		return;
-
-	if (WARN_ON(d->hwirq >= pctrl->soc->ngroups))
-		return;
-
 	g = &pctrl->soc->groups[d->hwirq];
+	if (WARN_ON(g->intr_cfg_reg < 0))
+		return;
 
 	spin_lock_irqsave(&pctrl->lock, flags);
 
@@ -643,13 +629,9 @@ static void msm_gpio_irq_unmask(struct irq_data *d)
 	u32 val;
 
 	pctrl = irq_data_get_irq_chip_data(d);
-	if (!pctrl)
-		return;
-
-	if (WARN_ON(d->hwirq >= pctrl->soc->ngroups))
-		return;
-
 	g = &pctrl->soc->groups[d->hwirq];
+	if (WARN_ON(g->intr_status_reg < 0))
+		return;
 
 	spin_lock_irqsave(&pctrl->lock, flags);
 
@@ -674,13 +656,9 @@ static void msm_gpio_irq_ack(struct irq_data *d)
 	u32 val;
 
 	pctrl = irq_data_get_irq_chip_data(d);
-	if (!pctrl)
-		return;
-
-	if (WARN_ON(d->hwirq >= pctrl->soc->ngroups))
-		return;
-
 	g = &pctrl->soc->groups[d->hwirq];
+	if (WARN_ON(g->intr_status_reg < 0))
+		return;
 
 	spin_lock_irqsave(&pctrl->lock, flags);
 
@@ -704,13 +682,9 @@ static int msm_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 	u32 val;
 
 	pctrl = irq_data_get_irq_chip_data(d);
-	if (!pctrl)
-		return -EINVAL;
-
-	if (WARN_ON(d->hwirq >= pctrl->soc->ngroups))
-		return -EINVAL;
-
 	g = &pctrl->soc->groups[d->hwirq];
+	if (WARN_ON(g->intr_cfg_reg < 0))
+		return -EINVAL;
 
 	spin_lock_irqsave(&pctrl->lock, flags);
 
@@ -802,9 +776,6 @@ static int msm_gpio_irq_set_wake(struct irq_data *d, unsigned int on)
 	unsigned ngpio;
 
 	pctrl = irq_data_get_irq_chip_data(d);
-	if (!pctrl)
-		return -EINVAL;
-
 	ngpio = pctrl->chip.ngpio;
 
 	spin_lock_irqsave(&pctrl->lock, flags);
@@ -983,7 +954,7 @@ int msm_pinctrl_probe(struct platform_device *pdev,
 	if (IS_ERR(pctrl->regs))
 		return PTR_ERR(pctrl->regs);
 
-	pctrl->irq = irq_of_parse_and_map(pdev->dev.of_node, 0);
+	pctrl->irq = platform_get_irq(pdev, 0);
 	if (pctrl->irq < 0) {
 		dev_err(&pdev->dev, "No interrupt defined for msmgpio\n");
 		return pctrl->irq;
@@ -1017,9 +988,14 @@ int msm_pinctrl_remove(struct platform_device *pdev)
 	struct msm_pinctrl *pctrl = platform_get_drvdata(pdev);
 	int ret;
 
+	ret = gpiochip_remove(&pctrl->chip);
+	if (ret) {
+		dev_err(&pdev->dev, "Failed to remove gpiochip\n");
+		return ret;
+	}
+
 	irq_set_chained_handler(pctrl->irq, NULL);
 	irq_domain_remove(pctrl->domain);
-	ret = gpiochip_remove(&pctrl->chip);
 	pinctrl_unregister(pctrl->pctrl);
 
 	return 0;
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 2/4] pinctrl-msm: Tidy up error handling
@ 2013-12-15  7:01   ` Bjorn Andersson
  0 siblings, 0 replies; 14+ messages in thread
From: Bjorn Andersson @ 2013-12-15  7:01 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Stephen Warren,
	Ian Campbell, Rob Landley, Linus Walleij, Bjorn Andersson,
	devicetree, linux-doc, linux-kernel, linux-arm-msm

Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
---
 drivers/pinctrl/pinctrl-msm.c |   76 ++++++++++++++---------------------------
 1 file changed, 26 insertions(+), 50 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-msm.c b/drivers/pinctrl/pinctrl-msm.c
index 322bc0a..c1a3053 100644
--- a/drivers/pinctrl/pinctrl-msm.c
+++ b/drivers/pinctrl/pinctrl-msm.c
@@ -57,7 +57,7 @@ struct msm_pinctrl {
 	struct pinctrl_dev *pctrl;
 	struct irq_domain *domain;
 	struct gpio_chip chip;
-	unsigned irq;
+	int irq;
 
 	spinlock_t lock;
 
@@ -201,7 +201,7 @@ static const struct pinmux_ops msm_pinmux_ops = {
 static int msm_config_reg(struct msm_pinctrl *pctrl,
 			  const struct msm_pingroup *g,
 			  unsigned param,
-			  unsigned *reg,
+			  s16 *reg,
 			  unsigned *mask,
 			  unsigned *bit)
 {
@@ -272,7 +272,7 @@ static int msm_config_group_get(struct pinctrl_dev *pctldev,
 	unsigned mask;
 	unsigned arg;
 	unsigned bit;
-	unsigned reg;
+	s16 reg;
 	int ret;
 	u32 val;
 
@@ -322,7 +322,7 @@ static int msm_config_group_set(struct pinctrl_dev *pctldev,
 	unsigned mask;
 	unsigned arg;
 	unsigned bit;
-	unsigned reg;
+	s16 reg;
 	int ret;
 	u32 val;
 	int i;
@@ -350,7 +350,7 @@ static int msm_config_group_set(struct pinctrl_dev *pctldev,
 			break;
 		case PIN_CONFIG_DRIVE_STRENGTH:
 			/* Check for invalid values */
-			if (arg > ARRAY_SIZE(msm_drive_to_regval))
+			if (arg >= ARRAY_SIZE(msm_drive_to_regval))
 				arg = -1;
 			else
 				arg = msm_drive_to_regval[arg];
@@ -399,12 +399,8 @@ static int msm_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
 	unsigned long flags;
 	u32 val;
 
-	if (WARN_ON(offset >= pctrl->soc->ngroups))
-		return -EINVAL;
-
 	g = &pctrl->soc->groups[offset];
-
-	if (WARN_ON(g->oe_bit < 0))
+	if (WARN_ON(g->io_reg < 0))
 		return -EINVAL;
 
 	spin_lock_irqsave(&pctrl->lock, flags);
@@ -425,12 +421,8 @@ static int msm_gpio_direction_output(struct gpio_chip *chip, unsigned offset, in
 	unsigned long flags;
 	u32 val;
 
-	if (WARN_ON(offset >= pctrl->soc->ngroups))
-		return -EINVAL;
-
 	g = &pctrl->soc->groups[offset];
-
-	if (WARN_ON(g->oe_bit < 0))
+	if (WARN_ON(g->io_reg < 0))
 		return -EINVAL;
 
 	spin_lock_irqsave(&pctrl->lock, flags);
@@ -452,10 +444,9 @@ static int msm_gpio_get(struct gpio_chip *chip, unsigned offset)
 	struct msm_pinctrl *pctrl = container_of(chip, struct msm_pinctrl, chip);
 	u32 val;
 
-	if (WARN_ON(offset >= pctrl->soc->ngroups))
-		return -EINVAL;
-
 	g = &pctrl->soc->groups[offset];
+	if (WARN_ON(g->io_reg < 0))
+		return -EINVAL;
 
 	val = readl(pctrl->regs + g->io_reg);
 	return !!(val & BIT(g->in_bit));
@@ -468,10 +459,9 @@ static void msm_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
 	unsigned long flags;
 	u32 val;
 
-	if (WARN_ON(offset >= pctrl->soc->ngroups))
-		return;
-
 	g = &pctrl->soc->groups[offset];
+	if (WARN_ON(g->io_reg < 0))
+		return;
 
 	spin_lock_irqsave(&pctrl->lock, flags);
 
@@ -616,13 +606,9 @@ static void msm_gpio_irq_mask(struct irq_data *d)
 	u32 val;
 
 	pctrl = irq_data_get_irq_chip_data(d);
-	if (!pctrl)
-		return;
-
-	if (WARN_ON(d->hwirq >= pctrl->soc->ngroups))
-		return;
-
 	g = &pctrl->soc->groups[d->hwirq];
+	if (WARN_ON(g->intr_cfg_reg < 0))
+		return;
 
 	spin_lock_irqsave(&pctrl->lock, flags);
 
@@ -643,13 +629,9 @@ static void msm_gpio_irq_unmask(struct irq_data *d)
 	u32 val;
 
 	pctrl = irq_data_get_irq_chip_data(d);
-	if (!pctrl)
-		return;
-
-	if (WARN_ON(d->hwirq >= pctrl->soc->ngroups))
-		return;
-
 	g = &pctrl->soc->groups[d->hwirq];
+	if (WARN_ON(g->intr_status_reg < 0))
+		return;
 
 	spin_lock_irqsave(&pctrl->lock, flags);
 
@@ -674,13 +656,9 @@ static void msm_gpio_irq_ack(struct irq_data *d)
 	u32 val;
 
 	pctrl = irq_data_get_irq_chip_data(d);
-	if (!pctrl)
-		return;
-
-	if (WARN_ON(d->hwirq >= pctrl->soc->ngroups))
-		return;
-
 	g = &pctrl->soc->groups[d->hwirq];
+	if (WARN_ON(g->intr_status_reg < 0))
+		return;
 
 	spin_lock_irqsave(&pctrl->lock, flags);
 
@@ -704,13 +682,9 @@ static int msm_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 	u32 val;
 
 	pctrl = irq_data_get_irq_chip_data(d);
-	if (!pctrl)
-		return -EINVAL;
-
-	if (WARN_ON(d->hwirq >= pctrl->soc->ngroups))
-		return -EINVAL;
-
 	g = &pctrl->soc->groups[d->hwirq];
+	if (WARN_ON(g->intr_cfg_reg < 0))
+		return -EINVAL;
 
 	spin_lock_irqsave(&pctrl->lock, flags);
 
@@ -802,9 +776,6 @@ static int msm_gpio_irq_set_wake(struct irq_data *d, unsigned int on)
 	unsigned ngpio;
 
 	pctrl = irq_data_get_irq_chip_data(d);
-	if (!pctrl)
-		return -EINVAL;
-
 	ngpio = pctrl->chip.ngpio;
 
 	spin_lock_irqsave(&pctrl->lock, flags);
@@ -983,7 +954,7 @@ int msm_pinctrl_probe(struct platform_device *pdev,
 	if (IS_ERR(pctrl->regs))
 		return PTR_ERR(pctrl->regs);
 
-	pctrl->irq = irq_of_parse_and_map(pdev->dev.of_node, 0);
+	pctrl->irq = platform_get_irq(pdev, 0);
 	if (pctrl->irq < 0) {
 		dev_err(&pdev->dev, "No interrupt defined for msmgpio\n");
 		return pctrl->irq;
@@ -1017,9 +988,14 @@ int msm_pinctrl_remove(struct platform_device *pdev)
 	struct msm_pinctrl *pctrl = platform_get_drvdata(pdev);
 	int ret;
 
+	ret = gpiochip_remove(&pctrl->chip);
+	if (ret) {
+		dev_err(&pdev->dev, "Failed to remove gpiochip\n");
+		return ret;
+	}
+
 	irq_set_chained_handler(pctrl->irq, NULL);
 	irq_domain_remove(pctrl->domain);
-	ret = gpiochip_remove(&pctrl->chip);
 	pinctrl_unregister(pctrl->pctrl);
 
 	return 0;
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 3/4] pinctrl-msm: Remove separate allocation of bitmaps
  2013-12-15  7:01 ` Bjorn Andersson
@ 2013-12-15  7:01   ` Bjorn Andersson
  -1 siblings, 0 replies; 14+ messages in thread
From: Bjorn Andersson @ 2013-12-15  7:01 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Stephen Warren,
	Ian Campbell, Rob Landley, Linus Walleij, Bjorn Andersson,
	devicetree, linux-doc, linux-kernel, linux-arm-msm

Make the bitmaps part of the msm_pinctrl allocation instead of
separately allocating them.

Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
---
 drivers/pinctrl/pinctrl-msm.c |   32 +++++---------------------------
 1 file changed, 5 insertions(+), 27 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-msm.c b/drivers/pinctrl/pinctrl-msm.c
index c1a3053..011e263 100644
--- a/drivers/pinctrl/pinctrl-msm.c
+++ b/drivers/pinctrl/pinctrl-msm.c
@@ -36,6 +36,8 @@
 #include "pinctrl-msm.h"
 #include "pinctrl-utils.h"
 
+#define MAX_NR_GPIO 300
+
 /**
  * struct msm_pinctrl - state for a pinctrl-msm device
  * @dev:            device handle.
@@ -61,9 +63,9 @@ struct msm_pinctrl {
 
 	spinlock_t lock;
 
-	unsigned long *enabled_irqs;
-	unsigned long *dual_edge_irqs;
-	unsigned long *wake_irqs;
+	DECLARE_BITMAP(dual_edge_irqs, MAX_NR_GPIO);
+	DECLARE_BITMAP(enabled_irqs, MAX_NR_GPIO);
+	DECLARE_BITMAP(wake_irqs, MAX_NR_GPIO);
 
 	const struct msm_pinctrl_soc_data *soc;
 	void __iomem *regs;
@@ -875,30 +877,6 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl)
 	chip->owner = THIS_MODULE;
 	chip->of_node = pctrl->dev->of_node;
 
-	pctrl->enabled_irqs = devm_kzalloc(pctrl->dev,
-					   sizeof(unsigned long) * BITS_TO_LONGS(chip->ngpio),
-					   GFP_KERNEL);
-	if (!pctrl->enabled_irqs) {
-		dev_err(pctrl->dev, "Failed to allocate enabled_irqs bitmap\n");
-		return -ENOMEM;
-	}
-
-	pctrl->dual_edge_irqs = devm_kzalloc(pctrl->dev,
-					     sizeof(unsigned long) * BITS_TO_LONGS(chip->ngpio),
-					     GFP_KERNEL);
-	if (!pctrl->dual_edge_irqs) {
-		dev_err(pctrl->dev, "Failed to allocate dual_edge_irqs bitmap\n");
-		return -ENOMEM;
-	}
-
-	pctrl->wake_irqs = devm_kzalloc(pctrl->dev,
-					sizeof(unsigned long) * BITS_TO_LONGS(chip->ngpio),
-					GFP_KERNEL);
-	if (!pctrl->wake_irqs) {
-		dev_err(pctrl->dev, "Failed to allocate wake_irqs bitmap\n");
-		return -ENOMEM;
-	}
-
 	ret = gpiochip_add(&pctrl->chip);
 	if (ret) {
 		dev_err(pctrl->dev, "Failed register gpiochip\n");
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 3/4] pinctrl-msm: Remove separate allocation of bitmaps
@ 2013-12-15  7:01   ` Bjorn Andersson
  0 siblings, 0 replies; 14+ messages in thread
From: Bjorn Andersson @ 2013-12-15  7:01 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Stephen Warren,
	Ian Campbell, Rob Landley, Linus Walleij, Bjorn Andersson,
	devicetree, linux-doc, linux-kernel, linux-arm-msm

Make the bitmaps part of the msm_pinctrl allocation instead of
separately allocating them.

Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
---
 drivers/pinctrl/pinctrl-msm.c |   32 +++++---------------------------
 1 file changed, 5 insertions(+), 27 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-msm.c b/drivers/pinctrl/pinctrl-msm.c
index c1a3053..011e263 100644
--- a/drivers/pinctrl/pinctrl-msm.c
+++ b/drivers/pinctrl/pinctrl-msm.c
@@ -36,6 +36,8 @@
 #include "pinctrl-msm.h"
 #include "pinctrl-utils.h"
 
+#define MAX_NR_GPIO 300
+
 /**
  * struct msm_pinctrl - state for a pinctrl-msm device
  * @dev:            device handle.
@@ -61,9 +63,9 @@ struct msm_pinctrl {
 
 	spinlock_t lock;
 
-	unsigned long *enabled_irqs;
-	unsigned long *dual_edge_irqs;
-	unsigned long *wake_irqs;
+	DECLARE_BITMAP(dual_edge_irqs, MAX_NR_GPIO);
+	DECLARE_BITMAP(enabled_irqs, MAX_NR_GPIO);
+	DECLARE_BITMAP(wake_irqs, MAX_NR_GPIO);
 
 	const struct msm_pinctrl_soc_data *soc;
 	void __iomem *regs;
@@ -875,30 +877,6 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl)
 	chip->owner = THIS_MODULE;
 	chip->of_node = pctrl->dev->of_node;
 
-	pctrl->enabled_irqs = devm_kzalloc(pctrl->dev,
-					   sizeof(unsigned long) * BITS_TO_LONGS(chip->ngpio),
-					   GFP_KERNEL);
-	if (!pctrl->enabled_irqs) {
-		dev_err(pctrl->dev, "Failed to allocate enabled_irqs bitmap\n");
-		return -ENOMEM;
-	}
-
-	pctrl->dual_edge_irqs = devm_kzalloc(pctrl->dev,
-					     sizeof(unsigned long) * BITS_TO_LONGS(chip->ngpio),
-					     GFP_KERNEL);
-	if (!pctrl->dual_edge_irqs) {
-		dev_err(pctrl->dev, "Failed to allocate dual_edge_irqs bitmap\n");
-		return -ENOMEM;
-	}
-
-	pctrl->wake_irqs = devm_kzalloc(pctrl->dev,
-					sizeof(unsigned long) * BITS_TO_LONGS(chip->ngpio),
-					GFP_KERNEL);
-	if (!pctrl->wake_irqs) {
-		dev_err(pctrl->dev, "Failed to allocate wake_irqs bitmap\n");
-		return -ENOMEM;
-	}
-
 	ret = gpiochip_add(&pctrl->chip);
 	if (ret) {
 		dev_err(pctrl->dev, "Failed register gpiochip\n");
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 4/4] pinctrl-msm: Rename compatible to be more specific
  2013-12-15  7:01 ` Bjorn Andersson
@ 2013-12-15  7:01   ` Bjorn Andersson
  -1 siblings, 0 replies; 14+ messages in thread
From: Bjorn Andersson @ 2013-12-15  7:01 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Stephen Warren,
	Ian Campbell, Rob Landley, Linus Walleij, Bjorn Andersson,
	devicetree, linux-doc, linux-kernel, linux-arm-msm

Use the more specific form 8974 for the compatible to reduce the
risk of future mishaps.

Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
---
 ...sm8x74-pinctrl.txt => qcom,msm8974-pinctrl.txt} |    4 ++--
 drivers/pinctrl/pinctrl-msm8x74.c                  |    2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)
 rename Documentation/devicetree/bindings/pinctrl/{qcom,msm8x74-pinctrl.txt => qcom,msm8974-pinctrl.txt} (97%)

diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,msm8x74-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt
similarity index 97%
rename from Documentation/devicetree/bindings/pinctrl/qcom,msm8x74-pinctrl.txt
rename to Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt
index 70ab78f..4c352be 100644
--- a/Documentation/devicetree/bindings/pinctrl/qcom,msm8x74-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt
@@ -1,4 +1,4 @@
-Qualcomm MSM8x74 TLMM block
+Qualcomm MSM8974 TLMM block
 
 Required properties:
 - compatible: "qcom,msm8x74-pinctrl"
@@ -59,7 +59,7 @@ Valid values for qcom,function are:
 Example:
 
 	msmgpio: pinctrl@fd510000 {
-		compatible = "qcom,msm8x74-pinctrl";
+		compatible = "qcom,msm8974-pinctrl";
 		reg = <0xfd510000 0x4000>;
 
 		gpio-controller;
diff --git a/drivers/pinctrl/pinctrl-msm8x74.c b/drivers/pinctrl/pinctrl-msm8x74.c
index c702e77..f944bf2 100644
--- a/drivers/pinctrl/pinctrl-msm8x74.c
+++ b/drivers/pinctrl/pinctrl-msm8x74.c
@@ -603,7 +603,7 @@ static int msm8x74_pinctrl_probe(struct platform_device *pdev)
 }
 
 static const struct of_device_id msm8x74_pinctrl_of_match[] = {
-	{ .compatible = "qcom,msm8x74-pinctrl", },
+	{ .compatible = "qcom,msm8974-pinctrl", },
 	{ },
 };
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 4/4] pinctrl-msm: Rename compatible to be more specific
@ 2013-12-15  7:01   ` Bjorn Andersson
  0 siblings, 0 replies; 14+ messages in thread
From: Bjorn Andersson @ 2013-12-15  7:01 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Stephen Warren,
	Ian Campbell, Rob Landley, Linus Walleij, Bjorn Andersson,
	devicetree, linux-doc, linux-kernel, linux-arm-msm

Use the more specific form 8974 for the compatible to reduce the
risk of future mishaps.

Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
---
 ...sm8x74-pinctrl.txt => qcom,msm8974-pinctrl.txt} |    4 ++--
 drivers/pinctrl/pinctrl-msm8x74.c                  |    2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)
 rename Documentation/devicetree/bindings/pinctrl/{qcom,msm8x74-pinctrl.txt => qcom,msm8974-pinctrl.txt} (97%)

diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,msm8x74-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt
similarity index 97%
rename from Documentation/devicetree/bindings/pinctrl/qcom,msm8x74-pinctrl.txt
rename to Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt
index 70ab78f..4c352be 100644
--- a/Documentation/devicetree/bindings/pinctrl/qcom,msm8x74-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt
@@ -1,4 +1,4 @@
-Qualcomm MSM8x74 TLMM block
+Qualcomm MSM8974 TLMM block
 
 Required properties:
 - compatible: "qcom,msm8x74-pinctrl"
@@ -59,7 +59,7 @@ Valid values for qcom,function are:
 Example:
 
 	msmgpio: pinctrl@fd510000 {
-		compatible = "qcom,msm8x74-pinctrl";
+		compatible = "qcom,msm8974-pinctrl";
 		reg = <0xfd510000 0x4000>;
 
 		gpio-controller;
diff --git a/drivers/pinctrl/pinctrl-msm8x74.c b/drivers/pinctrl/pinctrl-msm8x74.c
index c702e77..f944bf2 100644
--- a/drivers/pinctrl/pinctrl-msm8x74.c
+++ b/drivers/pinctrl/pinctrl-msm8x74.c
@@ -603,7 +603,7 @@ static int msm8x74_pinctrl_probe(struct platform_device *pdev)
 }
 
 static const struct of_device_id msm8x74_pinctrl_of_match[] = {
-	{ .compatible = "qcom,msm8x74-pinctrl", },
+	{ .compatible = "qcom,msm8974-pinctrl", },
 	{ },
 };
 
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/4] pinctrl-msm: Fix spelling misstakes and missing consts
  2013-12-15  7:01   ` Bjorn Andersson
  (?)
@ 2013-12-16  9:31   ` Linus Walleij
  -1 siblings, 0 replies; 14+ messages in thread
From: Linus Walleij @ 2013-12-16  9:31 UTC (permalink / raw)
  To: Bjorn Andersson
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Stephen Warren,
	Ian Campbell, Rob Landley, devicetree, linux-doc, linux-kernel,
	linux-arm-msm

On Sun, Dec 15, 2013 at 8:01 AM, Bjorn Andersson
<bjorn.andersson@sonymobile.com> wrote:

> Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>

Patch applied.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 2/4] pinctrl-msm: Tidy up error handling
  2013-12-15  7:01   ` Bjorn Andersson
  (?)
@ 2013-12-16  9:32   ` Linus Walleij
  -1 siblings, 0 replies; 14+ messages in thread
From: Linus Walleij @ 2013-12-16  9:32 UTC (permalink / raw)
  To: Bjorn Andersson
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Stephen Warren,
	Ian Campbell, Rob Landley, devicetree, linux-doc, linux-kernel,
	linux-arm-msm

On Sun, Dec 15, 2013 at 8:01 AM, Bjorn Andersson
<bjorn.andersson@sonymobile.com> wrote:

> Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>

Patch applied.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/4] pinctrl-msm: Remove separate allocation of bitmaps
  2013-12-15  7:01   ` Bjorn Andersson
  (?)
@ 2013-12-16  9:33   ` Linus Walleij
  -1 siblings, 0 replies; 14+ messages in thread
From: Linus Walleij @ 2013-12-16  9:33 UTC (permalink / raw)
  To: Bjorn Andersson
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Stephen Warren,
	Ian Campbell, Rob Landley, devicetree, linux-doc, linux-kernel,
	linux-arm-msm

On Sun, Dec 15, 2013 at 8:01 AM, Bjorn Andersson
<bjorn.andersson@sonymobile.com> wrote:

> Make the bitmaps part of the msm_pinctrl allocation instead of
> separately allocating them.
>
> Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>

Patch applied.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 4/4] pinctrl-msm: Rename compatible to be more specific
  2013-12-15  7:01   ` Bjorn Andersson
  (?)
@ 2013-12-16  9:34   ` Linus Walleij
  -1 siblings, 0 replies; 14+ messages in thread
From: Linus Walleij @ 2013-12-16  9:34 UTC (permalink / raw)
  To: Bjorn Andersson
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Stephen Warren,
	Ian Campbell, Rob Landley, devicetree, linux-doc, linux-kernel,
	linux-arm-msm

On Sun, Dec 15, 2013 at 8:01 AM, Bjorn Andersson
<bjorn.andersson@sonymobile.com> wrote:

> Use the more specific form 8974 for the compatible to reduce the
> risk of future mishaps.
>
> Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>

Patch applied.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2013-12-16  9:34 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-12-15  7:01 [PATCH 0/4] pinctrl-msm: Fixes for various issues Bjorn Andersson
2013-12-15  7:01 ` Bjorn Andersson
2013-12-15  7:01 ` [PATCH 1/4] pinctrl-msm: Fix spelling misstakes and missing consts Bjorn Andersson
2013-12-15  7:01   ` Bjorn Andersson
2013-12-16  9:31   ` Linus Walleij
2013-12-15  7:01 ` [PATCH 2/4] pinctrl-msm: Tidy up error handling Bjorn Andersson
2013-12-15  7:01   ` Bjorn Andersson
2013-12-16  9:32   ` Linus Walleij
2013-12-15  7:01 ` [PATCH 3/4] pinctrl-msm: Remove separate allocation of bitmaps Bjorn Andersson
2013-12-15  7:01   ` Bjorn Andersson
2013-12-16  9:33   ` Linus Walleij
2013-12-15  7:01 ` [PATCH 4/4] pinctrl-msm: Rename compatible to be more specific Bjorn Andersson
2013-12-15  7:01   ` Bjorn Andersson
2013-12-16  9:34   ` Linus Walleij

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.