Commit 357436af authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'pinctrl-v4.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl

Pull pincontrol fixes from Linus Walleij:
 "These are some v4.4 pin control fixes:

   - Drop a redundant if-clause from Kconfig
   - Fix a missing of_node_put() memory leak in the Freescale i.MX
     driver
   - Fix 64bit compilation of the Qualcomm SSBI driver.
   - Fix a logic inversion in the Mediatek driver.
   - Fix a compilation error for the odd one off in the Super-H instance
     of the SH PFC driver"

* tag 'pinctrl-v4.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
  pinctrl: sh-pfc: sh7734: Add missing cfg macro parameter to fix build
  pinctrl: mediatek: Add get_direction support.
  pinctrl: fix qcom ssbi drivers for 64-bit compilation
  pinctrl: imx1-core: add missing of_node_put
  pinctrl: remove redundant if conditional from Kconfig
parents 79e63f50 48111b79
...@@ -5,8 +5,6 @@ ...@@ -5,8 +5,6 @@
config PINCTRL config PINCTRL
bool bool
if PINCTRL
menu "Pin controllers" menu "Pin controllers"
depends on PINCTRL depends on PINCTRL
...@@ -274,5 +272,3 @@ config PINCTRL_TB10X ...@@ -274,5 +272,3 @@ config PINCTRL_TB10X
select GPIOLIB select GPIOLIB
endmenu endmenu
endif
...@@ -538,9 +538,11 @@ static int imx1_pinctrl_parse_functions(struct device_node *np, ...@@ -538,9 +538,11 @@ static int imx1_pinctrl_parse_functions(struct device_node *np,
func->groups[i] = child->name; func->groups[i] = child->name;
grp = &info->groups[grp_index++]; grp = &info->groups[grp_index++];
ret = imx1_pinctrl_parse_groups(child, grp, info, i++); ret = imx1_pinctrl_parse_groups(child, grp, info, i++);
if (ret == -ENOMEM) if (ret == -ENOMEM) {
of_node_put(child);
return ret; return ret;
} }
}
return 0; return 0;
} }
...@@ -582,9 +584,11 @@ static int imx1_pinctrl_parse_dt(struct platform_device *pdev, ...@@ -582,9 +584,11 @@ static int imx1_pinctrl_parse_dt(struct platform_device *pdev,
for_each_child_of_node(np, child) { for_each_child_of_node(np, child) {
ret = imx1_pinctrl_parse_functions(child, info, ifunc++); ret = imx1_pinctrl_parse_functions(child, info, ifunc++);
if (ret == -ENOMEM) if (ret == -ENOMEM) {
of_node_put(child);
return -ENOMEM; return -ENOMEM;
} }
}
return 0; return 0;
} }
......
...@@ -747,7 +747,7 @@ static int mtk_gpio_get_direction(struct gpio_chip *chip, unsigned offset) ...@@ -747,7 +747,7 @@ static int mtk_gpio_get_direction(struct gpio_chip *chip, unsigned offset)
reg_addr = mtk_get_port(pctl, offset) + pctl->devdata->dir_offset; reg_addr = mtk_get_port(pctl, offset) + pctl->devdata->dir_offset;
bit = BIT(offset & 0xf); bit = BIT(offset & 0xf);
regmap_read(pctl->regmap1, reg_addr, &read_val); regmap_read(pctl->regmap1, reg_addr, &read_val);
return !!(read_val & bit); return !(read_val & bit);
} }
static int mtk_gpio_get(struct gpio_chip *chip, unsigned offset) static int mtk_gpio_get(struct gpio_chip *chip, unsigned offset)
...@@ -757,10 +757,6 @@ static int mtk_gpio_get(struct gpio_chip *chip, unsigned offset) ...@@ -757,10 +757,6 @@ static int mtk_gpio_get(struct gpio_chip *chip, unsigned offset)
unsigned int read_val = 0; unsigned int read_val = 0;
struct mtk_pinctrl *pctl = dev_get_drvdata(chip->dev); struct mtk_pinctrl *pctl = dev_get_drvdata(chip->dev);
if (mtk_gpio_get_direction(chip, offset))
reg_addr = mtk_get_port(pctl, offset) +
pctl->devdata->dout_offset;
else
reg_addr = mtk_get_port(pctl, offset) + reg_addr = mtk_get_port(pctl, offset) +
pctl->devdata->din_offset; pctl->devdata->din_offset;
...@@ -997,6 +993,7 @@ static struct gpio_chip mtk_gpio_chip = { ...@@ -997,6 +993,7 @@ static struct gpio_chip mtk_gpio_chip = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.request = gpiochip_generic_request, .request = gpiochip_generic_request,
.free = gpiochip_generic_free, .free = gpiochip_generic_free,
.get_direction = mtk_gpio_get_direction,
.direction_input = mtk_gpio_direction_input, .direction_input = mtk_gpio_direction_input,
.direction_output = mtk_gpio_direction_output, .direction_output = mtk_gpio_direction_output,
.get = mtk_gpio_get, .get = mtk_gpio_get,
......
...@@ -672,7 +672,7 @@ static int pm8xxx_gpio_probe(struct platform_device *pdev) ...@@ -672,7 +672,7 @@ static int pm8xxx_gpio_probe(struct platform_device *pdev)
return -ENOMEM; return -ENOMEM;
pctrl->dev = &pdev->dev; pctrl->dev = &pdev->dev;
pctrl->npins = (unsigned)of_device_get_match_data(&pdev->dev); pctrl->npins = (unsigned long)of_device_get_match_data(&pdev->dev);
pctrl->regmap = dev_get_regmap(pdev->dev.parent, NULL); pctrl->regmap = dev_get_regmap(pdev->dev.parent, NULL);
if (!pctrl->regmap) { if (!pctrl->regmap) {
......
...@@ -763,7 +763,7 @@ static int pm8xxx_mpp_probe(struct platform_device *pdev) ...@@ -763,7 +763,7 @@ static int pm8xxx_mpp_probe(struct platform_device *pdev)
return -ENOMEM; return -ENOMEM;
pctrl->dev = &pdev->dev; pctrl->dev = &pdev->dev;
pctrl->npins = (unsigned)of_device_get_match_data(&pdev->dev); pctrl->npins = (unsigned long)of_device_get_match_data(&pdev->dev);
pctrl->regmap = dev_get_regmap(pdev->dev.parent, NULL); pctrl->regmap = dev_get_regmap(pdev->dev.parent, NULL);
if (!pctrl->regmap) { if (!pctrl->regmap) {
......
...@@ -31,11 +31,11 @@ ...@@ -31,11 +31,11 @@
PORT_GP_12(5, fn, sfx) PORT_GP_12(5, fn, sfx)
#undef _GP_DATA #undef _GP_DATA
#define _GP_DATA(bank, pin, name, sfx) \ #define _GP_DATA(bank, pin, name, sfx, cfg) \
PINMUX_DATA(name##_DATA, name##_FN, name##_IN, name##_OUT) PINMUX_DATA(name##_DATA, name##_FN, name##_IN, name##_OUT)
#define _GP_INOUTSEL(bank, pin, name, sfx) name##_IN, name##_OUT #define _GP_INOUTSEL(bank, pin, name, sfx, cfg) name##_IN, name##_OUT
#define _GP_INDT(bank, pin, name, sfx) name##_DATA #define _GP_INDT(bank, pin, name, sfx, cfg) name##_DATA
#define GP_INOUTSEL(bank) PORT_GP_32_REV(bank, _GP_INOUTSEL, unused) #define GP_INOUTSEL(bank) PORT_GP_32_REV(bank, _GP_INOUTSEL, unused)
#define GP_INDT(bank) PORT_GP_32_REV(bank, _GP_INDT, unused) #define GP_INDT(bank) PORT_GP_32_REV(bank, _GP_INDT, unused)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment