TS-TPC-7990 CPU SPI Controller: Difference between revisions

From embeddedTS Manuals
(Created page with "The CPU has 1 SPI controller which are accessible through either specific kernel drivers, or userspace using the /dev/spi interface. To utilize SPI, some projects will end up...")
 
No edit summary
Line 1: Line 1:
The CPU has 1 SPI controller which are accessible through either specific kernel drivers, or userspace using the /dev/spi interface.  To utilize SPI, some projects will end up with a customized device tree, so setting up the kernel build environment will be necessary.  See the [[#Compile_the_Kernel|kernel compile guide here]] for more details.
SPI is located on the [[#DIO Header]] through /dev/spidev1.2.
 
This board includes one SPI interface which is accessible through either specific kernel drivers, or userspace using the /dev/spi interface.  To utilize SPI, some projects will end up with a customized device tree, so setting up the kernel build environment will be necessary.  See the [[#Compile_the_Kernel|kernel compile guide here]] for more details.


Open the dts from arch/arm/boot/dts/imx6qdl-ts7990.dtsi.  The kernel requires a spidev device be added to the relevant ECSPI controller.  For example:
Open the dts from arch/arm/boot/dts/imx6qdl-ts7990.dtsi.  The kernel requires a spidev device be added to the relevant ECSPI controller.  For example:

Revision as of 15:26, 27 October 2016

SPI is located on the #DIO Header through /dev/spidev1.2.

This board includes one SPI interface which is accessible through either specific kernel drivers, or userspace using the /dev/spi interface. To utilize SPI, some projects will end up with a customized device tree, so setting up the kernel build environment will be necessary. See the kernel compile guide here for more details.

Open the dts from arch/arm/boot/dts/imx6qdl-ts7990.dtsi. The kernel requires a spidev device be added to the relevant ECSPI controller. For example:

&ecspi2 {
	fsl,spi-num-chipselects = <3>;
	cs-gpios = <&gpio5 31 0>, <&gpio1 6 0>, <&gpio5 18 0>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_ecspi2>;
	status = "okay";

	serial1: max3100-0@0 {
		compatible = "max3100-ts";
		reg = <0>;
		interrupt-parent = <&gpio5>;
		interrupts = <20 IRQ_TYPE_LEVEL_LOW>;
		spi-max-frequency = <10000000>;
		loopback = <0>;
		crystal = <1>;
		poll-time = <100>;
	};

	spidevfpga: spi@1 {
		compatible = "spidev";
		reg = <1>;
		spi-max-frequency = <1000000>;
	};

	spidevdc1: spi@2 {
		compatible = "spidev";
		reg = <2>;
		spi-max-frequency = <1000000>;
	};
};

In this case ecspi2 is configured with a spidev at 1MHz which will be available at /dev/spidev1.1 and /dev/spidev1.2.

Once you have a /dev/spidev device, you can open this file and use the standard Linux SPI API. For more information see the documentation and sample code: