// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (C) 2015 Microchip Technology Inc.  All rights reserved.
 */
#include <dt-bindings/clock/microchip,pic32-clock.h>
#include <dt-bindings/interrupt-controller/irq.h>

/ {
	#address-cells = <1>;
	#size-cells = <1>;
	interrupt-parent = <&evic>;

	aliases {
		gpio0 = &gpio0;
		gpio1 = &gpio1;
		gpio2 = &gpio2;
		gpio3 = &gpio3;
		gpio4 = &gpio4;
		gpio5 = &gpio5;
		gpio6 = &gpio6;
		gpio7 = &gpio7;
		gpio8 = &gpio8;
		gpio9 = &gpio9;
		serial0 = &uart1;
		serial1 = &uart2;
		serial2 = &uart3;
		serial3 = &uart4;
		serial4 = &uart5;
		serial5 = &uart6;
	};

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

		cpu@0 {
			compatible = "mti,mips14KEc";
			device_type = "cpu";
		};
	};

	soc {
		compatible = "microchip,pic32mzda-infra";
		interrupts = <0 IRQ_TYPE_EDGE_RISING>;
	};

	/* external clock input on TxCLKI pin */
	txcki: txcki_clk {
		#clock-cells = <0>;
		compatible = "fixed-clock";
		clock-frequency = <4000000>;
		status = "disabled";
	};

	/* external input on REFCLKIx pin */
	refix: refix_clk {
		#clock-cells = <0>;
		compatible = "fixed-clock";
		clock-frequency = <24000000>;
		status = "disabled";
	};

	rootclk: clock-controller@1f801200 {
		compatible = "microchip,pic32mzda-clk";
		reg = <0x1f801200 0x200>;
		#clock-cells = <1>;
		microchip,pic32mzda-sosc;
	};

	evic: interrupt-controller@1f810000 {
		compatible = "microchip,pic32mzda-evic";
		interrupt-controller;
		#interrupt-cells = <2>;
		reg = <0x1f810000 0x1000>;
		microchip,external-irqs = <3 8 13 18 23>;
	};

	pic32_pinctrl: pinctrl@1f801400{
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "microchip,pic32mzda-pinctrl";
		reg = <0x1f801400 0x400>;
		clocks = <&rootclk PB1CLK>;
	};

	/* PORTA */
	gpio0: gpio0@1f860000 {
		compatible = "microchip,pic32mzda-gpio";
		reg = <0x1f860000 0x100>;
		interrupts = <118 IRQ_TYPE_LEVEL_HIGH>;
		#gpio-cells = <2>;
		gpio-controller;
		interrupt-controller;
		#interrupt-cells = <2>;
		clocks = <&rootclk PB4CLK>;
		microchip,gpio-bank = <0>;
		gpio-ranges = <&pic32_pinctrl 0 0 16>;
	};

	/* PORTB */
	gpio1: gpio1@1f860100 {
		compatible = "microchip,pic32mzda-gpio";
		reg = <0x1f860100 0x100>;
		interrupts = <119 IRQ_TYPE_LEVEL_HIGH>;
		#gpio-cells = <2>;
		gpio-controller;
		interrupt-controller;
		#interrupt-cells = <2>;
		clocks = <&rootclk PB4CLK>;
		microchip,gpio-bank = <1>;
		gpio-ranges = <&pic32_pinctrl 0 16 16>;
	};

	/* PORTC */
	gpio2: gpio2@1f860200 {
		compatible = "microchip,pic32mzda-gpio";
		reg = <0x1f860200 0x100>;
		interrupts = <120 IRQ_TYPE_LEVEL_HIGH>;
		#gpio-cells = <2>;
		gpio-controller;
		interrupt-controller;
		#interrupt-cells = <2>;
		clocks = <&rootclk PB4CLK>;
		microchip,gpio-bank = <2>;
		gpio-ranges = <&pic32_pinctrl 0 32 16>;
	};

	/* PORTD */
	gpio3: gpio3@1f860300 {
		compatible = "microchip,pic32mzda-gpio";
		reg = <0x1f860300 0x100>;
		interrupts = <121 IRQ_TYPE_LEVEL_HIGH>;
		#gpio-cells = <2>;
		gpio-controller;
		interrupt-controller;
		#interrupt-cells = <2>;
		clocks = <&rootclk PB4CLK>;
		microchip,gpio-bank = <3>;
		gpio-ranges = <&pic32_pinctrl 0 48 16>;
	};

	/* PORTE */
	gpio4: gpio4@1f860400 {
		compatible = "microchip,pic32mzda-gpio";
		reg = <0x1f860400 0x100>;
		interrupts = <122 IRQ_TYPE_LEVEL_HIGH>;
		#gpio-cells = <2>;
		gpio-controller;
		interrupt-controller;
		#interrupt-cells = <2>;
		clocks = <&rootclk PB4CLK>;
		microchip,gpio-bank = <4>;
		gpio-ranges = <&pic32_pinctrl 0 64 16>;
	};

	/* PORTF */
	gpio5: gpio5@1f860500 {
		compatible = "microchip,pic32mzda-gpio";
		reg = <0x1f860500 0x100>;
		interrupts = <123 IRQ_TYPE_LEVEL_HIGH>;
		#gpio-cells = <2>;
		gpio-controller;
		interrupt-controller;
		#interrupt-cells = <2>;
		clocks = <&rootclk PB4CLK>;
		microchip,gpio-bank = <5>;
		gpio-ranges = <&pic32_pinctrl 0 80 16>;
	};

	/* PORTG */
	gpio6: gpio6@1f860600 {
		compatible = "microchip,pic32mzda-gpio";
		reg = <0x1f860600 0x100>;
		interrupts = <124 IRQ_TYPE_LEVEL_HIGH>;
		#gpio-cells = <2>;
		gpio-controller;
		interrupt-controller;
		#interrupt-cells = <2>;
		clocks = <&rootclk PB4CLK>;
		microchip,gpio-bank = <6>;
		gpio-ranges = <&pic32_pinctrl 0 96 16>;
	};

	/* PORTH */
	gpio7: gpio7@1f860700 {
		compatible = "microchip,pic32mzda-gpio";
		reg = <0x1f860700 0x100>;
		interrupts = <125 IRQ_TYPE_LEVEL_HIGH>;
		#gpio-cells = <2>;
		gpio-controller;
		interrupt-controller;
		#interrupt-cells = <2>;
		clocks = <&rootclk PB4CLK>;
		microchip,gpio-bank = <7>;
		gpio-ranges = <&pic32_pinctrl 0 112 16>;
	};

	/* PORTI does not exist */

	/* PORTJ */
	gpio8: gpio8@1f860800 {
		compatible = "microchip,pic32mzda-gpio";
		reg = <0x1f860800 0x100>;
		interrupts = <126 IRQ_TYPE_LEVEL_HIGH>;
		#gpio-cells = <2>;
		gpio-controller;
		interrupt-controller;
		#interrupt-cells = <2>;
		clocks = <&rootclk PB4CLK>;
		microchip,gpio-bank = <8>;
		gpio-ranges = <&pic32_pinctrl 0 128 16>;
	};

	/* PORTK */
	gpio9: gpio9@1f860900 {
		compatible = "microchip,pic32mzda-gpio";
		reg = <0x1f860900 0x100>;
		interrupts = <127 IRQ_TYPE_LEVEL_HIGH>;
		#gpio-cells = <2>;
		gpio-controller;
		interrupt-controller;
		#interrupt-cells = <2>;
		clocks = <&rootclk PB4CLK>;
		microchip,gpio-bank = <9>;
		gpio-ranges = <&pic32_pinctrl 0 144 16>;
	};

	sdhci: sdhci@1f8ec000 {
		compatible = "microchip,pic32mzda-sdhci";
		reg = <0x1f8ec000 0x100>;
		interrupts = <191 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&rootclk REF4CLK>, <&rootclk PB5CLK>;
		clock-names = "base_clk", "sys_clk";
		bus-width = <4>;
		cap-sd-highspeed;
		status = "disabled";
	};

	uart1: serial@1f822000 {
		compatible = "microchip,pic32mzda-uart";
		reg = <0x1f822000 0x50>;
		interrupts = <112 IRQ_TYPE_LEVEL_HIGH>,
			<113 IRQ_TYPE_LEVEL_HIGH>,
			<114 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&rootclk PB2CLK>;
		status = "disabled";
	};

	uart2: serial@1f822200 {
		compatible = "microchip,pic32mzda-uart";
		reg = <0x1f822200 0x50>;
		interrupts = <145 IRQ_TYPE_LEVEL_HIGH>,
			<146 IRQ_TYPE_LEVEL_HIGH>,
			<147 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&rootclk PB2CLK>;
		status = "disabled";
	};

	uart3: serial@1f822400 {
		compatible = "microchip,pic32mzda-uart";
		reg = <0x1f822400 0x50>;
		interrupts = <157 IRQ_TYPE_LEVEL_HIGH>,
			<158 IRQ_TYPE_LEVEL_HIGH>,
			<159 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&rootclk PB2CLK>;
		status = "disabled";
	};

	uart4: serial@1f822600 {
		compatible = "microchip,pic32mzda-uart";
		reg = <0x1f822600 0x50>;
		interrupts = <170 IRQ_TYPE_LEVEL_HIGH>,
			<171 IRQ_TYPE_LEVEL_HIGH>,
			<172 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&rootclk PB2CLK>;
		status = "disabled";
	};

	uart5: serial@1f822800 {
		compatible = "microchip,pic32mzda-uart";
		reg = <0x1f822800 0x50>;
		interrupts = <179 IRQ_TYPE_LEVEL_HIGH>,
			<180 IRQ_TYPE_LEVEL_HIGH>,
			<181 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&rootclk PB2CLK>;
		status = "disabled";
	};

	uart6: serial@1f822A00 {
		compatible = "microchip,pic32mzda-uart";
		reg = <0x1f822A00 0x50>;
		interrupts = <188 IRQ_TYPE_LEVEL_HIGH>,
			<189 IRQ_TYPE_LEVEL_HIGH>,
			<190 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&rootclk PB2CLK>;
		status = "disabled";
	};
};
