pinctrl fixes for v3.5 rc series:
- section markup fixes - clk_prepare() fix to conform to the clk API - memory leaks - incorrect debug messages - bad errorpaths - typos -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iQIcBAABAgAGBQJP2ZIRAAoJEEEQszewGV1zJEsP/jwNNj1+OvGYiOg+Tn29wc0q J02EJGb0mNCPX8JzWpKSXoEdCzqbmqdjR7zfmetQV1GpiUgidrnIjyLnUCXZnNaF 2z210SoOWKnats9kvwdbptZ/xY/o1Ncdlfw2QgLiX6gx+bRmyNWR/4IOilsNMywA u7gPcfGGNgidUCAjNz5tFS5o8kFI+Z9FF/7f8gs4TAT70k40n79RGpgW7gA2PhR8 c8WcJk2TOBThMdSl07JKChTtBtU1ZrPrv8quuk6+voPJa71nJfHNYkAd78cegOBS 5pfh0rCGElHDMfZ5DdFBsFL1ETxni0mSziBIdgnBX85Ll/wJH6tEPjcVA1sv8Jka kLm61XKsDwV+A0KibgmGPSu6nYqGZMaAsvJPSWJjXcPcS3VhXK4lly3OCD1KB6U+ 5u6hD+yavYX8mpEOik3y9pnKYS80d8zvR22/jGpqTByG3DbLwAlLzen7iWHqAbLG JJLpD6pxkVA15x+TkS3I1kBMzjM5G11AjticgIxAfx4pSqL/n0CJ1m9tXQ1X7iis Kl526ZWxh+GDy9/cM/AqjEJYoefmcCTv1wSieWVsgEKc7+tut47rdaNa4eC+jqho NprmfhS16na5GCagh0yI+YXl+nK0Kd9oWoGiJqQcS67UZEn06SzRNdABBPa5OO1F ZVfnheS1t4UVw/E5Gmz2 =F/II -----END PGP SIGNATURE----- Merge tag 'pinctrl-fixes-for-v3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl Pull pinctrl fixes from Linus Walleij: - section markup fixes - clk_prepare() fix to conform to the clk API - memory leaks - incorrect debug messages - bad errorpaths - typos * tag 'pinctrl-fixes-for-v3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: pinctrl: pinctrl-mxs: set platform driver data to NULL at errpath and at unregister pinctrl: pinctrl-mxs: Take care of frees if the kzalloc fails pinctrl: pinctrl-imx: fix incorrect debug message of maps pinctrl: pinctrl-imx: free if of_get_parent fails to get the parent node pinctrl: pinctrl-imx: free allocated pinctrl_map structure only once and use kernel facilities for IMX_PMX_DUMP pinctrl: nomadik: fix up typo pinctrl: nomadik: add clk_prepare() call pinctrl: fix a minor harmless typo pinctrl: sirf: mark of_device_id match table as __devinitconst
This commit is contained in:
commit
0953135956
@ -61,7 +61,7 @@ static LIST_HEAD(pinctrl_maps);
|
|||||||
list_for_each_entry(_maps_node_, &pinctrl_maps, node) \
|
list_for_each_entry(_maps_node_, &pinctrl_maps, node) \
|
||||||
for (_i_ = 0, _map_ = &_maps_node_->maps[_i_]; \
|
for (_i_ = 0, _map_ = &_maps_node_->maps[_i_]; \
|
||||||
_i_ < _maps_node_->num_maps; \
|
_i_ < _maps_node_->num_maps; \
|
||||||
i++, _map_ = &_maps_node_->maps[_i_])
|
_i_++, _map_ = &_maps_node_->maps[_i_])
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pinctrl_provide_dummies() - indicate if pinctrl provides dummy state support
|
* pinctrl_provide_dummies() - indicate if pinctrl provides dummy state support
|
||||||
|
@ -27,16 +27,16 @@
|
|||||||
#include "core.h"
|
#include "core.h"
|
||||||
#include "pinctrl-imx.h"
|
#include "pinctrl-imx.h"
|
||||||
|
|
||||||
#define IMX_PMX_DUMP(info, p, m, c, n) \
|
#define IMX_PMX_DUMP(info, p, m, c, n) \
|
||||||
{ \
|
{ \
|
||||||
int i, j; \
|
int i, j; \
|
||||||
printk("Format: Pin Mux Config\n"); \
|
printk(KERN_DEBUG "Format: Pin Mux Config\n"); \
|
||||||
for (i = 0; i < n; i++) { \
|
for (i = 0; i < n; i++) { \
|
||||||
j = p[i]; \
|
j = p[i]; \
|
||||||
printk("%s %d 0x%lx\n", \
|
printk(KERN_DEBUG "%s %d 0x%lx\n", \
|
||||||
info->pins[j].name, \
|
info->pins[j].name, \
|
||||||
m[i], c[i]); \
|
m[i], c[i]); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The bits in CONFIG cell defined in binding doc*/
|
/* The bits in CONFIG cell defined in binding doc*/
|
||||||
@ -173,8 +173,10 @@ static int imx_dt_node_to_map(struct pinctrl_dev *pctldev,
|
|||||||
|
|
||||||
/* create mux map */
|
/* create mux map */
|
||||||
parent = of_get_parent(np);
|
parent = of_get_parent(np);
|
||||||
if (!parent)
|
if (!parent) {
|
||||||
|
kfree(new_map);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
}
|
||||||
new_map[0].type = PIN_MAP_TYPE_MUX_GROUP;
|
new_map[0].type = PIN_MAP_TYPE_MUX_GROUP;
|
||||||
new_map[0].data.mux.function = parent->name;
|
new_map[0].data.mux.function = parent->name;
|
||||||
new_map[0].data.mux.group = np->name;
|
new_map[0].data.mux.group = np->name;
|
||||||
@ -193,7 +195,7 @@ static int imx_dt_node_to_map(struct pinctrl_dev *pctldev,
|
|||||||
}
|
}
|
||||||
|
|
||||||
dev_dbg(pctldev->dev, "maps: function %s group %s num %d\n",
|
dev_dbg(pctldev->dev, "maps: function %s group %s num %d\n",
|
||||||
new_map->data.mux.function, new_map->data.mux.group, map_num);
|
(*map)->data.mux.function, (*map)->data.mux.group, map_num);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -201,10 +203,7 @@ static int imx_dt_node_to_map(struct pinctrl_dev *pctldev,
|
|||||||
static void imx_dt_free_map(struct pinctrl_dev *pctldev,
|
static void imx_dt_free_map(struct pinctrl_dev *pctldev,
|
||||||
struct pinctrl_map *map, unsigned num_maps)
|
struct pinctrl_map *map, unsigned num_maps)
|
||||||
{
|
{
|
||||||
int i;
|
kfree(map);
|
||||||
|
|
||||||
for (i = 0; i < num_maps; i++)
|
|
||||||
kfree(map);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct pinctrl_ops imx_pctrl_ops = {
|
static struct pinctrl_ops imx_pctrl_ops = {
|
||||||
@ -475,9 +474,8 @@ static int __devinit imx_pinctrl_parse_groups(struct device_node *np,
|
|||||||
grp->configs[j] = config & ~IMX_PAD_SION;
|
grp->configs[j] = config & ~IMX_PAD_SION;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
IMX_PMX_DUMP(info, grp->pins, grp->mux_mode, grp->configs, grp->npins);
|
IMX_PMX_DUMP(info, grp->pins, grp->mux_mode, grp->configs, grp->npins);
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,8 +107,10 @@ static int mxs_dt_node_to_map(struct pinctrl_dev *pctldev,
|
|||||||
|
|
||||||
/* Compose group name */
|
/* Compose group name */
|
||||||
group = kzalloc(length, GFP_KERNEL);
|
group = kzalloc(length, GFP_KERNEL);
|
||||||
if (!group)
|
if (!group) {
|
||||||
return -ENOMEM;
|
ret = -ENOMEM;
|
||||||
|
goto free;
|
||||||
|
}
|
||||||
snprintf(group, length, "%s.%d", np->name, reg);
|
snprintf(group, length, "%s.%d", np->name, reg);
|
||||||
new_map[i].data.mux.group = group;
|
new_map[i].data.mux.group = group;
|
||||||
i++;
|
i++;
|
||||||
@ -118,7 +120,7 @@ static int mxs_dt_node_to_map(struct pinctrl_dev *pctldev,
|
|||||||
pconfig = kmemdup(&config, sizeof(config), GFP_KERNEL);
|
pconfig = kmemdup(&config, sizeof(config), GFP_KERNEL);
|
||||||
if (!pconfig) {
|
if (!pconfig) {
|
||||||
ret = -ENOMEM;
|
ret = -ENOMEM;
|
||||||
goto free;
|
goto free_group;
|
||||||
}
|
}
|
||||||
|
|
||||||
new_map[i].type = PIN_MAP_TYPE_CONFIGS_GROUP;
|
new_map[i].type = PIN_MAP_TYPE_CONFIGS_GROUP;
|
||||||
@ -133,6 +135,9 @@ static int mxs_dt_node_to_map(struct pinctrl_dev *pctldev,
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
free_group:
|
||||||
|
if (!purecfg)
|
||||||
|
free(group);
|
||||||
free:
|
free:
|
||||||
kfree(new_map);
|
kfree(new_map);
|
||||||
return ret;
|
return ret;
|
||||||
@ -511,6 +516,7 @@ int __devinit mxs_pinctrl_probe(struct platform_device *pdev,
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
|
platform_set_drvdata(pdev, NULL);
|
||||||
iounmap(d->base);
|
iounmap(d->base);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -520,6 +526,7 @@ int __devexit mxs_pinctrl_remove(struct platform_device *pdev)
|
|||||||
{
|
{
|
||||||
struct mxs_pinctrl_data *d = platform_get_drvdata(pdev);
|
struct mxs_pinctrl_data *d = platform_get_drvdata(pdev);
|
||||||
|
|
||||||
|
platform_set_drvdata(pdev, NULL);
|
||||||
pinctrl_unregister(d->pctl);
|
pinctrl_unregister(d->pctl);
|
||||||
iounmap(d->base);
|
iounmap(d->base);
|
||||||
|
|
||||||
|
@ -673,7 +673,7 @@ static void __nmk_gpio_set_wake(struct nmk_gpio_chip *nmk_chip,
|
|||||||
* wakeup is anyhow controlled by the RIMSC and FIMSC registers.
|
* wakeup is anyhow controlled by the RIMSC and FIMSC registers.
|
||||||
*/
|
*/
|
||||||
if (nmk_chip->sleepmode && on) {
|
if (nmk_chip->sleepmode && on) {
|
||||||
__nmk_gpio_set_slpm(nmk_chip, gpio % nmk_chip->chip.base,
|
__nmk_gpio_set_slpm(nmk_chip, gpio % NMK_GPIO_PER_CHIP,
|
||||||
NMK_GPIO_SLPM_WAKEUP_ENABLE);
|
NMK_GPIO_SLPM_WAKEUP_ENABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1246,6 +1246,7 @@ static int __devinit nmk_gpio_probe(struct platform_device *dev)
|
|||||||
ret = PTR_ERR(clk);
|
ret = PTR_ERR(clk);
|
||||||
goto out_unmap;
|
goto out_unmap;
|
||||||
}
|
}
|
||||||
|
clk_prepare(clk);
|
||||||
|
|
||||||
nmk_chip = kzalloc(sizeof(*nmk_chip), GFP_KERNEL);
|
nmk_chip = kzalloc(sizeof(*nmk_chip), GFP_KERNEL);
|
||||||
if (!nmk_chip) {
|
if (!nmk_chip) {
|
||||||
|
@ -1184,7 +1184,7 @@ out_no_gpio_remap:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct of_device_id pinmux_ids[] = {
|
static const struct of_device_id pinmux_ids[] __devinitconst = {
|
||||||
{ .compatible = "sirf,prima2-gpio-pinmux" },
|
{ .compatible = "sirf,prima2-gpio-pinmux" },
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user