diff options
| -rw-r--r-- | arch/arm/mach-exynos/Kconfig | 2 | ||||
| -rw-r--r-- | drivers/pinctrl/Kconfig | 4 | ||||
| -rw-r--r-- | drivers/pinctrl/Makefile | 2 | ||||
| -rw-r--r-- | drivers/pinctrl/pinctrl-sirf.c | 18 |
4 files changed, 22 insertions, 4 deletions
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig index e103c290bc9e..85afb031b676 100644 --- a/arch/arm/mach-exynos/Kconfig +++ b/arch/arm/mach-exynos/Kconfig | |||
| @@ -414,7 +414,7 @@ config MACH_EXYNOS4_DT | |||
| 414 | select CPU_EXYNOS4210 | 414 | select CPU_EXYNOS4210 |
| 415 | select HAVE_SAMSUNG_KEYPAD if INPUT_KEYBOARD | 415 | select HAVE_SAMSUNG_KEYPAD if INPUT_KEYBOARD |
| 416 | select PINCTRL | 416 | select PINCTRL |
| 417 | select PINCTRL_EXYNOS4 | 417 | select PINCTRL_EXYNOS |
| 418 | select USE_OF | 418 | select USE_OF |
| 419 | help | 419 | help |
| 420 | Machine support for Samsung Exynos4 machine with device tree enabled. | 420 | Machine support for Samsung Exynos4 machine with device tree enabled. |
diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig index efaecefe3f8c..a5f3c8ca480e 100644 --- a/drivers/pinctrl/Kconfig +++ b/drivers/pinctrl/Kconfig | |||
| @@ -184,8 +184,8 @@ config PINCTRL_SAMSUNG | |||
| 184 | select PINMUX | 184 | select PINMUX |
| 185 | select PINCONF | 185 | select PINCONF |
| 186 | 186 | ||
| 187 | config PINCTRL_EXYNOS4 | 187 | config PINCTRL_EXYNOS |
| 188 | bool "Pinctrl driver data for Exynos4 SoC" | 188 | bool "Pinctrl driver data for Samsung EXYNOS SoCs" |
| 189 | depends on OF && GPIOLIB | 189 | depends on OF && GPIOLIB |
| 190 | select PINCTRL_SAMSUNG | 190 | select PINCTRL_SAMSUNG |
| 191 | 191 | ||
diff --git a/drivers/pinctrl/Makefile b/drivers/pinctrl/Makefile index fc4606f27dc7..6e87e52eab5d 100644 --- a/drivers/pinctrl/Makefile +++ b/drivers/pinctrl/Makefile | |||
| @@ -36,7 +36,7 @@ obj-$(CONFIG_PINCTRL_TEGRA30) += pinctrl-tegra30.o | |||
| 36 | obj-$(CONFIG_PINCTRL_U300) += pinctrl-u300.o | 36 | obj-$(CONFIG_PINCTRL_U300) += pinctrl-u300.o |
| 37 | obj-$(CONFIG_PINCTRL_COH901) += pinctrl-coh901.o | 37 | obj-$(CONFIG_PINCTRL_COH901) += pinctrl-coh901.o |
| 38 | obj-$(CONFIG_PINCTRL_SAMSUNG) += pinctrl-samsung.o | 38 | obj-$(CONFIG_PINCTRL_SAMSUNG) += pinctrl-samsung.o |
| 39 | obj-$(CONFIG_PINCTRL_EXYNOS4) += pinctrl-exynos.o | 39 | obj-$(CONFIG_PINCTRL_EXYNOS) += pinctrl-exynos.o |
| 40 | obj-$(CONFIG_PINCTRL_EXYNOS5440) += pinctrl-exynos5440.o | 40 | obj-$(CONFIG_PINCTRL_EXYNOS5440) += pinctrl-exynos5440.o |
| 41 | obj-$(CONFIG_PINCTRL_XWAY) += pinctrl-xway.o | 41 | obj-$(CONFIG_PINCTRL_XWAY) += pinctrl-xway.o |
| 42 | obj-$(CONFIG_PINCTRL_LANTIQ) += pinctrl-lantiq.o | 42 | obj-$(CONFIG_PINCTRL_LANTIQ) += pinctrl-lantiq.o |
diff --git a/drivers/pinctrl/pinctrl-sirf.c b/drivers/pinctrl/pinctrl-sirf.c index 498b2ba905de..d02498b30c6e 100644 --- a/drivers/pinctrl/pinctrl-sirf.c +++ b/drivers/pinctrl/pinctrl-sirf.c | |||
| @@ -1246,6 +1246,22 @@ static void __iomem *sirfsoc_rsc_of_iomap(void) | |||
| 1246 | return of_iomap(np, 0); | 1246 | return of_iomap(np, 0); |
| 1247 | } | 1247 | } |
| 1248 | 1248 | ||
| 1249 | static int sirfsoc_gpio_of_xlate(struct gpio_chip *gc, | ||
| 1250 | const struct of_phandle_args *gpiospec, | ||
| 1251 | u32 *flags) | ||
| 1252 | { | ||
| 1253 | if (gpiospec->args[0] > SIRFSOC_GPIO_NO_OF_BANKS * SIRFSOC_GPIO_BANK_SIZE) | ||
| 1254 | return -EINVAL; | ||
| 1255 | |||
| 1256 | if (gc != &sgpio_bank[gpiospec->args[0] / SIRFSOC_GPIO_BANK_SIZE].chip.gc) | ||
| 1257 | return -EINVAL; | ||
| 1258 | |||
| 1259 | if (flags) | ||
| 1260 | *flags = gpiospec->args[1]; | ||
| 1261 | |||
| 1262 | return gpiospec->args[0] % SIRFSOC_GPIO_BANK_SIZE; | ||
| 1263 | } | ||
| 1264 | |||
| 1249 | static int sirfsoc_pinmux_probe(struct platform_device *pdev) | 1265 | static int sirfsoc_pinmux_probe(struct platform_device *pdev) |
| 1250 | { | 1266 | { |
| 1251 | int ret; | 1267 | int ret; |
| @@ -1736,6 +1752,8 @@ static int sirfsoc_gpio_probe(struct device_node *np) | |||
| 1736 | bank->chip.gc.ngpio = SIRFSOC_GPIO_BANK_SIZE; | 1752 | bank->chip.gc.ngpio = SIRFSOC_GPIO_BANK_SIZE; |
| 1737 | bank->chip.gc.label = kstrdup(np->full_name, GFP_KERNEL); | 1753 | bank->chip.gc.label = kstrdup(np->full_name, GFP_KERNEL); |
| 1738 | bank->chip.gc.of_node = np; | 1754 | bank->chip.gc.of_node = np; |
| 1755 | bank->chip.gc.of_xlate = sirfsoc_gpio_of_xlate; | ||
| 1756 | bank->chip.gc.of_gpio_n_cells = 2; | ||
| 1739 | bank->chip.regs = regs; | 1757 | bank->chip.regs = regs; |
| 1740 | bank->id = i; | 1758 | bank->id = i; |
| 1741 | bank->is_marco = is_marco; | 1759 | bank->is_marco = is_marco; |
