2012-04-26 23:57:25 +02:00
# ifndef PINCTRL_PINCTRL_NOMADIK_H
# define PINCTRL_PINCTRL_NOMADIK_H
# include <plat/gpio-nomadik.h>
/* Package definitions */
# define PINCTRL_NMK_STN8815 0
# define PINCTRL_NMK_DB8500 1
2012-05-02 22:56:47 +02:00
/**
* struct nmk_function - Nomadik pinctrl mux function
* @ name : The name of the function , exported to pinctrl core .
* @ groups : An array of pin groups that may select this function .
* @ ngroups : The number of entries in @ groups .
*/
struct nmk_function {
const char * name ;
const char * const * groups ;
unsigned ngroups ;
} ;
2012-04-26 23:57:25 +02:00
/**
* struct nmk_pingroup - describes a Nomadik pin group
* @ name : the name of this specific pin group
* @ pins : an array of discrete physical pins used in this group , taken
* from the driver - local pin enumeration space
* @ num_pins : the number of pins in this group array , i . e . the number of
* elements in . pins so we can iterate over that array
* @ altsetting : the altsetting to apply to all pins in this group to
* configure them to be used by a function
*/
struct nmk_pingroup {
const char * name ;
const unsigned int * pins ;
const unsigned npins ;
2012-05-02 22:56:47 +02:00
int altsetting ;
2012-04-26 23:57:25 +02:00
} ;
/**
* struct nmk_pinctrl_soc_data - Nomadik pin controller per - SoC configuration
* @ gpio_ranges : An array of GPIO ranges for this SoC
* @ gpio_num_ranges : The number of GPIO ranges for this SoC
* @ pins : An array describing all pins the pin controller affects .
* All pins which are also GPIOs must be listed first within the
* array , and be numbered identically to the GPIO controller ' s
* numbering .
2012-05-02 22:56:47 +02:00
* @ npins : The number of entries in @ pins .
* @ functions : The functions supported on this SoC .
* @ nfunction : The number of entries in @ functions .
2012-04-26 23:57:25 +02:00
* @ groups : An array describing all pin groups the pin SoC supports .
* @ ngroups : The number of entries in @ groups .
*/
struct nmk_pinctrl_soc_data {
struct pinctrl_gpio_range * gpio_ranges ;
unsigned gpio_num_ranges ;
const struct pinctrl_pin_desc * pins ;
unsigned npins ;
2012-05-02 22:56:47 +02:00
const struct nmk_function * functions ;
unsigned nfunctions ;
2012-04-26 23:57:25 +02:00
const struct nmk_pingroup * groups ;
unsigned ngroups ;
} ;
# ifdef CONFIG_PINCTRL_DB8500
void nmk_pinctrl_db8500_init ( const struct nmk_pinctrl_soc_data * * soc ) ;
# else
static inline void
nmk_pinctrl_db8500_init ( const struct nmk_pinctrl_soc_data * * soc )
{
}
# endif
# endif /* PINCTRL_PINCTRL_NOMADIK_H */