diff options
Diffstat (limited to 'include/linux/platform_data')
| -rw-r--r-- | include/linux/platform_data/at24.h | 2 | ||||
| -rw-r--r-- | include/linux/platform_data/dma-dw.h | 12 | ||||
| -rw-r--r-- | include/linux/platform_data/gpio-dwapb.h | 3 | ||||
| -rw-r--r-- | include/linux/platform_data/gpmc-omap.h | 172 | ||||
| -rw-r--r-- | include/linux/platform_data/invensense_mpu6050.h | 5 | ||||
| -rw-r--r-- | include/linux/platform_data/mailbox-omap.h | 58 | ||||
| -rw-r--r-- | include/linux/platform_data/media/ir-rx51.h | 1 | ||||
| -rw-r--r-- | include/linux/platform_data/mtd-nand-omap2.h | 12 | ||||
| -rw-r--r-- | include/linux/platform_data/pwm_omap_dmtimer.h | 21 | ||||
| -rw-r--r-- | include/linux/platform_data/st_sensors_pdata.h | 2 | 
10 files changed, 215 insertions, 73 deletions
| diff --git a/include/linux/platform_data/at24.h b/include/linux/platform_data/at24.h index dc9a13e5acda..be830b141d83 100644 --- a/include/linux/platform_data/at24.h +++ b/include/linux/platform_data/at24.h @@ -26,7 +26,7 @@   *   * An example in pseudo code for a setup() callback:   * - * void get_mac_addr(struct mvmem_device *nvmem, void *context) + * void get_mac_addr(struct nvmem_device *nvmem, void *context)   * {   *	u8 *mac_addr = ethernet_pdata->mac_addr;   *	off_t offset = context; diff --git a/include/linux/platform_data/dma-dw.h b/include/linux/platform_data/dma-dw.h index 03b6095d3b18..d15d8ba8cc24 100644 --- a/include/linux/platform_data/dma-dw.h +++ b/include/linux/platform_data/dma-dw.h @@ -21,15 +21,15 @@   * @dma_dev:	required DMA master device   * @src_id:	src request line   * @dst_id:	dst request line - * @src_master: src master for transfers on allocated channel. - * @dst_master: dest master for transfers on allocated channel. + * @m_master:	memory master for transfers on allocated channel + * @p_master:	peripheral master for transfers on allocated channel   */  struct dw_dma_slave {  	struct device		*dma_dev;  	u8			src_id;  	u8			dst_id; -	u8			src_master; -	u8			dst_master; +	u8			m_master; +	u8			p_master;  };  /** @@ -43,7 +43,7 @@ struct dw_dma_slave {   * @block_size: Maximum block size supported by the controller   * @nr_masters: Number of AHB masters supported by the controller   * @data_width: Maximum data width supported by hardware per AHB master - *		(0 - 8bits, 1 - 16bits, ..., 5 - 256bits) + *		(in bytes, power of 2)   */  struct dw_dma_platform_data {  	unsigned int	nr_channels; @@ -55,7 +55,7 @@ struct dw_dma_platform_data {  #define CHAN_PRIORITY_ASCENDING		0	/* chan0 highest */  #define CHAN_PRIORITY_DESCENDING	1	/* chan7 highest */  	unsigned char	chan_priority; -	unsigned short	block_size; +	unsigned int	block_size;  	unsigned char	nr_masters;  	unsigned char	data_width[DW_DMA_MAX_NR_MASTERS];  }; diff --git a/include/linux/platform_data/gpio-dwapb.h b/include/linux/platform_data/gpio-dwapb.h index 28702c849af1..2dc7f4a8ab09 100644 --- a/include/linux/platform_data/gpio-dwapb.h +++ b/include/linux/platform_data/gpio-dwapb.h @@ -15,8 +15,7 @@  #define GPIO_DW_APB_H  struct dwapb_port_property { -	struct device_node *node; -	const char	*name; +	struct fwnode_handle *fwnode;  	unsigned int	idx;  	unsigned int	ngpio;  	unsigned int	gpio_base; diff --git a/include/linux/platform_data/gpmc-omap.h b/include/linux/platform_data/gpmc-omap.h new file mode 100644 index 000000000000..67ccdb0e1606 --- /dev/null +++ b/include/linux/platform_data/gpmc-omap.h @@ -0,0 +1,172 @@ +/* + * OMAP GPMC Platform data + * + * Copyright (C) 2014 Texas Instruments, Inc. - http://www.ti.com + *	Roger Quadros <[email protected]> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + */ + +#ifndef _GPMC_OMAP_H_ +#define _GPMC_OMAP_H_ + +/* Maximum Number of Chip Selects */ +#define GPMC_CS_NUM		8 + +/* bool type time settings */ +struct gpmc_bool_timings { +	bool cycle2cyclediffcsen; +	bool cycle2cyclesamecsen; +	bool we_extra_delay; +	bool oe_extra_delay; +	bool adv_extra_delay; +	bool cs_extra_delay; +	bool time_para_granularity; +}; + +/* + * Note that all values in this struct are in nanoseconds except sync_clk + * (which is in picoseconds), while the register values are in gpmc_fck cycles. + */ +struct gpmc_timings { +	/* Minimum clock period for synchronous mode (in picoseconds) */ +	u32 sync_clk; + +	/* Chip-select signal timings corresponding to GPMC_CS_CONFIG2 */ +	u32 cs_on;		/* Assertion time */ +	u32 cs_rd_off;		/* Read deassertion time */ +	u32 cs_wr_off;		/* Write deassertion time */ + +	/* ADV signal timings corresponding to GPMC_CONFIG3 */ +	u32 adv_on;		/* Assertion time */ +	u32 adv_rd_off;		/* Read deassertion time */ +	u32 adv_wr_off;		/* Write deassertion time */ +	u32 adv_aad_mux_on;	/* ADV assertion time for AAD */ +	u32 adv_aad_mux_rd_off;	/* ADV read deassertion time for AAD */ +	u32 adv_aad_mux_wr_off;	/* ADV write deassertion time for AAD */ + +	/* WE signals timings corresponding to GPMC_CONFIG4 */ +	u32 we_on;		/* WE assertion time */ +	u32 we_off;		/* WE deassertion time */ + +	/* OE signals timings corresponding to GPMC_CONFIG4 */ +	u32 oe_on;		/* OE assertion time */ +	u32 oe_off;		/* OE deassertion time */ +	u32 oe_aad_mux_on;	/* OE assertion time for AAD */ +	u32 oe_aad_mux_off;	/* OE deassertion time for AAD */ + +	/* Access time and cycle time timings corresponding to GPMC_CONFIG5 */ +	u32 page_burst_access;	/* Multiple access word delay */ +	u32 access;		/* Start-cycle to first data valid delay */ +	u32 rd_cycle;		/* Total read cycle time */ +	u32 wr_cycle;		/* Total write cycle time */ + +	u32 bus_turnaround; +	u32 cycle2cycle_delay; + +	u32 wait_monitoring; +	u32 clk_activation; + +	/* The following are only on OMAP3430 */ +	u32 wr_access;		/* WRACCESSTIME */ +	u32 wr_data_mux_bus;	/* WRDATAONADMUXBUS */ + +	struct gpmc_bool_timings bool_timings; +}; + +/* Device timings in picoseconds */ +struct gpmc_device_timings { +	u32 t_ceasu;	/* address setup to CS valid */ +	u32 t_avdasu;	/* address setup to ADV valid */ +	/* XXX: try to combine t_avdp_r & t_avdp_w. Issue is +	 * of tusb using these timings even for sync whilst +	 * ideally for adv_rd/(wr)_off it should have considered +	 * t_avdh instead. This indirectly necessitates r/w +	 * variations of t_avdp as it is possible to have one +	 * sync & other async +	 */ +	u32 t_avdp_r;	/* ADV low time (what about t_cer ?) */ +	u32 t_avdp_w; +	u32 t_aavdh;	/* address hold time */ +	u32 t_oeasu;	/* address setup to OE valid */ +	u32 t_aa;	/* access time from ADV assertion */ +	u32 t_iaa;	/* initial access time */ +	u32 t_oe;	/* access time from OE assertion */ +	u32 t_ce;	/* access time from CS asertion */ +	u32 t_rd_cycle;	/* read cycle time */ +	u32 t_cez_r;	/* read CS deassertion to high Z */ +	u32 t_cez_w;	/* write CS deassertion to high Z */ +	u32 t_oez;	/* OE deassertion to high Z */ +	u32 t_weasu;	/* address setup to WE valid */ +	u32 t_wpl;	/* write assertion time */ +	u32 t_wph;	/* write deassertion time */ +	u32 t_wr_cycle;	/* write cycle time */ + +	u32 clk; +	u32 t_bacc;	/* burst access valid clock to output delay */ +	u32 t_ces;	/* CS setup time to clk */ +	u32 t_avds;	/* ADV setup time to clk */ +	u32 t_avdh;	/* ADV hold time from clk */ +	u32 t_ach;	/* address hold time from clk */ +	u32 t_rdyo;	/* clk to ready valid */ + +	u32 t_ce_rdyz;	/* XXX: description ?, or use t_cez instead */ +	u32 t_ce_avd;	/* CS on to ADV on delay */ + +	/* XXX: check the possibility of combining +	 * cyc_aavhd_oe & cyc_aavdh_we +	 */ +	u8 cyc_aavdh_oe;/* read address hold time in cycles */ +	u8 cyc_aavdh_we;/* write address hold time in cycles */ +	u8 cyc_oe;	/* access time from OE assertion in cycles */ +	u8 cyc_wpl;	/* write deassertion time in cycles */ +	u32 cyc_iaa;	/* initial access time in cycles */ + +	/* extra delays */ +	bool ce_xdelay; +	bool avd_xdelay; +	bool oe_xdelay; +	bool we_xdelay; +}; + +#define GPMC_BURST_4			4	/* 4 word burst */ +#define GPMC_BURST_8			8	/* 8 word burst */ +#define GPMC_BURST_16			16	/* 16 word burst */ +#define GPMC_DEVWIDTH_8BIT		1	/* 8-bit device width */ +#define GPMC_DEVWIDTH_16BIT		2	/* 16-bit device width */ +#define GPMC_MUX_AAD			1	/* Addr-Addr-Data multiplex */ +#define GPMC_MUX_AD			2	/* Addr-Data multiplex */ + +struct gpmc_settings { +	bool burst_wrap;	/* enables wrap bursting */ +	bool burst_read;	/* enables read page/burst mode */ +	bool burst_write;	/* enables write page/burst mode */ +	bool device_nand;	/* device is NAND */ +	bool sync_read;		/* enables synchronous reads */ +	bool sync_write;	/* enables synchronous writes */ +	bool wait_on_read;	/* monitor wait on reads */ +	bool wait_on_write;	/* monitor wait on writes */ +	u32 burst_len;		/* page/burst length */ +	u32 device_width;	/* device bus width (8 or 16 bit) */ +	u32 mux_add_data;	/* multiplex address & data */ +	u32 wait_pin;		/* wait-pin to be used */ +}; + +/* Data for each chip select */ +struct gpmc_omap_cs_data { +	bool valid;			/* data is valid */ +	bool is_nand;			/* device within this CS is NAND */ +	struct gpmc_settings *settings; +	struct gpmc_device_timings *device_timings; +	struct gpmc_timings *gpmc_timings; +	struct platform_device *pdev;	/* device within this CS region */ +	unsigned int pdata_size; +}; + +struct gpmc_omap_platform_data { +	struct gpmc_omap_cs_data cs[GPMC_CS_NUM]; +}; + +#endif /* _GPMC_OMAP_H */ diff --git a/include/linux/platform_data/invensense_mpu6050.h b/include/linux/platform_data/invensense_mpu6050.h index ad3aa7b95f35..554b59801aa8 100644 --- a/include/linux/platform_data/invensense_mpu6050.h +++ b/include/linux/platform_data/invensense_mpu6050.h @@ -16,13 +16,16 @@  /**   * struct inv_mpu6050_platform_data - Platform data for the mpu driver - * @orientation:	Orientation matrix of the chip + * @orientation:	Orientation matrix of the chip (deprecated in favor of + *			mounting matrix retrieved from device-tree)   *   * Contains platform specific information on how to configure the MPU6050 to   * work on this platform.  The orientation matricies are 3x3 rotation matricies   * that are applied to the data to rotate from the mounting orientation to the   * platform orientation.  The values must be one of 0, 1, or -1 and each row and   * column should have exactly 1 non-zero value. + * + * Deprecated in favor of mounting matrix retrieved from device-tree.   */  struct inv_mpu6050_platform_data {  	__s8 orientation[9]; diff --git a/include/linux/platform_data/mailbox-omap.h b/include/linux/platform_data/mailbox-omap.h deleted file mode 100644 index 4631dbb4255e..000000000000 --- a/include/linux/platform_data/mailbox-omap.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * mailbox-omap.h - * - * Copyright (C) 2013 Texas Instruments, Inc. - * - * 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. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - */ - -#ifndef _PLAT_MAILBOX_H -#define _PLAT_MAILBOX_H - -/* Interrupt register configuration types */ -#define MBOX_INTR_CFG_TYPE1	(0) -#define MBOX_INTR_CFG_TYPE2	(1) - -/** - * struct omap_mbox_dev_info - OMAP mailbox device attribute info - * @name:	name of the mailbox device - * @tx_id:	mailbox queue id used for transmitting messages - * @rx_id:	mailbox queue id on which messages are received - * @irq_id:	irq identifier number to use from the hwmod data - * @usr_id:	mailbox user id for identifying the interrupt into - *			the MPU interrupt controller. - */ -struct omap_mbox_dev_info { -	const char *name; -	u32 tx_id; -	u32 rx_id; -	u32 irq_id; -	u32 usr_id; -}; - -/** - * struct omap_mbox_pdata - OMAP mailbox platform data - * @intr_type:	type of interrupt configuration registers used -			while programming mailbox queue interrupts - * @num_users:	number of users (processor devices) that the mailbox - *			h/w block can interrupt - * @num_fifos:	number of h/w fifos within the mailbox h/w block - * @info_cnt:	number of mailbox devices for the platform - * @info:	array of mailbox device attributes - */ -struct omap_mbox_pdata { -	u32 intr_type; -	u32 num_users; -	u32 num_fifos; -	u32 info_cnt; -	struct omap_mbox_dev_info *info; -}; - -#endif /* _PLAT_MAILBOX_H */ diff --git a/include/linux/platform_data/media/ir-rx51.h b/include/linux/platform_data/media/ir-rx51.h index 104aa892f31b..3038120ca46e 100644 --- a/include/linux/platform_data/media/ir-rx51.h +++ b/include/linux/platform_data/media/ir-rx51.h @@ -5,6 +5,7 @@ struct lirc_rx51_platform_data {  	int pwm_timer;  	int(*set_max_mpu_wakeup_lat)(struct device *dev, long t); +	struct pwm_omap_dmtimer_pdata *dmtimer;  };  #endif diff --git a/include/linux/platform_data/mtd-nand-omap2.h b/include/linux/platform_data/mtd-nand-omap2.h index 090bbab0130a..17d57a18bac5 100644 --- a/include/linux/platform_data/mtd-nand-omap2.h +++ b/include/linux/platform_data/mtd-nand-omap2.h @@ -45,7 +45,6 @@ enum omap_ecc {  };  struct gpmc_nand_regs { -	void __iomem	*gpmc_status;  	void __iomem	*gpmc_nand_command;  	void __iomem	*gpmc_nand_address;  	void __iomem	*gpmc_nand_data; @@ -64,21 +63,24 @@ struct gpmc_nand_regs {  	void __iomem	*gpmc_bch_result4[GPMC_BCH_NUM_REMAINDER];  	void __iomem	*gpmc_bch_result5[GPMC_BCH_NUM_REMAINDER];  	void __iomem	*gpmc_bch_result6[GPMC_BCH_NUM_REMAINDER]; +	/* Deprecated. Do not use */ +	void __iomem	*gpmc_status;  };  struct omap_nand_platform_data {  	int			cs;  	struct mtd_partition	*parts;  	int			nr_parts; -	bool			dev_ready;  	bool			flash_bbt;  	enum nand_io		xfer_type;  	int			devsize;  	enum omap_ecc           ecc_opt; -	struct gpmc_nand_regs	reg; -	/* for passing the partitions */ -	struct device_node	*of_node;  	struct device_node	*elm_of_node; + +	/* deprecated */ +	struct gpmc_nand_regs	reg; +	struct device_node	*of_node; +	bool			dev_ready;  };  #endif diff --git a/include/linux/platform_data/pwm_omap_dmtimer.h b/include/linux/platform_data/pwm_omap_dmtimer.h index 59384217208f..e7d521e48855 100644 --- a/include/linux/platform_data/pwm_omap_dmtimer.h +++ b/include/linux/platform_data/pwm_omap_dmtimer.h @@ -35,6 +35,16 @@  #ifndef __PWM_OMAP_DMTIMER_PDATA_H  #define __PWM_OMAP_DMTIMER_PDATA_H +/* clock sources */ +#define PWM_OMAP_DMTIMER_SRC_SYS_CLK			0x00 +#define PWM_OMAP_DMTIMER_SRC_32_KHZ			0x01 +#define PWM_OMAP_DMTIMER_SRC_EXT_CLK			0x02 + +/* timer interrupt enable bits */ +#define PWM_OMAP_DMTIMER_INT_CAPTURE			(1 << 2) +#define PWM_OMAP_DMTIMER_INT_OVERFLOW			(1 << 1) +#define PWM_OMAP_DMTIMER_INT_MATCH			(1 << 0) +  /* trigger types */  #define PWM_OMAP_DMTIMER_TRIGGER_NONE			0x00  #define PWM_OMAP_DMTIMER_TRIGGER_OVERFLOW		0x01 @@ -45,15 +55,23 @@ typedef struct omap_dm_timer pwm_omap_dmtimer;  struct pwm_omap_dmtimer_pdata {  	pwm_omap_dmtimer *(*request_by_node)(struct device_node *np); +	pwm_omap_dmtimer *(*request_specific)(int timer_id); +	pwm_omap_dmtimer *(*request)(void); +  	int	(*free)(pwm_omap_dmtimer *timer);  	void	(*enable)(pwm_omap_dmtimer *timer);  	void	(*disable)(pwm_omap_dmtimer *timer); +	int	(*get_irq)(pwm_omap_dmtimer *timer); +	int	(*set_int_enable)(pwm_omap_dmtimer *timer, unsigned int value); +	int	(*set_int_disable)(pwm_omap_dmtimer *timer, u32 mask); +  	struct clk *(*get_fclk)(pwm_omap_dmtimer *timer);  	int	(*start)(pwm_omap_dmtimer *timer);  	int	(*stop)(pwm_omap_dmtimer *timer); +	int	(*set_source)(pwm_omap_dmtimer *timer, int source);  	int	(*set_load)(pwm_omap_dmtimer *timer, int autoreload,  			unsigned int value); @@ -63,7 +81,10 @@ struct pwm_omap_dmtimer_pdata {  			int toggle, int trigger);  	int	(*set_prescaler)(pwm_omap_dmtimer *timer, int prescaler); +	unsigned int (*read_counter)(pwm_omap_dmtimer *timer);  	int	(*write_counter)(pwm_omap_dmtimer *timer, unsigned int value); +	unsigned int (*read_status)(pwm_omap_dmtimer *timer); +	int	(*write_status)(pwm_omap_dmtimer *timer, unsigned int value);  };  #endif /* __PWM_OMAP_DMTIMER_PDATA_H */ diff --git a/include/linux/platform_data/st_sensors_pdata.h b/include/linux/platform_data/st_sensors_pdata.h index 753839187ba0..79b0e4cdb814 100644 --- a/include/linux/platform_data/st_sensors_pdata.h +++ b/include/linux/platform_data/st_sensors_pdata.h @@ -16,9 +16,11 @@   * @drdy_int_pin: Redirect DRDY on pin 1 (1) or pin 2 (2).   *	Available only for accelerometer and pressure sensors.   *	Accelerometer DRDY on LSM330 available only on pin 1 (see datasheet). + * @open_drain: set the interrupt line to be open drain if possible.   */  struct st_sensors_platform_data {  	u8 drdy_int_pin; +	bool open_drain;  };  #endif /* ST_SENSORS_PDATA_H */ |