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

Commit ca5a4b56 authored by Marek Vasut's avatar Marek Vasut Committed by Nicolas Ferre
Browse files

ARM: at91/dt: sama5d4: Add support for DENX MA5D4 SoM and EVK



Add support for the DENX MA5D4 SoM and MA5D4EVK board. The system
consists of a SoM with eMMC, SPI NOR for booting, 2x SPI CAN chip
and an EVK with microSD slot, 2x UART, 2x CAN port, 3x USB port,
LEDs and expansion headers.

Signed-off-by: default avatarMarek Vasut <marex@denx.de>
Cc: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Cc: Josh Wu <josh.wu@atmel.com>
Signed-off-by: default avatarNicolas Ferre <nicolas.ferre@atmel.com>
parent 49f66974
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ dtb-$(CONFIG_SOC_SAM_V7) += \
	sama5d34ek.dtb \
	sama5d35ek.dtb \
	sama5d36ek.dtb \
	at91-sama5d4_ma5d4evk.dtb \
	at91-sama5d4_xplained.dtb \
	at91-sama5d4ek.dtb
dtb-$(CONFIG_ARCH_ATLAS6) += \
+127 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2015 Marek Vasut <marex@denx.de>
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

#include "sama5d4.dtsi"

/ {
	model = "DENX MA5D4";
	compatible = "denx,ma5d4", "atmel,sama5d4", "atmel,sama5";

	memory {
		reg = <0x20000000 0x10000000>;
	};

	clocks {
		main_clock: main_clock {
			compatible = "atmel,osc", "fixed-clock";
			clock-frequency = <12000000>;
		};

		clk20m: clk20m {
			compatible = "fixed-clock";
			#clock-cells = <0>;
			clock-frequency = <20000000>;
			clock-output-names = "clk20m";
		};
	};

	ahb {
		apb {
			mmc0: mmc@f8000000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3 &pinctrl_mmc0_dat4_7>;
				vmmc-supply = <&vcc_mmc0_reg>;
				vqmmc-supply = <&vcc_3v3_reg>;
				status = "okay";
				slot@0 {
					reg = <0>;
					bus-width = <8>;
					broken-cd;
				};
			};

			spi0: spi@f8010000 {
				cs-gpios = <&pioC 3 0>, <0>, <0>, <0>;
				status = "okay";

				m25p80@0 {
					compatible = "atmel,at25df321a";
					spi-max-frequency = <50000000>;
					reg = <0>;
				};
			};

			i2c0: i2c@f8014000 {
				status = "okay";
			};

			spi1: spi@fc018000 {
				cs-gpios = <&pioB 22 0>, <&pioB 23 0>, <0>, <0>;
				status = "okay";

				can0: can@0 {
					compatible = "microchip,mcp2515";
					reg = <0>;
					clocks = <&clk20m>;
					interrupt-parent = <&pioE>;
					interrupts = <6 GPIO_ACTIVE_LOW>;
					spi-max-frequency = <10000000>;
				};

				can1: can@1 {
					compatible = "microchip,mcp2515";
					reg = <1>;
					clocks = <&clk20m>;
					interrupt-parent = <&pioE>;
					interrupts = <7 GPIO_ACTIVE_LOW>;
					spi-max-frequency = <10000000>;
				};
			};

			adc0: adc@fc034000 {
				pinctrl-names = "default";
				pinctrl-0 = <
					/* external trigger conflicts with USBA_VBUS */
					&pinctrl_adc0_ad0
					&pinctrl_adc0_ad1
					&pinctrl_adc0_ad2
					&pinctrl_adc0_ad3
					&pinctrl_adc0_ad4
					>;
				atmel,adc-vref = <3300>;
				status = "okay";
			};

			watchdog@fc068640 {
				status = "okay";
			};
		};
	};

	vcc_3v3_reg: fixedregulator@0 {
		compatible = "regulator-fixed";
		regulator-name = "VCC 3V3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-boot-on;
		regulator-always-on;
	};

	vcc_mmc0_reg: fixedregulator@1 {
		compatible = "regulator-fixed";
		gpio = <&pioE 15 GPIO_ACTIVE_HIGH>;
		regulator-name = "RST_n MCI0";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		vin-supply = <&vcc_3v3_reg>;
		regulator-boot-on;
	};
};
+170 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2015 Marek Vasut <marex@denx.de>
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

/dts-v1/;
#include "at91-sama5d4_ma5d4.dtsi"

/ {
	model = "DENX MA5D4EVK";
	compatible = "denx,ma5d4evk", "atmel,sama5d4", "atmel,sama5";

	chosen {
		stdout-path = "serial3:115200n8";
	};

	ahb {
		usb0: gadget@00400000 {
			atmel,vbus-gpio = <&pioE 31 GPIO_ACTIVE_HIGH>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_usba_vbus>;
			status = "okay";
		};

		usb1: ohci@00500000 {
			num-ports = <3>;
			atmel,vbus-gpio = <0
					   &pioE 11 GPIO_ACTIVE_LOW
					   &pioE 14 GPIO_ACTIVE_LOW
					  >;
			status = "okay";
		};

		usb2: ehci@00600000 {
			status = "okay";
		};

		apb {
			hlcdc: hlcdc@f0000000 {
				status = "okay";

				hlcdc-display-controller {
					pinctrl-names = "default";
					pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb888>;

					port@0 {
						hlcdc_panel_output: endpoint@0 {
							reg = <0>;
							remote-endpoint = <&panel_input>;
						};
					};
				};

			};

			macb0: ethernet@f8020000 {
				phy-mode = "rmii";
				status = "okay";

				phy0: ethernet-phy@0 {
					reg = <0>;
				};
			};

			usart0: serial@f802c000 {
				status = "okay";
			};

			usart1: serial@f8030000 {
				status = "okay";
			};

			mmc1: mmc@fc000000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_mmc1_clk_cmd_dat0 &pinctrl_mmc1_dat1_3 &pinctrl_mmc1_cd>;
				vmmc-supply = <&vcc_mmc1_reg>;
				vqmmc-supply = <&vcc_3v3_reg>;
				status = "okay";
				slot@0 {
					reg = <0>;
					bus-width = <4>;
					cd-gpios = <&pioE 5 0>;
				};
			};

			adc0: adc@fc034000 {
				atmel,adc-ts-wires = <4>;
				atmel,adc-ts-pressure-threshold = <10000>;
			};


			pinctrl@fc06a000 {
				board {
					pinctrl_mmc1_cd: mmc1_cd {
						atmel,pins = <AT91_PIOE 5 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
					};
					pinctrl_usba_vbus: usba_vbus {
						atmel,pins =
							<AT91_PIOE 31 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
					};
				};
			};
		};
	};

	backlight: backlight {
		compatible = "pwm-backlight";
		pwms = <&hlcdc_pwm 0 50000 0>;
		brightness-levels = <0 4 8 16 32 64 128 255>;
		default-brightness-level = <6>;
		status = "okay";
	};

	leds {
		compatible = "gpio-leds";
		status = "okay";

		user1 {
			label = "user1";
			gpios = <&pioD 28 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
		};

		user2 {
			label = "user2";
			gpios = <&pioD 29 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
		};

		user3 {
			label = "user3";
			gpios = <&pioD 30 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
		};
	};

	panel: panel {
		/* Actually Ampire 800480R2 */
		compatible = "foxlink,fl500wvr00-a0t", "simple-panel";
		backlight = <&backlight>;
		#address-cells = <1>;
		#size-cells = <0>;
		status = "okay";

		port@0 {
			#address-cells = <1>;
			#size-cells = <0>;

			panel_input: endpoint@0 {
				reg = <0>;
				remote-endpoint = <&hlcdc_panel_output>;
			};
		};
	};

	vcc_mmc1_reg: fixedregulator@2 {
		compatible = "regulator-fixed";
		gpio = <&pioE 17 GPIO_ACTIVE_LOW>;
		regulator-name = "VDD MCI1";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		vin-supply = <&vcc_3v3_reg>;
	};
};