| 
									
										
										
										
											2010-02-01 09:51:02 -05:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Copyright 2009 Texas Instruments. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 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. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 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. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  |  * along with this program; if not, write to the Free Software | 
					
						
							|  |  |  |  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef __ARCH_ARM_DAVINCI_SPI_H
 | 
					
						
							|  |  |  | #define __ARCH_ARM_DAVINCI_SPI_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-08 07:59:55 -05:00
										 |  |  | #include <mach/edma.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-13 10:57:44 +05:30
										 |  |  | #define SPI_INTERN_CS	0xFF
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-01 09:51:02 -05:00
										 |  |  | enum { | 
					
						
							|  |  |  | 	SPI_VERSION_1, /* For DM355/DM365/DM6467 */ | 
					
						
							|  |  |  | 	SPI_VERSION_2, /* For DA8xx */ | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 18:32:40 +05:30
										 |  |  | /**
 | 
					
						
							|  |  |  |  * davinci_spi_platform_data - Platform data for SPI master device on DaVinci | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @version:	version of the SPI IP. Different DaVinci devices have slightly | 
					
						
							|  |  |  |  *		varying versions of the same IP. | 
					
						
							|  |  |  |  * @num_chipselect: number of chipselects supported by this SPI master | 
					
						
							|  |  |  |  * @intr_line:	interrupt line used to connect the SPI IP to the ARM interrupt | 
					
						
							|  |  |  |  *		controller withn the SoC. Possible values are 0 and 1. | 
					
						
							|  |  |  |  * @chip_sel:	list of GPIOs which can act as chip-selects for the SPI. | 
					
						
							|  |  |  |  *		SPI_INTERN_CS denotes internal SPI chip-select. Not necessary | 
					
						
							|  |  |  |  *		to populate if all chip-selects are internal. | 
					
						
							|  |  |  |  * @cshold_bug:	set this to true if the SPI controller on your chip requires | 
					
						
							|  |  |  |  *		a write to CSHOLD bit in between transfers (like in DM355). | 
					
						
							| 
									
										
										
										
											2011-02-08 07:59:55 -05:00
										 |  |  |  * @dma_event_q: DMA event queue to use if SPI_IO_TYPE_DMA is used for any | 
					
						
							|  |  |  |  *		device on the bus. | 
					
						
							| 
									
										
										
										
											2010-10-06 18:32:40 +05:30
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2010-02-01 09:51:02 -05:00
										 |  |  | struct davinci_spi_platform_data { | 
					
						
							| 
									
										
										
										
											2011-02-08 07:59:55 -05:00
										 |  |  | 	u8			version; | 
					
						
							|  |  |  | 	u8			num_chipselect; | 
					
						
							|  |  |  | 	u8			intr_line; | 
					
						
							|  |  |  | 	u8			*chip_sel; | 
					
						
							|  |  |  | 	bool			cshold_bug; | 
					
						
							|  |  |  | 	enum dma_event_q	dma_event_q; | 
					
						
							| 
									
										
										
										
											2010-08-16 15:05:51 +05:30
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-06 18:32:40 +05:30
										 |  |  | /**
 | 
					
						
							|  |  |  |  * davinci_spi_config - Per-chip-select configuration for SPI slave devices | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @wdelay:	amount of delay between transmissions. Measured in number of | 
					
						
							|  |  |  |  *		SPI module clocks. | 
					
						
							|  |  |  |  * @odd_parity:	polarity of parity flag at the end of transmit data stream. | 
					
						
							|  |  |  |  *		0 - odd parity, 1 - even parity. | 
					
						
							|  |  |  |  * @parity_enable: enable transmission of parity at end of each transmit | 
					
						
							|  |  |  |  *		data stream. | 
					
						
							|  |  |  |  * @io_type:	type of IO transfer. Choose between polled, interrupt and DMA. | 
					
						
							|  |  |  |  * @timer_disable: disable chip-select timers (setup and hold) | 
					
						
							|  |  |  |  * @c2tdelay:	chip-select setup time. Measured in number of SPI module clocks. | 
					
						
							|  |  |  |  * @t2cdelay:	chip-select hold time. Measured in number of SPI module clocks. | 
					
						
							|  |  |  |  * @t2edelay:	transmit data finished to SPI ENAn pin inactive time. Measured | 
					
						
							|  |  |  |  *		in number of SPI clocks. | 
					
						
							|  |  |  |  * @c2edelay:	chip-select active to SPI ENAn signal active time. Measured in | 
					
						
							|  |  |  |  *		number of SPI clocks. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2010-08-16 15:05:51 +05:30
										 |  |  | struct davinci_spi_config { | 
					
						
							|  |  |  | 	u8	wdelay; | 
					
						
							|  |  |  | 	u8	odd_parity; | 
					
						
							|  |  |  | 	u8	parity_enable; | 
					
						
							| 
									
										
										
										
											2010-09-02 16:52:06 +05:30
										 |  |  | #define SPI_IO_TYPE_INTR	0
 | 
					
						
							|  |  |  | #define SPI_IO_TYPE_POLL	1
 | 
					
						
							| 
									
										
										
										
											2010-10-06 17:03:10 +05:30
										 |  |  | #define SPI_IO_TYPE_DMA		2
 | 
					
						
							| 
									
										
										
										
											2010-09-02 16:52:06 +05:30
										 |  |  | 	u8	io_type; | 
					
						
							| 
									
										
										
										
											2010-08-16 15:05:51 +05:30
										 |  |  | 	u8	timer_disable; | 
					
						
							| 
									
										
										
										
											2010-02-01 09:51:02 -05:00
										 |  |  | 	u8	c2tdelay; | 
					
						
							|  |  |  | 	u8	t2cdelay; | 
					
						
							| 
									
										
										
										
											2010-08-19 15:07:38 +05:30
										 |  |  | 	u8	t2edelay; | 
					
						
							|  |  |  | 	u8	c2edelay; | 
					
						
							| 
									
										
										
										
											2010-02-01 09:51:02 -05:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif	/* __ARCH_ARM_DAVINCI_SPI_H */
 |