diff options
Diffstat (limited to 'include/linux/platform_data')
| -rw-r--r-- | include/linux/platform_data/asoc-imx-ssi.h | 2 | ||||
| -rw-r--r-- | include/linux/platform_data/dma-imx.h | 4 | ||||
| -rw-r--r-- | include/linux/platform_data/gpio-omap.h | 1 | ||||
| -rw-r--r-- | include/linux/platform_data/leds-omap.h | 22 | ||||
| -rw-r--r-- | include/linux/platform_data/mmc-omap.h | 150 | ||||
| -rw-r--r-- | include/linux/platform_data/mtd-nand-omap2.h | 46 | ||||
| -rw-r--r-- | include/linux/platform_data/mtd-onenand-omap2.h | 28 | ||||
| -rw-r--r-- | include/linux/platform_data/omap-wd-timer.h | 38 | ||||
| -rw-r--r-- | include/linux/platform_data/usb-omap.h | 80 | 
9 files changed, 333 insertions, 38 deletions
diff --git a/include/linux/platform_data/asoc-imx-ssi.h b/include/linux/platform_data/asoc-imx-ssi.h index 63f3c280423..92c7fd72f63 100644 --- a/include/linux/platform_data/asoc-imx-ssi.h +++ b/include/linux/platform_data/asoc-imx-ssi.h @@ -17,5 +17,7 @@ struct imx_ssi_platform_data {  	void (*ac97_warm_reset)(struct snd_ac97 *ac97);  }; +extern int mxc_set_irq_fiq(unsigned int irq, unsigned int type); +  #endif /* __MACH_SSI_H */ diff --git a/include/linux/platform_data/dma-imx.h b/include/linux/platform_data/dma-imx.h index 1b9080385b4..f6d30cc1cb7 100644 --- a/include/linux/platform_data/dma-imx.h +++ b/include/linux/platform_data/dma-imx.h @@ -61,7 +61,9 @@ static inline int imx_dma_is_ipu(struct dma_chan *chan)  static inline int imx_dma_is_general_purpose(struct dma_chan *chan)  {  	return strstr(dev_name(chan->device->dev), "sdma") || -		!strcmp(dev_name(chan->device->dev), "imx-dma"); +		!strcmp(dev_name(chan->device->dev), "imx1-dma") || +		!strcmp(dev_name(chan->device->dev), "imx21-dma") || +		!strcmp(dev_name(chan->device->dev), "imx27-dma");  }  #endif diff --git a/include/linux/platform_data/gpio-omap.h b/include/linux/platform_data/gpio-omap.h index e8741c2678d..5d50b25a73d 100644 --- a/include/linux/platform_data/gpio-omap.h +++ b/include/linux/platform_data/gpio-omap.h @@ -26,7 +26,6 @@  #include <linux/io.h>  #include <linux/platform_device.h> -#include <mach/irqs.h>  #define OMAP1_MPUIO_BASE			0xfffb5000 diff --git a/include/linux/platform_data/leds-omap.h b/include/linux/platform_data/leds-omap.h new file mode 100644 index 00000000000..56c9b2a0ada --- /dev/null +++ b/include/linux/platform_data/leds-omap.h @@ -0,0 +1,22 @@ +/* + *  Copyright (C) 2006 Samsung Electronics + *  Kyungmin Park <kyungmin.park@samsung.com> + * + * 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 + * published by the Free Software Foundation. + */ +#ifndef ASMARM_ARCH_LED_H +#define ASMARM_ARCH_LED_H + +struct omap_led_config { +	struct led_classdev	cdev; +	s16			gpio; +}; + +struct omap_led_platform_data { +	s16			nr_leds; +	struct omap_led_config	*leds; +}; + +#endif diff --git a/include/linux/platform_data/mmc-omap.h b/include/linux/platform_data/mmc-omap.h new file mode 100644 index 00000000000..2bf6ea82ff9 --- /dev/null +++ b/include/linux/platform_data/mmc-omap.h @@ -0,0 +1,150 @@ +/* + * MMC definitions for OMAP2 + * + * Copyright (C) 2006 Nokia Corporation + * + * 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 + * published by the Free Software Foundation. + */ + +#define OMAP_MMC_MAX_SLOTS	2 + +/* + * struct omap_mmc_dev_attr.flags possibilities + * + * OMAP_HSMMC_SUPPORTS_DUAL_VOLT: Some HSMMC controller instances can + *    operate with either 1.8Vdc or 3.0Vdc card voltages; this flag + *    should be set if this is the case.  See for example Section 22.5.3 + *    "MMC/SD/SDIO1 Bus Voltage Selection" of the OMAP34xx Multimedia + *    Device Silicon Revision 3.1.x Revision ZR (July 2011) (SWPU223R). + * + * OMAP_HSMMC_BROKEN_MULTIBLOCK_READ: Multiple-block read transfers + *    don't work correctly on some MMC controller instances on some + *    OMAP3 SoCs; this flag should be set if this is the case.  See + *    for example Advisory 2.1.1.128 "MMC: Multiple Block Read + *    Operation Issue" in _OMAP3530/3525/3515/3503 Silicon Errata_ + *    Revision F (October 2010) (SPRZ278F). + */ +#define OMAP_HSMMC_SUPPORTS_DUAL_VOLT		BIT(0) +#define OMAP_HSMMC_BROKEN_MULTIBLOCK_READ	BIT(1) + +struct mmc_card; + +struct omap_mmc_dev_attr { +	u8 flags; +}; + +struct omap_mmc_platform_data { +	/* back-link to device */ +	struct device *dev; + +	/* number of slots per controller */ +	unsigned nr_slots:2; + +	/* set if your board has components or wiring that limits the +	 * maximum frequency on the MMC bus */ +	unsigned int max_freq; + +	/* switch the bus to a new slot */ +	int (*switch_slot)(struct device *dev, int slot); +	/* initialize board-specific MMC functionality, can be NULL if +	 * not supported */ +	int (*init)(struct device *dev); +	void (*cleanup)(struct device *dev); +	void (*shutdown)(struct device *dev); + +	/* To handle board related suspend/resume functionality for MMC */ +	int (*suspend)(struct device *dev, int slot); +	int (*resume)(struct device *dev, int slot); + +	/* Return context loss count due to PM states changing */ +	int (*get_context_loss_count)(struct device *dev); + +	/* Integrating attributes from the omap_hwmod layer */ +	u8 controller_flags; + +	/* Register offset deviation */ +	u16 reg_offset; + +	struct omap_mmc_slot_data { + +		/* +		 * 4/8 wires and any additional host capabilities +		 * need to OR'd all capabilities (ref. linux/mmc/host.h) +		 */ +		u8  wires;	/* Used for the MMC driver on omap1 and 2420 */ +		u32 caps;	/* Used for the MMC driver on 2430 and later */ +		u32 pm_caps;	/* PM capabilities of the mmc */ + +		/* +		 * nomux means "standard" muxing is wrong on this board, and +		 * that board-specific code handled it before common init logic. +		 */ +		unsigned nomux:1; + +		/* switch pin can be for card detect (default) or card cover */ +		unsigned cover:1; + +		/* use the internal clock */ +		unsigned internal_clock:1; + +		/* nonremovable e.g. eMMC */ +		unsigned nonremovable:1; + +		/* Try to sleep or power off when possible */ +		unsigned power_saving:1; + +		/* If using power_saving and the MMC power is not to go off */ +		unsigned no_off:1; + +		/* eMMC does not handle power off when not in sleep state */ +		unsigned no_regulator_off_init:1; + +		/* Regulator off remapped to sleep */ +		unsigned vcc_aux_disable_is_sleep:1; + +		/* we can put the features above into this variable */ +#define HSMMC_HAS_PBIAS		(1 << 0) +#define HSMMC_HAS_UPDATED_RESET	(1 << 1) +#define MMC_OMAP7XX		(1 << 2) +#define MMC_OMAP15XX		(1 << 3) +#define MMC_OMAP16XX		(1 << 4) +		unsigned features; + +		int switch_pin;			/* gpio (card detect) */ +		int gpio_wp;			/* gpio (write protect) */ + +		int (*set_bus_mode)(struct device *dev, int slot, int bus_mode); +		int (*set_power)(struct device *dev, int slot, +				 int power_on, int vdd); +		int (*get_ro)(struct device *dev, int slot); +		void (*remux)(struct device *dev, int slot, int power_on); +		/* Call back before enabling / disabling regulators */ +		void (*before_set_reg)(struct device *dev, int slot, +				       int power_on, int vdd); +		/* Call back after enabling / disabling regulators */ +		void (*after_set_reg)(struct device *dev, int slot, +				      int power_on, int vdd); +		/* if we have special card, init it using this callback */ +		void (*init_card)(struct mmc_card *card); + +		/* return MMC cover switch state, can be NULL if not supported. +		 * +		 * possible return values: +		 *   0 - closed +		 *   1 - open +		 */ +		int (*get_cover_state)(struct device *dev, int slot); + +		const char *name; +		u32 ocr_mask; + +		/* Card detection IRQs */ +		int card_detect_irq; +		int (*card_detect)(struct device *dev, int slot); + +		unsigned int ban_openended:1; + +	} slots[OMAP_MMC_MAX_SLOTS]; +}; diff --git a/include/linux/platform_data/mtd-nand-omap2.h b/include/linux/platform_data/mtd-nand-omap2.h index 1a68c1e5fe5..24d32ca34be 100644 --- a/include/linux/platform_data/mtd-nand-omap2.h +++ b/include/linux/platform_data/mtd-nand-omap2.h @@ -8,9 +8,13 @@   * published by the Free Software Foundation.   */ -#include <plat/gpmc.h> +#ifndef	_MTD_NAND_OMAP2_H +#define	_MTD_NAND_OMAP2_H +  #include <linux/mtd/partitions.h> +#define	GPMC_BCH_NUM_REMAINDER	8 +  enum nand_io {  	NAND_OMAP_PREFETCH_POLLED = 0,	/* prefetch polled mode, default */  	NAND_OMAP_POLLED,		/* polled mode, without prefetch */ @@ -18,10 +22,38 @@ enum nand_io {  	NAND_OMAP_PREFETCH_IRQ		/* prefetch enabled irq mode */  }; +enum omap_ecc { +		/* 1-bit ecc: stored at end of spare area */ +	OMAP_ECC_HAMMING_CODE_DEFAULT = 0, /* Default, s/w method */ +	OMAP_ECC_HAMMING_CODE_HW, /* gpmc to detect the error */ +		/* 1-bit ecc: stored at beginning of spare area as romcode */ +	OMAP_ECC_HAMMING_CODE_HW_ROMCODE, /* gpmc method & romcode layout */ +	OMAP_ECC_BCH4_CODE_HW, /* 4-bit BCH ecc code */ +	OMAP_ECC_BCH8_CODE_HW, /* 8-bit BCH ecc code */ +}; + +struct gpmc_nand_regs { +	void __iomem	*gpmc_status; +	void __iomem	*gpmc_nand_command; +	void __iomem	*gpmc_nand_address; +	void __iomem	*gpmc_nand_data; +	void __iomem	*gpmc_prefetch_config1; +	void __iomem	*gpmc_prefetch_config2; +	void __iomem	*gpmc_prefetch_control; +	void __iomem	*gpmc_prefetch_status; +	void __iomem	*gpmc_ecc_config; +	void __iomem	*gpmc_ecc_control; +	void __iomem	*gpmc_ecc_size_config; +	void __iomem	*gpmc_ecc1_result; +	void __iomem	*gpmc_bch_result0[GPMC_BCH_NUM_REMAINDER]; +	void __iomem	*gpmc_bch_result1[GPMC_BCH_NUM_REMAINDER]; +	void __iomem	*gpmc_bch_result2[GPMC_BCH_NUM_REMAINDER]; +	void __iomem	*gpmc_bch_result3[GPMC_BCH_NUM_REMAINDER]; +}; +  struct omap_nand_platform_data {  	int			cs;  	struct mtd_partition	*parts; -	struct gpmc_timings	*gpmc_t;  	int			nr_parts;  	bool			dev_ready;  	enum nand_io		xfer_type; @@ -30,14 +62,4 @@ struct omap_nand_platform_data {  	struct gpmc_nand_regs	reg;  }; -/* minimum size for IO mapping */ -#define	NAND_IO_SIZE	4 - -#if defined(CONFIG_MTD_NAND_OMAP2) || defined(CONFIG_MTD_NAND_OMAP2_MODULE) -extern int gpmc_nand_init(struct omap_nand_platform_data *d); -#else -static inline int gpmc_nand_init(struct omap_nand_platform_data *d) -{ -	return 0; -}  #endif diff --git a/include/linux/platform_data/mtd-onenand-omap2.h b/include/linux/platform_data/mtd-onenand-omap2.h index 2858667d2e4..685af7e8b12 100644 --- a/include/linux/platform_data/mtd-onenand-omap2.h +++ b/include/linux/platform_data/mtd-onenand-omap2.h @@ -9,17 +9,15 @@   * published by the Free Software Foundation.   */ +#ifndef	__MTD_ONENAND_OMAP2_H +#define	__MTD_ONENAND_OMAP2_H +  #include <linux/mtd/mtd.h>  #include <linux/mtd/partitions.h>  #define ONENAND_SYNC_READ	(1 << 0)  #define ONENAND_SYNC_READWRITE	(1 << 1) - -struct onenand_freq_info { -	u16			maf_id; -	u16			dev_id; -	u16			ver_id; -}; +#define	ONENAND_IN_OMAP34XX	(1 << 2)  struct omap_onenand_platform_data {  	int			cs; @@ -27,27 +25,9 @@ struct omap_onenand_platform_data {  	struct mtd_partition	*parts;  	int			nr_parts;  	int			(*onenand_setup)(void __iomem *, int *freq_ptr); -	int		(*get_freq)(const struct onenand_freq_info *freq_info, -				    bool *clk_dep);  	int			dma_channel;  	u8			flags;  	u8			regulator_can_sleep;  	u8			skip_initial_unlocking;  }; - -#define ONENAND_MAX_PARTITIONS 8 - -#if defined(CONFIG_MTD_ONENAND_OMAP2) || \ -	defined(CONFIG_MTD_ONENAND_OMAP2_MODULE) - -extern void gpmc_onenand_init(struct omap_onenand_platform_data *d); - -#else - -#define board_onenand_data	NULL - -static inline void gpmc_onenand_init(struct omap_onenand_platform_data *d) -{ -} -  #endif diff --git a/include/linux/platform_data/omap-wd-timer.h b/include/linux/platform_data/omap-wd-timer.h new file mode 100644 index 00000000000..d75f5f802d9 --- /dev/null +++ b/include/linux/platform_data/omap-wd-timer.h @@ -0,0 +1,38 @@ +/* + * OMAP2+ WDTIMER-specific function prototypes + * + * Copyright (C) 2012 Texas Instruments, Inc. + * Paul Walmsley + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#ifndef __LINUX_PLATFORM_DATA_OMAP_WD_TIMER_H +#define __LINUX_PLATFORM_DATA_OMAP_WD_TIMER_H + +#include <linux/types.h> + +/* + * Standardized OMAP reset source bits + * + * This is a subset of the ones listed in arch/arm/mach-omap2/prm.h + * and are the only ones needed in the watchdog driver. + */ +#define OMAP_MPU_WD_RST_SRC_ID_SHIFT				3 + +/** + * struct omap_wd_timer_platform_data - WDTIMER integration to the host SoC + * @read_reset_sources - fn ptr for the SoC to indicate the last reset cause + * + * The function pointed to by @read_reset_sources must return its data + * in a standard format - search for RST_SRC_ID_SHIFT in + * arch/arm/mach-omap2 + */ +struct omap_wd_timer_platform_data { +	u32 (*read_reset_sources)(void); +}; + +#endif diff --git a/include/linux/platform_data/usb-omap.h b/include/linux/platform_data/usb-omap.h new file mode 100644 index 00000000000..8570bcfe631 --- /dev/null +++ b/include/linux/platform_data/usb-omap.h @@ -0,0 +1,80 @@ +/* + * usb-omap.h - Platform data for the various OMAP USB IPs + * + * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com + * + * This software is distributed under the terms of the GNU General Public + * License ("GPL") version 2, as published by the Free Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#define OMAP3_HS_USB_PORTS	3 + +enum usbhs_omap_port_mode { +	OMAP_USBHS_PORT_MODE_UNUSED, +	OMAP_EHCI_PORT_MODE_PHY, +	OMAP_EHCI_PORT_MODE_TLL, +	OMAP_EHCI_PORT_MODE_HSIC, +	OMAP_OHCI_PORT_MODE_PHY_6PIN_DATSE0, +	OMAP_OHCI_PORT_MODE_PHY_6PIN_DPDM, +	OMAP_OHCI_PORT_MODE_PHY_3PIN_DATSE0, +	OMAP_OHCI_PORT_MODE_PHY_4PIN_DPDM, +	OMAP_OHCI_PORT_MODE_TLL_6PIN_DATSE0, +	OMAP_OHCI_PORT_MODE_TLL_6PIN_DPDM, +	OMAP_OHCI_PORT_MODE_TLL_3PIN_DATSE0, +	OMAP_OHCI_PORT_MODE_TLL_4PIN_DPDM, +	OMAP_OHCI_PORT_MODE_TLL_2PIN_DATSE0, +	OMAP_OHCI_PORT_MODE_TLL_2PIN_DPDM +}; + +struct usbtll_omap_platform_data { +	enum usbhs_omap_port_mode		port_mode[OMAP3_HS_USB_PORTS]; +}; + +struct ehci_hcd_omap_platform_data { +	enum usbhs_omap_port_mode	port_mode[OMAP3_HS_USB_PORTS]; +	int				reset_gpio_port[OMAP3_HS_USB_PORTS]; +	struct regulator		*regulator[OMAP3_HS_USB_PORTS]; +	unsigned			phy_reset:1; +}; + +struct ohci_hcd_omap_platform_data { +	enum usbhs_omap_port_mode	port_mode[OMAP3_HS_USB_PORTS]; +	unsigned			es2_compatibility:1; +}; + +struct usbhs_omap_platform_data { +	enum usbhs_omap_port_mode		port_mode[OMAP3_HS_USB_PORTS]; + +	struct ehci_hcd_omap_platform_data	*ehci_data; +	struct ohci_hcd_omap_platform_data	*ohci_data; +}; + +/*-------------------------------------------------------------------------*/ + +struct omap_musb_board_data { +	u8	interface_type; +	u8	mode; +	u16	power; +	unsigned extvbus:1; +	void	(*set_phy_power)(u8 on); +	void	(*clear_irq)(void); +	void	(*set_mode)(u8 mode); +	void	(*reset)(void); +}; + +enum musb_interface { +	MUSB_INTERFACE_ULPI, +	MUSB_INTERFACE_UTMI +};  |