diff options
-rw-r--r-- | drivers/sh/pfc/core.c | 2 | ||||
-rw-r--r-- | drivers/sh/pfc/core.h | 44 | ||||
-rw-r--r-- | drivers/sh/pfc/gpio.c | 2 | ||||
-rw-r--r-- | drivers/sh/pfc/pinctrl.c | 2 | ||||
-rw-r--r-- | include/linux/sh_pfc.h | 29 |
5 files changed, 50 insertions, 29 deletions
diff --git a/drivers/sh/pfc/core.c b/drivers/sh/pfc/core.c index ecbe51d9f563..72421a4a883d 100644 --- a/drivers/sh/pfc/core.c +++ b/drivers/sh/pfc/core.c @@ -21,6 +21,8 @@ #include <linux/ioport.h> #include <linux/pinctrl/machine.h> +#include "core.h" + static struct sh_pfc sh_pfc __read_mostly; static void pfc_iounmap(struct sh_pfc *pfc) diff --git a/drivers/sh/pfc/core.h b/drivers/sh/pfc/core.h new file mode 100644 index 000000000000..b07ae259c0eb --- /dev/null +++ b/drivers/sh/pfc/core.h @@ -0,0 +1,44 @@ +/* + * SuperH Pin Function Controller support. + * + * Copyright (C) 2012 Renesas Solutions Corp. + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive + * for more details. + */ +#ifndef __SH_PFC_CORE_H__ +#define __SH_PFC_CORE_H__ + +#include <linux/compiler.h> +#include <linux/sh_pfc.h> +#include <linux/types.h> + +struct pfc_window { + phys_addr_t phys; + void __iomem *virt; + unsigned long size; +}; + +struct sh_pfc { + struct sh_pfc_platform_data *pdata; + spinlock_t lock; + + struct pfc_window *window; +}; + +int sh_pfc_register_gpiochip(struct sh_pfc *pfc); + +int sh_pfc_register_pinctrl(struct sh_pfc *pfc); + +int sh_pfc_read_bit(struct pinmux_data_reg *dr, unsigned long in_pos); +void sh_pfc_write_bit(struct pinmux_data_reg *dr, unsigned long in_pos, + unsigned long value); +int sh_pfc_get_data_reg(struct sh_pfc *pfc, unsigned gpio, + struct pinmux_data_reg **drp, int *bitp); +int sh_pfc_gpio_to_enum(struct sh_pfc *pfc, unsigned gpio, int pos, + pinmux_enum_t *enum_idp); +int sh_pfc_config_gpio(struct sh_pfc *pfc, unsigned gpio, int pinmux_type, + int cfg_mode); + +#endif /* __SH_PFC_CORE_H__ */ diff --git a/drivers/sh/pfc/gpio.c b/drivers/sh/pfc/gpio.c index 7597a024fac8..565b366c909f 100644 --- a/drivers/sh/pfc/gpio.c +++ b/drivers/sh/pfc/gpio.c @@ -19,6 +19,8 @@ #include <linux/pinctrl/consumer.h> #include <linux/sh_pfc.h> +#include "core.h" + struct sh_pfc_chip { struct sh_pfc *pfc; struct gpio_chip gpio_chip; diff --git a/drivers/sh/pfc/pinctrl.c b/drivers/sh/pfc/pinctrl.c index 3a2c77d3248f..5801a5686148 100644 --- a/drivers/sh/pfc/pinctrl.c +++ b/drivers/sh/pfc/pinctrl.c @@ -24,6 +24,8 @@ #include <linux/pinctrl/pinmux.h> #include <linux/pinctrl/pinconf-generic.h> +#include "core.h" + struct sh_pfc_pinctrl { struct pinctrl_dev *pctl; struct sh_pfc *pfc; diff --git a/include/linux/sh_pfc.h b/include/linux/sh_pfc.h index 58587f94d67a..f7f01b231b66 100644 --- a/include/linux/sh_pfc.h +++ b/include/linux/sh_pfc.h @@ -88,12 +88,6 @@ struct pinmux_range { pinmux_enum_t force; }; -struct pfc_window { - phys_addr_t phys; - void __iomem *virt; - unsigned long size; -}; - struct sh_pfc_platform_data { char *name; pinmux_enum_t reserved_id; @@ -123,35 +117,12 @@ struct sh_pfc_platform_data { unsigned long unlock_reg; }; -struct sh_pfc { - struct sh_pfc_platform_data *pdata; - spinlock_t lock; - - struct pfc_window *window; -}; - /* XXX compat for now */ #define pinmux_info sh_pfc_platform_data -/* drivers/sh/pfc/gpio.c */ -int sh_pfc_register_gpiochip(struct sh_pfc *pfc); - -/* drivers/sh/pfc/pinctrl.c */ -int sh_pfc_register_pinctrl(struct sh_pfc *pfc); - /* drivers/sh/pfc/core.c */ int register_sh_pfc(struct sh_pfc_platform_data *pfc); -int sh_pfc_read_bit(struct pinmux_data_reg *dr, unsigned long in_pos); -void sh_pfc_write_bit(struct pinmux_data_reg *dr, unsigned long in_pos, - unsigned long value); -int sh_pfc_get_data_reg(struct sh_pfc *pfc, unsigned gpio, - struct pinmux_data_reg **drp, int *bitp); -int sh_pfc_gpio_to_enum(struct sh_pfc *pfc, unsigned gpio, int pos, - pinmux_enum_t *enum_idp); -int sh_pfc_config_gpio(struct sh_pfc *pfc, unsigned gpio, int pinmux_type, - int cfg_mode); - /* xxx */ static inline int register_pinmux(struct pinmux_info *pip) { |