diff options
Diffstat (limited to 'include/linux/platform_data')
| -rw-r--r-- | include/linux/platform_data/atmel.h | 73 | ||||
| -rw-r--r-- | include/linux/platform_data/gpio-omap.h | 1 | ||||
| -rw-r--r-- | include/linux/platform_data/iommu-omap.h | 49 | ||||
| -rw-r--r-- | include/linux/platform_data/leds-omap.h | 22 | ||||
| -rw-r--r-- | include/linux/platform_data/mmc-omap.h | 151 | ||||
| -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/usb-omap.h | 80 | 
8 files changed, 413 insertions, 37 deletions
diff --git a/include/linux/platform_data/atmel.h b/include/linux/platform_data/atmel.h index b0f2c56a8ea..6a293b7fff3 100644 --- a/include/linux/platform_data/atmel.h +++ b/include/linux/platform_data/atmel.h @@ -8,6 +8,55 @@  #define __ATMEL_H__  #include <linux/mtd/nand.h> +#include <linux/mtd/partitions.h> +#include <linux/device.h> +#include <linux/i2c.h> +#include <linux/leds.h> +#include <linux/spi/spi.h> +#include <linux/usb/atmel_usba_udc.h> +#include <linux/atmel-mci.h> +#include <sound/atmel-ac97c.h> +#include <linux/serial.h> +#include <linux/platform_data/macb.h> + +/* + * at91: 6 USARTs and one DBGU port (SAM9260) + * avr32: 4 + */ +#define ATMEL_MAX_UART	7 + + /* USB Device */ +struct at91_udc_data { +	int	vbus_pin;		/* high == host powering us */ +	u8	vbus_active_low;	/* vbus polarity */ +	u8	vbus_polled;		/* Use polling, not interrupt */ +	int	pullup_pin;		/* active == D+ pulled up */ +	u8	pullup_active_low;	/* true == pullup_pin is active low */ +}; + + /* Compact Flash */ +struct at91_cf_data { +	int	irq_pin;		/* I/O IRQ */ +	int	det_pin;		/* Card detect */ +	int	vcc_pin;		/* power switching */ +	int	rst_pin;		/* card reset */ +	u8	chipselect;		/* EBI Chip Select number */ +	u8	flags; +#define AT91_CF_TRUE_IDE	0x01 +#define AT91_IDE_SWAP_A0_A2	0x02 +}; + + /* USB Host */ +#define AT91_MAX_USBH_PORTS	3 +struct at91_usbh_data { +	int		vbus_pin[AT91_MAX_USBH_PORTS];	/* port power-control pin */ +	int             overcurrent_pin[AT91_MAX_USBH_PORTS]; +	u8		ports;				/* number of ports on root hub */ +	u8              overcurrent_supported; +	u8              vbus_pin_active_low[AT91_MAX_USBH_PORTS]; +	u8              overcurrent_status[AT91_MAX_USBH_PORTS]; +	u8              overcurrent_changed[AT91_MAX_USBH_PORTS]; +};   /* NAND / SmartMedia */  struct atmel_nand_data { @@ -24,4 +73,28 @@ struct atmel_nand_data {  	unsigned int	num_parts;  }; + /* Serial */ +struct atmel_uart_data { +	int			num;		/* port num */ +	short			use_dma_tx;	/* use transmit DMA? */ +	short			use_dma_rx;	/* use receive DMA? */ +	void __iomem		*regs;		/* virt. base address, if any */ +	struct serial_rs485	rs485;		/* rs485 settings */ +}; + + /* Touchscreen Controller */ +struct at91_tsadcc_data { +	unsigned int    adc_clock; +	u8		pendet_debounce; +	u8		ts_sample_hold_time; +}; + +/* CAN */ +struct at91_can_data { +	void (*transceiver_switch)(int on); +}; + +/* FIXME: this needs a better location, but gets stuff building again */ +extern int at91_suspend_entering_slow_clock(void); +  #endif /* __ATMEL_H__ */ 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/iommu-omap.h b/include/linux/platform_data/iommu-omap.h new file mode 100644 index 00000000000..c677b9f2fef --- /dev/null +++ b/include/linux/platform_data/iommu-omap.h @@ -0,0 +1,49 @@ +/* + * omap iommu: main structures + * + * Copyright (C) 2008-2009 Nokia Corporation + * + * Written by Hiroshi DOYU <Hiroshi.DOYU@nokia.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. + */ + +#define MMU_REG_SIZE		256 + +/** + * struct iommu_arch_data - omap iommu private data + * @name: name of the iommu device + * @iommu_dev: handle of the iommu device + * + * This is an omap iommu private data object, which binds an iommu user + * to its iommu device. This object should be placed at the iommu user's + * dev_archdata so generic IOMMU API can be used without having to + * utilize omap-specific plumbing anymore. + */ +struct omap_iommu_arch_data { +	const char *name; +	struct omap_iommu *iommu_dev; +}; + +/** + * struct omap_mmu_dev_attr - OMAP mmu device attributes for omap_hwmod + * @da_start:		device address where the va space starts. + * @da_end:		device address where the va space ends. + * @nr_tlb_entries:	number of entries supported by the translation + *			look-aside buffer (TLB). + */ +struct omap_mmu_dev_attr { +	u32 da_start; +	u32 da_end; +	int nr_tlb_entries; +}; + +struct iommu_platform_data { +	const char *name; +	const char *clk_name; +	const int nr_tlb_entries; +	u32 da_start; +	u32 da_end; +}; 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..2bf1b30cb5d --- /dev/null +++ b/include/linux/platform_data/mmc-omap.h @@ -0,0 +1,151 @@ +/* + * 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 HSMMC_HAS_HSPE_SUPPORT	(1 << 2) +#define MMC_OMAP7XX		(1 << 3) +#define MMC_OMAP15XX		(1 << 4) +#define MMC_OMAP16XX		(1 << 5) +		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/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 +};  |