// SPDX-License-Identifier: GPL-2.0
/*
 * Device Tree file for Cortina systems Gemini SoC
 */

#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/clock/cortina,gemini-clock.h>
#include <dt-bindings/reset/cortina,gemini-reset.h>
#include <dt-bindings/gpio/gpio.h>

/ {
	soc {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;
		compatible = "simple-bus";
		interrupt-parent = <&intcon>;

		flash: flash@30000000 {
			compatible = "cortina,gemini-flash", "cfi-flash";
			syscon = <&syscon>;
			pinctrl-names = "default";
			pinctrl-0 = <&pflash_default_pins>;
			bank-width = <2>;
			status = "disabled";
		};

		syscon: syscon@40000000 {
			compatible = "cortina,gemini-syscon",
				     "syscon", "simple-mfd";
			reg = <0x40000000 0x1000>;
			#clock-cells = <1>;
			#reset-cells = <1>;

			syscon-reboot {
				compatible = "syscon-reboot";
				regmap = <&syscon>;
				/* GLOBAL_RESET register */
				offset = <0x0c>;
				/* RESET_GLOBAL | RESET_CPU1 */
				mask = <0xC0000000>;
			};

			pinctrl {
				compatible = "cortina,gemini-pinctrl";
				regmap = <&syscon>;
				/* Hog the DRAM pins */
				pinctrl-names = "default";
				pinctrl-0 = <&dram_default_pins>, <&system_default_pins>,
					    <&vcontrol_default_pins>;

				dram_default_pins: pinctrl-dram {
					mux {
						function = "dram";
						groups = "dramgrp";
					};
				};
				rtc_default_pins: pinctrl-rtc {
					mux {
						function = "rtc";
						groups = "rtcgrp";
					};
				};
				power_default_pins: pinctrl-power {
					mux {
						function = "power";
						groups = "powergrp";
					};
				};
				cir_default_pins: pinctrl-cir {
					mux {
						function = "cir";
						groups = "cirgrp";
					};
				};
				system_default_pins: pinctrl-system {
					mux {
						function = "system";
						groups = "systemgrp";
					};
				};
				vcontrol_default_pins: pinctrl-vcontrol {
					mux {
						function = "vcontrol";
						groups = "vcontrolgrp";
					};
				};
				ice_default_pins: pinctrl-ice {
					mux {
						function = "ice";
						groups = "icegrp";
					};
				};
				uart_default_pins: pinctrl-uart {
					mux {
						function = "uart";
						groups = "uartrxtxgrp";
					};
				};
				pflash_default_pins: pinctrl-pflash {
					mux {
						function = "pflash";
						groups = "pflashgrp";
					};
				};
				usb_default_pins: pinctrl-usb {
					mux {
						function = "usb";
						groups = "usbgrp";
					};
				};
				gmii_default_pins: pinctrl-gmii {
					/*
					 * Only activate GMAC0 by default since
					 * GMAC1 will overlap with 8 GPIO lines
					 * gpio2a, gpio2b. Overlay groups with
					 * "gmii_gmac0_grp", "gmii_gmac1_grp" for
					 * both ethernet interfaces.
					 */
					mux {
						function = "gmii";
						groups = "gmii_gmac0_grp";
					};
				};
				pci_default_pins: pinctrl-pci {
					mux {
						function = "pci";
						groups = "pcigrp";
					};
				};
				sata_default_pins: pinctrl-sata {
					mux {
						function = "sata";
						groups = "satagrp";
					};
				};
				/* Activate both groups of pins for this state */
				sata_and_ide_pins: pinctrl-sata-ide {
					mux0 {
						function = "sata";
						groups = "satagrp";
					};
					mux1 {
						function = "ide";
						groups = "idegrp";
					};
				};
				tvc_default_pins: pinctrl-tvc {
					mux {
						function = "tvc";
						groups = "tvcgrp";
					};
				};
			};
		};

		watchdog@41000000 {
			compatible = "cortina,gemini-watchdog", "faraday,ftwdt010";
			reg = <0x41000000 0x1000>;
			interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
			resets = <&syscon GEMINI_RESET_WDOG>;
			clocks = <&syscon GEMINI_CLK_APB>;
			clock-names = "PCLK";
		};

		uart0: serial@42000000 {
			compatible = "ns16550a";
			reg = <0x42000000 0x100>;
			resets = <&syscon GEMINI_RESET_UART>;
			clocks = <&syscon GEMINI_CLK_UART>;
			interrupts = <18 IRQ_TYPE_LEVEL_HIGH>;
			pinctrl-names = "default";
			pinctrl-0 = <&uart_default_pins>;
			reg-shift = <2>;
		};

		timer@43000000 {
			compatible = "faraday,fttmr010";
			reg = <0x43000000 0x1000>;
			interrupt-parent = <&intcon>;
			interrupts = <14 IRQ_TYPE_EDGE_FALLING>, /* Timer 1 */
				     <15 IRQ_TYPE_EDGE_FALLING>, /* Timer 2 */
				     <16 IRQ_TYPE_EDGE_FALLING>; /* Timer 3 */
			resets = <&syscon GEMINI_RESET_TIMER>;
			/* APB clock or RTC clock */
			clocks = <&syscon GEMINI_CLK_APB>, <&syscon GEMINI_CLK_RTC>;
			clock-names = "PCLK", "EXTCLK";
			syscon = <&syscon>;
		};

		rtc@45000000 {
			compatible = "cortina,gemini-rtc", "faraday,ftrtc010";
			reg = <0x45000000 0x100>;
			interrupts = <17 IRQ_TYPE_LEVEL_HIGH>;
			resets = <&syscon GEMINI_RESET_RTC>;
			clocks = <&syscon GEMINI_CLK_APB>, <&syscon GEMINI_CLK_RTC>;
			clock-names = "PCLK", "EXTCLK";
			pinctrl-names = "default";
			pinctrl-0 = <&rtc_default_pins>;
		};

		sata: sata@46000000 {
			compatible = "cortina,gemini-sata-bridge";
			reg = <0x46000000 0x100>;
			resets = <&syscon GEMINI_RESET_SATA0>,
				 <&syscon GEMINI_RESET_SATA1>;
			reset-names = "sata0", "sata1";
			clocks = <&syscon GEMINI_CLK_GATE_SATA0>,
				 <&syscon GEMINI_CLK_GATE_SATA1>;
			clock-names = "SATA0_PCLK", "SATA1_PCLK";
			/*
			 * This defines the special "ide" state that needs
			 * to be explicitly enabled to enable the IDE pins,
			 * as these pins are normally used for other things.
			 */
			pinctrl-names = "default", "ide";
			pinctrl-0 = <&sata_default_pins>;
			pinctrl-1 = <&sata_and_ide_pins>;
			syscon = <&syscon>;
			status = "disabled";
		};

		intcon: interrupt-controller@48000000 {
			compatible = "faraday,ftintc010";
			reg = <0x48000000 0x1000>;
			resets = <&syscon GEMINI_RESET_INTCON0>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};

		power-controller@4b000000 {
			compatible = "cortina,gemini-power-controller";
			reg = <0x4b000000 0x100>;
			interrupts = <26 IRQ_TYPE_EDGE_RISING>;
			pinctrl-names = "default";
			pinctrl-0 = <&power_default_pins>;
		};

		gpio0: gpio@4d000000 {
			compatible = "cortina,gemini-gpio", "faraday,ftgpio010";
			reg = <0x4d000000 0x100>;
			interrupts = <22 IRQ_TYPE_LEVEL_HIGH>;
			resets = <&syscon GEMINI_RESET_GPIO0>;
			clocks = <&syscon GEMINI_CLK_APB>;
			gpio-controller;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};

		gpio1: gpio@4e000000 {
			compatible = "cortina,gemini-gpio", "faraday,ftgpio010";
			reg = <0x4e000000 0x100>;
			interrupts = <23 IRQ_TYPE_LEVEL_HIGH>;
			resets = <&syscon GEMINI_RESET_GPIO1>;
			clocks = <&syscon GEMINI_CLK_APB>;
			gpio-controller;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};

		gpio2: gpio@4f000000 {
			compatible = "cortina,gemini-gpio", "faraday,ftgpio010";
			reg = <0x4f000000 0x100>;
			interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
			resets = <&syscon GEMINI_RESET_GPIO2>;
			clocks = <&syscon GEMINI_CLK_APB>;
			gpio-controller;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};

		pci@50000000 {
			compatible = "cortina,gemini-pci", "faraday,ftpci100";
			/*
			 * The first 256 bytes in the IO range is actually used
			 * to configure the host bridge.
			 */
			reg = <0x50000000 0x100>;
			resets = <&syscon GEMINI_RESET_PCI>;
			clocks = <&syscon GEMINI_CLK_GATE_PCI>, <&syscon GEMINI_CLK_PCI>;
			clock-names = "PCLK", "PCICLK";
			pinctrl-names = "default";
			pinctrl-0 = <&pci_default_pins>;
			device_type = "pci";
			#address-cells = <3>;
			#size-cells = <2>;
			status = "disabled";

			#interrupt-cells = <1>;
			interrupt-map-mask = <0xf800 0 0 7>;
			interrupt-map =
				<0x4800 0 0 1 &pci_intc 0>, /* Slot 9 */
				<0x4800 0 0 2 &pci_intc 1>,
				<0x4800 0 0 3 &pci_intc 2>,
				<0x4800 0 0 4 &pci_intc 3>,
				<0x5000 0 0 1 &pci_intc 1>, /* Slot 10 */
				<0x5000 0 0 2 &pci_intc 2>,
				<0x5000 0 0 3 &pci_intc 3>,
				<0x5000 0 0 4 &pci_intc 0>,
				<0x5800 0 0 1 &pci_intc 2>, /* Slot 11 */
				<0x5800 0 0 2 &pci_intc 3>,
				<0x5800 0 0 3 &pci_intc 0>,
				<0x5800 0 0 4 &pci_intc 1>,
				<0x6000 0 0 1 &pci_intc 3>, /* Slot 12 */
				<0x6000 0 0 2 &pci_intc 0>,
				<0x6000 0 0 3 &pci_intc 1>,
				<0x6000 0 0 4 &pci_intc 2>;

			bus-range = <0x00 0xff>;
			/* PCI ranges mappings */
			ranges =
			/* 1MiB I/O space 0x50000000-0x500fffff */
			<0x01000000 0 0          0x50000000 0 0x00100000>,
			/* 128MiB non-prefetchable memory 0x58000000-0x5fffffff */
			<0x02000000 0 0x58000000 0x58000000 0 0x08000000>;

			/* DMA ranges */
			dma-ranges =
			/* 128MiB at 0x00000000-0x07ffffff */
			<0x02000000 0 0x00000000 0x00000000 0 0x08000000>,
			/* 64MiB at 0x00000000-0x03ffffff */
			<0x02000000 0 0x00000000 0x00000000 0 0x04000000>,
			/* 64MiB at 0x00000000-0x03ffffff */
			<0x02000000 0 0x00000000 0x00000000 0 0x04000000>;

			/*
			 * This PCI host bridge variant has a cascaded interrupt
			 * controller embedded in the host bridge.
			 */
			pci_intc: interrupt-controller {
				interrupt-parent = <&intcon>;
				interrupts = <8 IRQ_TYPE_LEVEL_HIGH>;
				interrupt-controller;
				#address-cells = <0>;
				#interrupt-cells = <1>;
			};
		};

		ethernet: ethernet@60000000 {
			compatible = "cortina,gemini-ethernet";
			reg = <0x60000000 0x4000>, /* Global registers, queue */
			      <0x60004000 0x2000>, /* V-bit */
			      <0x60006000 0x2000>; /* A-bit */
			pinctrl-names = "default";
			pinctrl-0 = <&gmii_default_pins>;
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <1>;
			ranges;

			gmac0: ethernet-port@0 {
				compatible = "cortina,gemini-ethernet-port";
				reg = <0x60008000 0x2000>, /* Port 0 DMA/TOE */
				      <0x6000a000 0x2000>; /* Port 0 GMAC */
				interrupt-parent = <&intcon>;
				interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
				resets = <&syscon GEMINI_RESET_GMAC0>;
				clocks = <&syscon GEMINI_CLK_GATE_GMAC0>;
				clock-names = "PCLK";
			};

			gmac1: ethernet-port@1 {
				compatible = "cortina,gemini-ethernet-port";
				reg = <0x6000c000 0x2000>, /* Port 1 DMA/TOE */
				      <0x6000e000 0x2000>; /* Port 1 GMAC */
				interrupt-parent = <&intcon>;
				interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
				resets = <&syscon GEMINI_RESET_GMAC1>;
				clocks = <&syscon GEMINI_CLK_GATE_GMAC1>;
				clock-names = "PCLK";
			};
		};

		crypto: crypto@62000000 {
			compatible = "cortina,sl3516-crypto";
			reg = <0x62000000 0x10000>;
			interrupts = <7 IRQ_TYPE_EDGE_RISING>;
			resets = <&syscon GEMINI_RESET_SECURITY>;
			clocks = <&syscon GEMINI_CLK_GATE_SECURITY>;
		};

		ide0: ide@63000000 {
			compatible = "cortina,gemini-pata", "faraday,ftide010";
			reg = <0x63000000 0x1000>;
			interrupts = <4 IRQ_TYPE_EDGE_RISING>;
			resets = <&syscon GEMINI_RESET_IDE>;
			clocks = <&syscon GEMINI_CLK_GATE_IDE>;
			clock-names = "PCLK";
			sata = <&sata>;
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};

		ide1: ide@63400000 {
			compatible = "cortina,gemini-pata", "faraday,ftide010";
			reg = <0x63400000 0x1000>;
			interrupts = <5 IRQ_TYPE_EDGE_RISING>;
			resets = <&syscon GEMINI_RESET_IDE>;
			clocks = <&syscon GEMINI_CLK_GATE_IDE>;
			clock-names = "PCLK";
			sata = <&sata>;
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};

		dma-controller@67000000 {
			compatible = "faraday,ftdma020", "arm,pl080", "arm,primecell";
			/* Faraday Technology FTDMAC020 variant */
			arm,primecell-periphid = <0x0003b080>;
			reg = <0x67000000 0x1000>;
			interrupts = <9 IRQ_TYPE_EDGE_RISING>;
			resets = <&syscon GEMINI_RESET_DMAC>;
			clocks = <&syscon GEMINI_CLK_AHB>;
			clock-names = "apb_pclk";
			/* Bus interface AHB1 (AHB0) is totally tilted */
			lli-bus-interface-ahb2;
			mem-bus-interface-ahb2;
			memcpy-burst-size = <256>;
			memcpy-bus-width = <32>;
			#dma-cells = <2>;
		};

		display-controller@6a000000 {
			compatible = "cortina,gemini-tvc", "faraday,tve200";
			reg = <0x6a000000 0x1000>;
			interrupts = <13 IRQ_TYPE_EDGE_RISING>;
			resets = <&syscon GEMINI_RESET_TVC>;
			clocks = <&syscon GEMINI_CLK_GATE_TVC>,
				 <&syscon GEMINI_CLK_TVC>;
			clock-names = "PCLK", "TVE";
			pinctrl-names = "default";
			pinctrl-0 = <&tvc_default_pins>;
			status = "disabled";
		};

		usb0: usb@68000000 {
			compatible = "cortina,gemini-usb", "faraday,fotg200";
			reg = <0x68000000 0x1000>;
			interrupts = <10 IRQ_TYPE_LEVEL_HIGH>;
			resets = <&syscon GEMINI_RESET_USB0>;
			clocks = <&syscon GEMINI_CLK_GATE_USB0>;
			clock-names = "PCLK";
			/*
			 * This will claim pins for USB0 and USB1 at the same
			 * time as they are using some common pins. If you for
			 * some reason have a system using USB1 at 96000000 but
			 * NOT using USB0 at 68000000 you wll have to add the
			 * usb_default_pins to the USB controller at 96000000
			 * in your .dts for the board.
			 */
			pinctrl-names = "default";
			pinctrl-0 = <&usb_default_pins>;
			/* Default to host mode */
			dr_mode = "host";
			syscon = <&syscon>;
			status = "disabled";
		};

		usb1: usb@69000000 {
			compatible = "cortina,gemini-usb", "faraday,fotg200";
			reg = <0x69000000 0x1000>;
			interrupts = <11 IRQ_TYPE_LEVEL_HIGH>;
			resets = <&syscon GEMINI_RESET_USB1>;
			clocks = <&syscon GEMINI_CLK_GATE_USB1>;
			clock-names = "PCLK";
			syscon = <&syscon>;
			status = "disabled";
		};
	};
};
