* [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.