diff options
author | Geert Uytterhoeven <geert+renesas@glider.be> | 2016-06-10 11:02:55 +0200 |
---|---|---|
committer | Geert Uytterhoeven <geert+renesas@glider.be> | 2016-06-21 09:24:55 +0200 |
commit | 07d36d29088356e0fc7ec2c0bad51bb4789e0c26 (patch) | |
tree | 1e48e6de733aca11dc55388671e82e3e57a9f7c7 /drivers/pinctrl/sh-pfc/sh_pfc.h | |
parent | pinctrl: sh-pfc: Move SoC-specific forward declarations to sh_pfc.h (diff) | |
download | linux-07d36d29088356e0fc7ec2c0bad51bb4789e0c26.tar.xz linux-07d36d29088356e0fc7ec2c0bad51bb4789e0c26.zip |
pinctrl: sh-pfc: Improve core and user API separation
The Renesas Pin Function Controller uses two header files:
- sh_pfc.h, for use by both core code and SoC-specific drivers,
- core.h, for internal use by the core code only.
Several SoC-specific drivers include core.h, as they need the sh_pfc
structure, which is passed explicitly to the various SoC-specific
callbacks, and used there.
Hence move its definition from core.h to sh_pfc.h, and remove the
inclusion of core.h from all SoC-specific files.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl/sh-pfc/sh_pfc.h')
-rw-r--r-- | drivers/pinctrl/sh-pfc/sh_pfc.h | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/drivers/pinctrl/sh-pfc/sh_pfc.h b/drivers/pinctrl/sh-pfc/sh_pfc.h index 332d379b302c..5732752667e2 100644 --- a/drivers/pinctrl/sh-pfc/sh_pfc.h +++ b/drivers/pinctrl/sh-pfc/sh_pfc.h @@ -13,6 +13,7 @@ #include <linux/bug.h> #include <linux/pinctrl/pinconf-generic.h> +#include <linux/spinlock.h> #include <linux/stringify.h> enum { @@ -182,7 +183,34 @@ struct pinmux_range { u16 force; }; -struct sh_pfc; +struct sh_pfc_window { + phys_addr_t phys; + void __iomem *virt; + unsigned long size; +}; + +struct sh_pfc_pin_range; + +struct sh_pfc { + struct device *dev; + const struct sh_pfc_soc_info *info; + spinlock_t lock; + + unsigned int num_windows; + struct sh_pfc_window *windows; + unsigned int num_irqs; + unsigned int *irqs; + + struct sh_pfc_pin_range *ranges; + unsigned int nr_ranges; + + unsigned int nr_gpio_pins; + + struct sh_pfc_chip *gpio; +#ifdef CONFIG_SUPERH + struct sh_pfc_chip *func; +#endif +}; struct sh_pfc_soc_operations { int (*init)(struct sh_pfc *pfc); |