Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dc4dc360 authored by Laxman Dewangan's avatar Laxman Dewangan Committed by Mark Brown
Browse files

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: default avatarLaxman Dewangan <ldewangan@nvidia.com>
Reviewed-by: default avatarStephen Warren <swarren@nvidia.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 8f0d8163
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
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";
};
+6 −0
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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 −0

File added.

Preview size limit exceeded, changes collapsed.

+40 −0
Original line number Diff line number Diff line
/*
 * 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 */