Commit 61dd7261 authored by Tomasz Figa's avatar Tomasz Figa Committed by Linus Walleij

pinctrl: Add pinctrl-s3c64xx driver

This patch adds pinctrl-s3c64xx driver which implements pin control
interface for Samsung S3C64xx SoCs.
Signed-off-by: default avatarTomasz Figa <tomasz.figa@gmail.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent c16150d8
...@@ -7,6 +7,7 @@ on-chip controllers onto these pads. ...@@ -7,6 +7,7 @@ on-chip controllers onto these pads.
Required Properties: Required Properties:
- compatible: should be one of the following. - compatible: should be one of the following.
- "samsung,s3c64xx-pinctrl": for S3C64xx-compatible pin-controller,
- "samsung,exynos4210-pinctrl": for Exynos4210 compatible pin-controller. - "samsung,exynos4210-pinctrl": for Exynos4210 compatible pin-controller.
- "samsung,exynos4x12-pinctrl": for Exynos4x12 compatible pin-controller. - "samsung,exynos4x12-pinctrl": for Exynos4x12 compatible pin-controller.
- "samsung,exynos5250-pinctrl": for Exynos5250 compatible pin-controller. - "samsung,exynos5250-pinctrl": for Exynos5250 compatible pin-controller.
...@@ -105,6 +106,8 @@ B. External Wakeup Interrupts: For supporting external wakeup interrupts, a ...@@ -105,6 +106,8 @@ B. External Wakeup Interrupts: For supporting external wakeup interrupts, a
- compatible: identifies the type of the external wakeup interrupt controller - compatible: identifies the type of the external wakeup interrupt controller
The possible values are: The possible values are:
- samsung,s3c64xx-wakeup-eint: represents wakeup interrupt controller
found on Samsung S3C64xx SoCs,
- samsung,exynos4210-wakeup-eint: represents wakeup interrupt controller - samsung,exynos4210-wakeup-eint: represents wakeup interrupt controller
found on Samsung Exynos4210 SoC. found on Samsung Exynos4210 SoC.
- interrupt-parent: phandle of the interrupt parent to which the external - interrupt-parent: phandle of the interrupt parent to which the external
......
...@@ -208,6 +208,11 @@ config PINCTRL_EXYNOS5440 ...@@ -208,6 +208,11 @@ config PINCTRL_EXYNOS5440
select PINMUX select PINMUX
select PINCONF select PINCONF
config PINCTRL_S3C64XX
bool "Samsung S3C64XX SoC pinctrl driver"
depends on ARCH_S3C64XX
select PINCTRL_SAMSUNG
source "drivers/pinctrl/mvebu/Kconfig" source "drivers/pinctrl/mvebu/Kconfig"
source "drivers/pinctrl/sh-pfc/Kconfig" source "drivers/pinctrl/sh-pfc/Kconfig"
source "drivers/pinctrl/spear/Kconfig" source "drivers/pinctrl/spear/Kconfig"
......
...@@ -41,6 +41,7 @@ obj-$(CONFIG_PINCTRL_COH901) += pinctrl-coh901.o ...@@ -41,6 +41,7 @@ obj-$(CONFIG_PINCTRL_COH901) += pinctrl-coh901.o
obj-$(CONFIG_PINCTRL_SAMSUNG) += pinctrl-samsung.o obj-$(CONFIG_PINCTRL_SAMSUNG) += pinctrl-samsung.o
obj-$(CONFIG_PINCTRL_EXYNOS) += pinctrl-exynos.o obj-$(CONFIG_PINCTRL_EXYNOS) += pinctrl-exynos.o
obj-$(CONFIG_PINCTRL_EXYNOS5440) += pinctrl-exynos5440.o obj-$(CONFIG_PINCTRL_EXYNOS5440) += pinctrl-exynos5440.o
obj-$(CONFIG_PINCTRL_S3C64XX) += pinctrl-s3c64xx.o
obj-$(CONFIG_PINCTRL_XWAY) += pinctrl-xway.o obj-$(CONFIG_PINCTRL_XWAY) += pinctrl-xway.o
obj-$(CONFIG_PINCTRL_LANTIQ) += pinctrl-lantiq.o obj-$(CONFIG_PINCTRL_LANTIQ) += pinctrl-lantiq.o
......
This diff is collapsed.
...@@ -970,6 +970,10 @@ static const struct of_device_id samsung_pinctrl_dt_match[] = { ...@@ -970,6 +970,10 @@ static const struct of_device_id samsung_pinctrl_dt_match[] = {
.data = (void *)exynos4210_pin_ctrl }, .data = (void *)exynos4210_pin_ctrl },
{ .compatible = "samsung,exynos4x12-pinctrl", { .compatible = "samsung,exynos4x12-pinctrl",
.data = (void *)exynos4x12_pin_ctrl }, .data = (void *)exynos4x12_pin_ctrl },
#endif
#ifdef CONFIG_PINCTRL_S3C64XX
{ .compatible = "samsung,s3c64xx-pinctrl",
.data = s3c64xx_pin_ctrl },
#endif #endif
{}, {},
}; };
......
...@@ -117,7 +117,9 @@ struct samsung_pin_bank_type { ...@@ -117,7 +117,9 @@ struct samsung_pin_bank_type {
* @pctl_offset: starting offset of the pin-bank registers. * @pctl_offset: starting offset of the pin-bank registers.
* @pin_base: starting pin number of the bank. * @pin_base: starting pin number of the bank.
* @nr_pins: number of pins included in this bank. * @nr_pins: number of pins included in this bank.
* @eint_func: function to set in CON register to configure pin as EINT.
* @eint_type: type of the external interrupt supported by the bank. * @eint_type: type of the external interrupt supported by the bank.
* @eint_mask: bit mask of pins which support EINT function.
* @name: name to be prefixed for each pin in this pin bank. * @name: name to be prefixed for each pin in this pin bank.
* @of_node: OF node of the bank. * @of_node: OF node of the bank.
* @drvdata: link to controller driver data * @drvdata: link to controller driver data
...@@ -131,7 +133,9 @@ struct samsung_pin_bank { ...@@ -131,7 +133,9 @@ struct samsung_pin_bank {
u32 pctl_offset; u32 pctl_offset;
u32 pin_base; u32 pin_base;
u8 nr_pins; u8 nr_pins;
u8 eint_func;
enum eint_type eint_type; enum eint_type eint_type;
u32 eint_mask;
u32 eint_offset; u32 eint_offset;
char *name; char *name;
struct device_node *of_node; struct device_node *of_node;
...@@ -240,5 +244,6 @@ struct samsung_pmx_func { ...@@ -240,5 +244,6 @@ struct samsung_pmx_func {
/* list of all exported SoC specific data */ /* list of all exported SoC specific data */
extern struct samsung_pin_ctrl exynos4210_pin_ctrl[]; extern struct samsung_pin_ctrl exynos4210_pin_ctrl[];
extern struct samsung_pin_ctrl exynos4x12_pin_ctrl[]; extern struct samsung_pin_ctrl exynos4x12_pin_ctrl[];
extern struct samsung_pin_ctrl s3c64xx_pin_ctrl[];
#endif /* __PINCTRL_SAMSUNG_H */ #endif /* __PINCTRL_SAMSUNG_H */
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