diff options
Diffstat (limited to 'arch/arm/mach-omap2/mux.h')
| -rw-r--r-- | arch/arm/mach-omap2/mux.h | 70 | 
1 files changed, 58 insertions, 12 deletions
diff --git a/arch/arm/mach-omap2/mux.h b/arch/arm/mach-omap2/mux.h index 350c04f2738..86549bedd52 100644 --- a/arch/arm/mach-omap2/mux.h +++ b/arch/arm/mach-omap2/mux.h @@ -1,6 +1,6 @@  /*   * Copyright (C) 2009 Nokia - * Copyright (C) 2009 Texas Instruments + * Copyright (C) 2009-2010 Texas Instruments   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License version 2 as @@ -56,7 +56,7 @@  #define OMAP_MODE_GPIO(x)	(((x) & OMAP_MUX_MODE7) == OMAP_MUX_MODE4) -/* Flags for omap_mux_init */ +/* Flags for omapX_mux_init */  #define OMAP_PACKAGE_MASK		0xffff  #define OMAP_PACKAGE_CBP		6		/* 515-pin 0.40 0.50 */  #define OMAP_PACKAGE_CUS		5		/* 423-pin 0.65 */ @@ -66,14 +66,47 @@  #define OMAP_PACKAGE_ZAF		1		/* 2420 447-pin SIP */ -#define OMAP_MUX_NR_MODES	8			/* Available modes */ -#define OMAP_MUX_NR_SIDES	2			/* Bottom & top */ +#define OMAP_MUX_NR_MODES		8		/* Available modes */ +#define OMAP_MUX_NR_SIDES		2		/* Bottom & top */ + +/* + * omap_mux_init flags definition: + * + * OMAP_MUX_REG_8BIT: Ensure that access to padconf is done in 8 bits. + * The default value is 16 bits. + * OMAP_MUX_GPIO_IN_MODE3: The GPIO is selected in mode3. + * The default is mode4. + */ +#define OMAP_MUX_REG_8BIT		(1 << 0) +#define OMAP_MUX_GPIO_IN_MODE3		(1 << 1) + +/** + * struct mux_partition - contain partition related information + * @name: name of the current partition + * @flags: flags specific to this partition + * @phys: physical address + * @size: partition size + * @base: virtual address after ioremap + * @muxmodes: list of nodes that belong to a partition + * @node: list node for the partitions linked list + */ +struct omap_mux_partition { +	const char		*name; +	u32			flags; +	u32			phys; +	u32			size; +	void __iomem		*base; +	struct list_head	muxmodes; +	struct list_head	node; +};  /**   * struct omap_mux - data for omap mux register offset and it's value   * @reg_offset:	mux register offset from the mux base   * @gpio:	GPIO number   * @muxnames:	available signal modes for a ball + * @balls:	available balls on the package + * @partition:	mux partition   */  struct omap_mux {  	u16	reg_offset; @@ -151,28 +184,39 @@ u16 omap_mux_get_gpio(int gpio);  void omap_mux_set_gpio(u16 val, int gpio);  /** + * omap_mux_get() - get a mux partition by name + * @name:		Name of the mux partition + * + */ +struct omap_mux_partition *omap_mux_get(const char *name); + +/**   * omap_mux_read() - read mux register + * @partition:		Mux partition   * @mux_offset:		Offset of the mux register   *   */ -u16 omap_mux_read(u16 mux_offset); +u16 omap_mux_read(struct omap_mux_partition *p, u16 mux_offset);  /**   * omap_mux_write() - write mux register + * @partition:		Mux partition   * @val:		New mux register value   * @mux_offset:		Offset of the mux register   *   * This should be only needed for dynamic remuxing of non-gpio signals.   */ -void omap_mux_write(u16 val, u16 mux_offset); +void omap_mux_write(struct omap_mux_partition *p, u16 val, u16 mux_offset);  /**   * omap_mux_write_array() - write an array of mux registers + * @partition:		Mux partition   * @board_mux:		Array of mux registers terminated by MAP_MUX_TERMINATOR   *   * This should be only needed for dynamic remuxing of non-gpio signals.   */ -void omap_mux_write_array(struct omap_board_mux *board_mux); +void omap_mux_write_array(struct omap_mux_partition *p, +			  struct omap_board_mux *board_mux);  /**   * omap2420_mux_init() - initialize mux system with board specific set @@ -198,8 +242,10 @@ int omap3_mux_init(struct omap_board_mux *board_mux, int flags);  /**   * omap_mux_init - private mux init function, do not call   */ -int omap_mux_init(u32 mux_pbase, u32 mux_size, -				struct omap_mux *superset, -				struct omap_mux *package_subset, -				struct omap_board_mux *board_mux, -				struct omap_ball *package_balls); +int omap_mux_init(const char *name, u32 flags, +		  u32 mux_pbase, u32 mux_size, +		  struct omap_mux *superset, +		  struct omap_mux *package_subset, +		  struct omap_board_mux *board_mux, +		  struct omap_ball *package_balls); +  |