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: Parthiban Nallathambi <pn@denx.de> Signed-off-by: Saravanan Sekar <sravanhome@gmail.com> Acked-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
ba54e3005d
commit
81c9d563cc
|
@ -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
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
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)
|
||||||
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)
|
||||||
|
|
||||||
/* 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)
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue