mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	spi: tegra: add spi driver for SLINK controller
Tegra20/Tegra30 supports the spi interface through its SLINK controller. Add spi driver for SLINK controller. Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Reviewed-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
		
							parent
							
								
									8f0d8163b5
								
							
						
					
					
						commit
						dc4dc36056
					
				
					 5 changed files with 1432 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
NVIDIA Tegra20/Tegra30 SLINK controller.
 | 
			
		||||
 | 
			
		||||
Required properties:
 | 
			
		||||
- compatible : should be "nvidia,tegra20-slink", "nvidia,tegra30-slink".
 | 
			
		||||
- reg: Should contain SLINK registers location and length.
 | 
			
		||||
- interrupts: Should contain SLINK interrupts.
 | 
			
		||||
- nvidia,dma-request-selector : The Tegra DMA controller's phandle and
 | 
			
		||||
  request selector for this SLINK controller.
 | 
			
		||||
 | 
			
		||||
Recommended properties:
 | 
			
		||||
- spi-max-frequency: Definition as per
 | 
			
		||||
                     Documentation/devicetree/bindings/spi/spi-bus.txt
 | 
			
		||||
 | 
			
		||||
Example:
 | 
			
		||||
 | 
			
		||||
slink@7000d600 {
 | 
			
		||||
	compatible = "nvidia,tegra20-slink";
 | 
			
		||||
	reg = <0x7000d600 0x200>;
 | 
			
		||||
	interrupts = <0 82 0x04>;
 | 
			
		||||
	nvidia,dma-request-selector = <&apbdma 16>;
 | 
			
		||||
	spi-max-frequency = <25000000>;
 | 
			
		||||
	#address-cells = <1>;
 | 
			
		||||
	#size-cells = <0>;
 | 
			
		||||
	status = "disabled";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -385,6 +385,12 @@ config SPI_MXS
 | 
			
		|||
	help
 | 
			
		||||
	  SPI driver for Freescale MXS devices.
 | 
			
		||||
 | 
			
		||||
config SPI_TEGRA20_SLINK
 | 
			
		||||
	tristate "Nvidia Tegra20/Tegra30 SLINK Controller"
 | 
			
		||||
	depends on ARCH_TEGRA && TEGRA20_APB_DMA
 | 
			
		||||
	help
 | 
			
		||||
	  SPI driver for Nvidia Tegra20/Tegra30 SLINK Controller interface.
 | 
			
		||||
 | 
			
		||||
config SPI_TI_SSP
 | 
			
		||||
	tristate "TI Sequencer Serial Port - SPI Support"
 | 
			
		||||
	depends on MFD_TI_SSP
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -60,10 +60,10 @@ obj-$(CONFIG_SPI_SH_MSIOF)		+= spi-sh-msiof.o
 | 
			
		|||
obj-$(CONFIG_SPI_SH_SCI)		+= spi-sh-sci.o
 | 
			
		||||
obj-$(CONFIG_SPI_SIRF)		+= spi-sirf.o
 | 
			
		||||
obj-$(CONFIG_SPI_STMP3XXX)		+= spi-stmp.o
 | 
			
		||||
obj-$(CONFIG_SPI_TEGRA20_SLINK)		+= spi-tegra20-slink.o
 | 
			
		||||
obj-$(CONFIG_SPI_TI_SSP)		+= spi-ti-ssp.o
 | 
			
		||||
obj-$(CONFIG_SPI_TLE62X0)		+= spi-tle62x0.o
 | 
			
		||||
obj-$(CONFIG_SPI_TOPCLIFF_PCH)		+= spi-topcliff-pch.o
 | 
			
		||||
obj-$(CONFIG_SPI_TXX9)			+= spi-txx9.o
 | 
			
		||||
obj-$(CONFIG_SPI_XCOMM)		+= spi-xcomm.o
 | 
			
		||||
obj-$(CONFIG_SPI_XILINX)		+= spi-xilinx.o
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1359
									
								
								drivers/spi/spi-tegra20-slink.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1359
									
								
								drivers/spi/spi-tegra20-slink.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										40
									
								
								include/linux/spi/spi-tegra.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								include/linux/spi/spi-tegra.h
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,40 @@
 | 
			
		|||
/*
 | 
			
		||||
 * spi-tegra.h: SPI interface for Nvidia Tegra20 SLINK controller.
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 2011 NVIDIA Corporation
 | 
			
		||||
 *
 | 
			
		||||
 * 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.,
 | 
			
		||||
 * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _LINUX_SPI_TEGRA_H
 | 
			
		||||
#define _LINUX_SPI_TEGRA_H
 | 
			
		||||
 | 
			
		||||
struct tegra_spi_platform_data {
 | 
			
		||||
	int dma_req_sel;
 | 
			
		||||
	unsigned int spi_max_frequency;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Controller data from device to pass some info like
 | 
			
		||||
 * hw based chip select can be used or not and if yes
 | 
			
		||||
 * then CS hold and setup time.
 | 
			
		||||
 */
 | 
			
		||||
struct tegra_spi_device_controller_data {
 | 
			
		||||
	bool is_hw_based_cs;
 | 
			
		||||
	int cs_setup_clk_count;
 | 
			
		||||
	int cs_hold_clk_count;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif /* _LINUX_SPI_TEGRA_H */
 | 
			
		||||
		Loading…
	
		Reference in a new issue