diff options
Diffstat (limited to 'drivers/pinctrl')
-rw-r--r-- | drivers/pinctrl/core.c | 2 | ||||
-rw-r--r-- | drivers/pinctrl/pinctrl-imx.c | 34 | ||||
-rw-r--r-- | drivers/pinctrl/pinctrl-mxs.c | 13 | ||||
-rw-r--r-- | drivers/pinctrl/pinctrl-nomadik.c | 3 | ||||
-rw-r--r-- | drivers/pinctrl/pinctrl-sirf.c | 2 |
5 files changed, 30 insertions, 24 deletions
diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c index c3b331b74fa0..0cc053af70bd 100644 --- a/drivers/pinctrl/core.c +++ b/drivers/pinctrl/core.c | |||
@@ -61,7 +61,7 @@ static LIST_HEAD(pinctrl_maps); | |||
61 | list_for_each_entry(_maps_node_, &pinctrl_maps, node) \ | 61 | list_for_each_entry(_maps_node_, &pinctrl_maps, node) \ |
62 | for (_i_ = 0, _map_ = &_maps_node_->maps[_i_]; \ | 62 | for (_i_ = 0, _map_ = &_maps_node_->maps[_i_]; \ |
63 | _i_ < _maps_node_->num_maps; \ | 63 | _i_ < _maps_node_->num_maps; \ |
64 | i++, _map_ = &_maps_node_->maps[_i_]) | 64 | _i_++, _map_ = &_maps_node_->maps[_i_]) |
65 | 65 | ||
66 | /** | 66 | /** |
67 | * pinctrl_provide_dummies() - indicate if pinctrl provides dummy state support | 67 | * pinctrl_provide_dummies() - indicate if pinctrl provides dummy state support |
diff --git a/drivers/pinctrl/pinctrl-imx.c b/drivers/pinctrl/pinctrl-imx.c index f6e7c670906c..dd6d93aa5334 100644 --- a/drivers/pinctrl/pinctrl-imx.c +++ b/drivers/pinctrl/pinctrl-imx.c | |||
@@ -27,16 +27,16 @@ | |||
27 | #include "core.h" | 27 | #include "core.h" |
28 | #include "pinctrl-imx.h" | 28 | #include "pinctrl-imx.h" |
29 | 29 | ||
30 | #define IMX_PMX_DUMP(info, p, m, c, n) \ | 30 | #define IMX_PMX_DUMP(info, p, m, c, n) \ |
31 | { \ | 31 | { \ |
32 | int i, j; \ | 32 | int i, j; \ |
33 | printk("Format: Pin Mux Config\n"); \ | 33 | printk(KERN_DEBUG "Format: Pin Mux Config\n"); \ |
34 | for (i = 0; i < n; i++) { \ | 34 | for (i = 0; i < n; i++) { \ |
35 | j = p[i]; \ | 35 | j = p[i]; \ |
36 | printk("%s %d 0x%lx\n", \ | 36 | printk(KERN_DEBUG "%s %d 0x%lx\n", \ |
37 | info->pins[j].name, \ | 37 | info->pins[j].name, \ |
38 | m[i], c[i]); \ | 38 | m[i], c[i]); \ |
39 | } \ | 39 | } \ |
40 | } | 40 | } |
41 | 41 | ||
42 | /* The bits in CONFIG cell defined in binding doc*/ | 42 | /* The bits in CONFIG cell defined in binding doc*/ |
@@ -173,8 +173,10 @@ static int imx_dt_node_to_map(struct pinctrl_dev *pctldev, | |||
173 | 173 | ||
174 | /* create mux map */ | 174 | /* create mux map */ |
175 | parent = of_get_parent(np); | 175 | parent = of_get_parent(np); |
176 | if (!parent) | 176 | if (!parent) { |
177 | kfree(new_map); | ||
177 | return -EINVAL; | 178 | return -EINVAL; |
179 | } | ||
178 | new_map[0].type = PIN_MAP_TYPE_MUX_GROUP; | 180 | new_map[0].type = PIN_MAP_TYPE_MUX_GROUP; |
179 | new_map[0].data.mux.function = parent->name; | 181 | new_map[0].data.mux.function = parent->name; |
180 | new_map[0].data.mux.group = np->name; | 182 | new_map[0].data.mux.group = np->name; |
@@ -193,7 +195,7 @@ static int imx_dt_node_to_map(struct pinctrl_dev *pctldev, | |||
193 | } | 195 | } |
194 | 196 | ||
195 | dev_dbg(pctldev->dev, "maps: function %s group %s num %d\n", | 197 | dev_dbg(pctldev->dev, "maps: function %s group %s num %d\n", |
196 | new_map->data.mux.function, new_map->data.mux.group, map_num); | 198 | (*map)->data.mux.function, (*map)->data.mux.group, map_num); |
197 | 199 | ||
198 | return 0; | 200 | return 0; |
199 | } | 201 | } |
@@ -201,10 +203,7 @@ static int imx_dt_node_to_map(struct pinctrl_dev *pctldev, | |||
201 | static void imx_dt_free_map(struct pinctrl_dev *pctldev, | 203 | static void imx_dt_free_map(struct pinctrl_dev *pctldev, |
202 | struct pinctrl_map *map, unsigned num_maps) | 204 | struct pinctrl_map *map, unsigned num_maps) |
203 | { | 205 | { |
204 | int i; | 206 | kfree(map); |
205 | |||
206 | for (i = 0; i < num_maps; i++) | ||
207 | kfree(map); | ||
208 | } | 207 | } |
209 | 208 | ||
210 | static struct pinctrl_ops imx_pctrl_ops = { | 209 | static struct pinctrl_ops imx_pctrl_ops = { |
@@ -475,9 +474,8 @@ static int __devinit imx_pinctrl_parse_groups(struct device_node *np, | |||
475 | grp->configs[j] = config & ~IMX_PAD_SION; | 474 | grp->configs[j] = config & ~IMX_PAD_SION; |
476 | } | 475 | } |
477 | 476 | ||
478 | #ifdef DEBUG | ||
479 | IMX_PMX_DUMP(info, grp->pins, grp->mux_mode, grp->configs, grp->npins); | 477 | IMX_PMX_DUMP(info, grp->pins, grp->mux_mode, grp->configs, grp->npins); |
480 | #endif | 478 | |
481 | return 0; | 479 | return 0; |
482 | } | 480 | } |
483 | 481 | ||
diff --git a/drivers/pinctrl/pinctrl-mxs.c b/drivers/pinctrl/pinctrl-mxs.c index 556e45a213eb..afb50ee64598 100644 --- a/drivers/pinctrl/pinctrl-mxs.c +++ b/drivers/pinctrl/pinctrl-mxs.c | |||
@@ -107,8 +107,10 @@ static int mxs_dt_node_to_map(struct pinctrl_dev *pctldev, | |||
107 | 107 | ||
108 | /* Compose group name */ | 108 | /* Compose group name */ |
109 | group = kzalloc(length, GFP_KERNEL); | 109 | group = kzalloc(length, GFP_KERNEL); |
110 | if (!group) | 110 | if (!group) { |
111 | return -ENOMEM; | 111 | ret = -ENOMEM; |
112 | goto free; | ||
113 | } | ||
112 | snprintf(group, length, "%s.%d", np->name, reg); | 114 | snprintf(group, length, "%s.%d", np->name, reg); |
113 | new_map[i].data.mux.group = group; | 115 | new_map[i].data.mux.group = group; |
114 | i++; | 116 | i++; |
@@ -118,7 +120,7 @@ static int mxs_dt_node_to_map(struct pinctrl_dev *pctldev, | |||
118 | pconfig = kmemdup(&config, sizeof(config), GFP_KERNEL); | 120 | pconfig = kmemdup(&config, sizeof(config), GFP_KERNEL); |
119 | if (!pconfig) { | 121 | if (!pconfig) { |
120 | ret = -ENOMEM; | 122 | ret = -ENOMEM; |
121 | goto free; | 123 | goto free_group; |
122 | } | 124 | } |
123 | 125 | ||
124 | new_map[i].type = PIN_MAP_TYPE_CONFIGS_GROUP; | 126 | new_map[i].type = PIN_MAP_TYPE_CONFIGS_GROUP; |
@@ -133,6 +135,9 @@ static int mxs_dt_node_to_map(struct pinctrl_dev *pctldev, | |||
133 | 135 | ||
134 | return 0; | 136 | return 0; |
135 | 137 | ||
138 | free_group: | ||
139 | if (!purecfg) | ||
140 | free(group); | ||
136 | free: | 141 | free: |
137 | kfree(new_map); | 142 | kfree(new_map); |
138 | return ret; | 143 | return ret; |
@@ -511,6 +516,7 @@ int __devinit mxs_pinctrl_probe(struct platform_device *pdev, | |||
511 | return 0; | 516 | return 0; |
512 | 517 | ||
513 | err: | 518 | err: |
519 | platform_set_drvdata(pdev, NULL); | ||
514 | iounmap(d->base); | 520 | iounmap(d->base); |
515 | return ret; | 521 | return ret; |
516 | } | 522 | } |
@@ -520,6 +526,7 @@ int __devexit mxs_pinctrl_remove(struct platform_device *pdev) | |||
520 | { | 526 | { |
521 | struct mxs_pinctrl_data *d = platform_get_drvdata(pdev); | 527 | struct mxs_pinctrl_data *d = platform_get_drvdata(pdev); |
522 | 528 | ||
529 | platform_set_drvdata(pdev, NULL); | ||
523 | pinctrl_unregister(d->pctl); | 530 | pinctrl_unregister(d->pctl); |
524 | iounmap(d->base); | 531 | iounmap(d->base); |
525 | 532 | ||
diff --git a/drivers/pinctrl/pinctrl-nomadik.c b/drivers/pinctrl/pinctrl-nomadik.c index b26395d16347..e8937e7e4999 100644 --- a/drivers/pinctrl/pinctrl-nomadik.c +++ b/drivers/pinctrl/pinctrl-nomadik.c | |||
@@ -673,7 +673,7 @@ static void __nmk_gpio_set_wake(struct nmk_gpio_chip *nmk_chip, | |||
673 | * wakeup is anyhow controlled by the RIMSC and FIMSC registers. | 673 | * wakeup is anyhow controlled by the RIMSC and FIMSC registers. |
674 | */ | 674 | */ |
675 | if (nmk_chip->sleepmode && on) { | 675 | if (nmk_chip->sleepmode && on) { |
676 | __nmk_gpio_set_slpm(nmk_chip, gpio % nmk_chip->chip.base, | 676 | __nmk_gpio_set_slpm(nmk_chip, gpio % NMK_GPIO_PER_CHIP, |
677 | NMK_GPIO_SLPM_WAKEUP_ENABLE); | 677 | NMK_GPIO_SLPM_WAKEUP_ENABLE); |
678 | } | 678 | } |
679 | 679 | ||
@@ -1246,6 +1246,7 @@ static int __devinit nmk_gpio_probe(struct platform_device *dev) | |||
1246 | ret = PTR_ERR(clk); | 1246 | ret = PTR_ERR(clk); |
1247 | goto out_unmap; | 1247 | goto out_unmap; |
1248 | } | 1248 | } |
1249 | clk_prepare(clk); | ||
1249 | 1250 | ||
1250 | nmk_chip = kzalloc(sizeof(*nmk_chip), GFP_KERNEL); | 1251 | nmk_chip = kzalloc(sizeof(*nmk_chip), GFP_KERNEL); |
1251 | if (!nmk_chip) { | 1252 | if (!nmk_chip) { |
diff --git a/drivers/pinctrl/pinctrl-sirf.c b/drivers/pinctrl/pinctrl-sirf.c index ba15b1a29e52..e9f8e7d11001 100644 --- a/drivers/pinctrl/pinctrl-sirf.c +++ b/drivers/pinctrl/pinctrl-sirf.c | |||
@@ -1184,7 +1184,7 @@ out_no_gpio_remap: | |||
1184 | return ret; | 1184 | return ret; |
1185 | } | 1185 | } |
1186 | 1186 | ||
1187 | static const struct of_device_id pinmux_ids[] = { | 1187 | static const struct of_device_id pinmux_ids[] __devinitconst = { |
1188 | { .compatible = "sirf,prima2-gpio-pinmux" }, | 1188 | { .compatible = "sirf,prima2-gpio-pinmux" }, |
1189 | {} | 1189 | {} |
1190 | }; | 1190 | }; |