Commit 81c9d563 authored by Saravanan Sekar's avatar Saravanan Sekar Committed by Linus Walleij

pinctrl: actions: Add Actions Semi S700 pinctrl driver

Add pinctrl and gpio driver for Actions Semi S700 SoC. The driver
supports pinctrl, pinmux, pinconf, gpio and interrupt functionalities
through a range of registers common to both gpio driver and pinctrl driver.
Signed-off-by: default avatarParthiban Nallathambi <pn@denx.de>
Signed-off-by: default avatarSaravanan Sekar <sravanhome@gmail.com>
Acked-by: default avatarManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent ba54e300
...@@ -9,6 +9,12 @@ config PINCTRL_OWL ...@@ -9,6 +9,12 @@ config PINCTRL_OWL
help help
Say Y here to enable Actions Semi OWL pinctrl driver Say Y here to enable Actions Semi OWL pinctrl driver
config PINCTRL_S700
bool "Actions Semi S700 pinctrl driver"
depends on PINCTRL_OWL
help
Say Y here to enable Actions Semi S700 pinctrl driver
config PINCTRL_S900 config PINCTRL_S900
bool "Actions Semi S900 pinctrl driver" bool "Actions Semi S900 pinctrl driver"
depends on PINCTRL_OWL depends on PINCTRL_OWL
......
obj-$(CONFIG_PINCTRL_OWL) += pinctrl-owl.o obj-$(CONFIG_PINCTRL_OWL) += pinctrl-owl.o
obj-$(CONFIG_PINCTRL_S700) += pinctrl-s700.o
obj-$(CONFIG_PINCTRL_S900) += pinctrl-s900.o obj-$(CONFIG_PINCTRL_S900) += pinctrl-s900.o
...@@ -739,7 +739,7 @@ static void owl_gpio_irq_mask(struct irq_data *data) ...@@ -739,7 +739,7 @@ static void owl_gpio_irq_mask(struct irq_data *data)
val = readl_relaxed(gpio_base + port->intc_msk); val = readl_relaxed(gpio_base + port->intc_msk);
if (val == 0) if (val == 0)
owl_gpio_update_reg(gpio_base + port->intc_ctl, owl_gpio_update_reg(gpio_base + port->intc_ctl,
OWL_GPIO_CTLR_ENABLE, false); OWL_GPIO_CTLR_ENABLE + port->shared_ctl_offset * 5, false);
raw_spin_unlock_irqrestore(&pctrl->lock, flags); raw_spin_unlock_irqrestore(&pctrl->lock, flags);
} }
...@@ -763,7 +763,8 @@ static void owl_gpio_irq_unmask(struct irq_data *data) ...@@ -763,7 +763,8 @@ static void owl_gpio_irq_unmask(struct irq_data *data)
/* enable port interrupt */ /* enable port interrupt */
value = readl_relaxed(gpio_base + port->intc_ctl); value = readl_relaxed(gpio_base + port->intc_ctl);
value |= BIT(OWL_GPIO_CTLR_ENABLE) | BIT(OWL_GPIO_CTLR_SAMPLE_CLK_24M); value |= ((BIT(OWL_GPIO_CTLR_ENABLE) | BIT(OWL_GPIO_CTLR_SAMPLE_CLK_24M))
<< port->shared_ctl_offset * 5);
writel_relaxed(value, gpio_base + port->intc_ctl); writel_relaxed(value, gpio_base + port->intc_ctl);
/* enable GPIO interrupt */ /* enable GPIO interrupt */
...@@ -801,7 +802,7 @@ static void owl_gpio_irq_ack(struct irq_data *data) ...@@ -801,7 +802,7 @@ static void owl_gpio_irq_ack(struct irq_data *data)
raw_spin_lock_irqsave(&pctrl->lock, flags); raw_spin_lock_irqsave(&pctrl->lock, flags);
owl_gpio_update_reg(gpio_base + port->intc_ctl, owl_gpio_update_reg(gpio_base + port->intc_ctl,
OWL_GPIO_CTLR_PENDING, true); OWL_GPIO_CTLR_PENDING + port->shared_ctl_offset * 5, true);
raw_spin_unlock_irqrestore(&pctrl->lock, flags); raw_spin_unlock_irqrestore(&pctrl->lock, flags);
} }
......
This diff is collapsed.
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