2012-12-15 23:50:44 +01:00
/*
* 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>
2013-04-09 14:06:01 +00:00
# include <linux/spinlock.h>
2012-12-15 23:50:44 +01:00
# include <linux/types.h>
2012-12-15 23:51:55 +01:00
# include "sh_pfc.h"
2012-12-15 23:50:53 +01:00
struct sh_pfc_window {
2012-12-15 23:50:44 +01:00
phys_addr_t phys ;
void __iomem * virt ;
unsigned long size ;
} ;
2012-12-15 23:50:46 +01:00
struct sh_pfc_chip ;
2012-12-15 23:50:47 +01:00
struct sh_pfc_pinctrl ;
2012-12-15 23:50:46 +01:00
2013-07-15 18:38:30 +02:00
struct sh_pfc_pin_range {
u16 start ;
u16 end ;
} ;
2012-12-15 23:50:44 +01:00
struct sh_pfc {
2012-12-15 23:50:47 +01:00
struct device * dev ;
2013-02-16 18:47:05 +01:00
const struct sh_pfc_soc_info * info ;
2012-12-15 23:50:44 +01:00
spinlock_t lock ;
2012-12-15 23:50:55 +01:00
unsigned int num_windows ;
2013-12-11 04:26:25 +01:00
struct sh_pfc_window * windows ;
2013-12-11 04:26:26 +01:00
unsigned int num_irqs ;
unsigned int * irqs ;
2012-12-15 23:50:55 +01:00
2013-07-15 18:38:30 +02:00
struct sh_pfc_pin_range * ranges ;
unsigned int nr_ranges ;
2013-07-15 13:48:56 +02:00
unsigned int nr_gpio_pins ;
2013-02-15 01:33:38 +01:00
2012-12-15 23:50:46 +01:00
struct sh_pfc_chip * gpio ;
2015-08-04 15:55:19 +02:00
# ifdef CONFIG_SUPERH
2012-12-06 14:49:25 +01:00
struct sh_pfc_chip * func ;
2015-08-04 15:55:19 +02:00
# endif
2012-12-06 14:49:25 +01:00
2012-12-15 23:50:47 +01:00
struct sh_pfc_pinctrl * pinctrl ;
2012-12-15 23:50:44 +01:00
} ;
int sh_pfc_register_gpiochip ( struct sh_pfc * pfc ) ;
2012-12-15 23:50:46 +01:00
int sh_pfc_unregister_gpiochip ( struct sh_pfc * pfc ) ;
2012-12-15 23:50:44 +01:00
int sh_pfc_register_pinctrl ( struct sh_pfc * pfc ) ;
2012-12-15 23:50:47 +01:00
int sh_pfc_unregister_pinctrl ( struct sh_pfc * pfc ) ;
2012-12-15 23:50:44 +01:00
2015-03-12 11:09:14 +01:00
u32 sh_pfc_read_raw_reg ( void __iomem * mapped_reg , unsigned int reg_width ) ;
void sh_pfc_write_raw_reg ( void __iomem * mapped_reg , unsigned int reg_width ,
2015-02-27 18:38:04 +01:00
u32 data ) ;
2013-02-15 02:04:55 +01:00
2013-03-08 17:43:54 +01:00
int sh_pfc_get_pin_index ( struct sh_pfc * pfc , unsigned int pin ) ;
2013-03-10 15:29:14 +01:00
int sh_pfc_config_mux ( struct sh_pfc * pfc , unsigned mark , int pinmux_type ) ;
2012-12-15 23:50:44 +01:00
2015-01-25 14:49:52 +01:00
extern const struct sh_pfc_soc_info emev2_pinmux_info ;
2013-03-26 22:49:49 +09:00
extern const struct sh_pfc_soc_info r8a73a4_pinmux_info ;
2013-02-16 18:47:05 +01:00
extern const struct sh_pfc_soc_info r8a7740_pinmux_info ;
2013-04-12 05:37:20 +00:00
extern const struct sh_pfc_soc_info r8a7778_pinmux_info ;
2013-02-16 18:47:05 +01:00
extern const struct sh_pfc_soc_info r8a7779_pinmux_info ;
2013-04-08 11:08:53 +09:00
extern const struct sh_pfc_soc_info r8a7790_pinmux_info ;
2013-10-17 06:46:05 +09:00
extern const struct sh_pfc_soc_info r8a7791_pinmux_info ;
2015-05-12 11:13:19 +02:00
extern const struct sh_pfc_soc_info r8a7793_pinmux_info ;
pinctrl: sh-pfc: add R8A7794 PFC support
Add PFC support for the R8A7794 SoC including pin groups for some
on-chip devices such as ETH, I2C, INTC, MSIOF, QSPI, [H]SCIF...
Sergei: squashed together several patches, fixed the MLB_CLK typo,
added IRQ4.. IRQ9 pin groups, fixed IRQn comments, added ETH B pin
group names, removed stray new line and fixed typos in the comments
in the pinmux_config_regs[] initializer, removed the platform device
ID, took into account limited number of signals in the GPIO1/5/6
controllers, added reasonable and removed unreasonable
copyrights, modified the bindings document, renamed, added changelog.
Changes in version 5:
- resolved rejects, refreshed the patch;
- added Laurent Pinchart's ACK.
Changes in version 4:
- reused the PORT_GP_26() macro to #define PORT_GP_28().
Changes in version 3:
- removed the platform device ID;
- added PORT_GP_26() and PORT_GP_28() macros, used them for GPIO1/5/6 in the
CPU_ALL_PORT() macro.
Changes in version 2:
- rebased the patch.
Signed-off-by: Hisashi Nakamura <hisashi.nakamura.ak@renesas.com>
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2015-06-06 01:34:48 +03:00
extern const struct sh_pfc_soc_info r8a7794_pinmux_info ;
2015-09-03 02:51:49 +00:00
extern const struct sh_pfc_soc_info r8a7795_pinmux_info ;
2013-02-16 18:47:05 +01:00
extern const struct sh_pfc_soc_info sh7203_pinmux_info ;
extern const struct sh_pfc_soc_info sh7264_pinmux_info ;
extern const struct sh_pfc_soc_info sh7269_pinmux_info ;
extern const struct sh_pfc_soc_info sh73a0_pinmux_info ;
extern const struct sh_pfc_soc_info sh7720_pinmux_info ;
extern const struct sh_pfc_soc_info sh7722_pinmux_info ;
extern const struct sh_pfc_soc_info sh7723_pinmux_info ;
extern const struct sh_pfc_soc_info sh7724_pinmux_info ;
extern const struct sh_pfc_soc_info sh7734_pinmux_info ;
extern const struct sh_pfc_soc_info sh7757_pinmux_info ;
extern const struct sh_pfc_soc_info sh7785_pinmux_info ;
extern const struct sh_pfc_soc_info sh7786_pinmux_info ;
extern const struct sh_pfc_soc_info shx3_pinmux_info ;
2012-12-15 23:51:21 +01:00
2012-12-15 23:50:44 +01:00
# endif /* __SH_PFC_CORE_H__ */