// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
 * Copyright (C) 2021 StarFive Technology Co., Ltd.
 * Copyright (C) 2021 Emil Renner Berthing <kernel@esmil.dk>
 */

/dts-v1/;
#include "jh7100.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/pinctrl/pinctrl-starfive-jh7100.h>

/ {
	aliases {
		serial0 = &uart3;
	};

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

	cpus {
		timebase-frequency = <6250000>;
	};

	memory@80000000 {
		device_type = "memory";
		reg = <0x0 0x80000000 0x2 0x0>;
	};

	leds {
		compatible = "gpio-leds";

		led-ack {
			gpios = <&gpio 43 GPIO_ACTIVE_HIGH>;
			color = <LED_COLOR_ID_GREEN>;
			function = LED_FUNCTION_HEARTBEAT;
			linux,default-trigger = "heartbeat";
			label = "ack";
		};
	};
};

&gpio {
	i2c0_pins: i2c0-0 {
		i2c-pins {
			pinmux = <GPIOMUX(62, GPO_LOW,
				  GPO_I2C0_PAD_SCK_OEN,
				  GPI_I2C0_PAD_SCK_IN)>,
				 <GPIOMUX(61, GPO_LOW,
				  GPO_I2C0_PAD_SDA_OEN,
				  GPI_I2C0_PAD_SDA_IN)>;
			bias-disable; /* external pull-up */
			input-enable;
			input-schmitt-enable;
		};
	};

	i2c1_pins: i2c1-0 {
		i2c-pins {
			pinmux = <GPIOMUX(47, GPO_LOW,
				  GPO_I2C1_PAD_SCK_OEN,
				  GPI_I2C1_PAD_SCK_IN)>,
				 <GPIOMUX(48, GPO_LOW,
				  GPO_I2C1_PAD_SDA_OEN,
				  GPI_I2C1_PAD_SDA_IN)>;
			bias-pull-up;
			input-enable;
			input-schmitt-enable;
		};
	};

	i2c2_pins: i2c2-0 {
		i2c-pins {
			pinmux = <GPIOMUX(60, GPO_LOW,
				  GPO_I2C2_PAD_SCK_OEN,
				  GPI_I2C2_PAD_SCK_IN)>,
				 <GPIOMUX(59, GPO_LOW,
				  GPO_I2C2_PAD_SDA_OEN,
				  GPI_I2C2_PAD_SDA_IN)>;
			bias-disable; /* external pull-up */
			input-enable;
			input-schmitt-enable;
		};
	};

	uart3_pins: uart3-0 {
		rx-pins {
			pinmux = <GPIOMUX(13, GPO_LOW, GPO_DISABLE,
				  GPI_UART3_PAD_SIN)>;
			bias-pull-up;
			drive-strength = <14>;
			input-enable;
			input-schmitt-enable;
			slew-rate = <0>;
		};
		tx-pins {
			pinmux = <GPIOMUX(14, GPO_UART3_PAD_SOUT,
				  GPO_ENABLE, GPI_NONE)>;
			bias-disable;
			drive-strength = <35>;
			input-disable;
			input-schmitt-disable;
			slew-rate = <0>;
		};
	};
};

&i2c0 {
	clock-frequency = <100000>;
	i2c-sda-hold-time-ns = <300>;
	i2c-sda-falling-time-ns = <500>;
	i2c-scl-falling-time-ns = <500>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c0_pins>;
	status = "okay";

	pmic@5e {
		compatible = "ti,tps65086";
		reg = <0x5e>;
		gpio-controller;
		#gpio-cells = <2>;

		regulators {
		};
	};
};

&i2c1 {
	clock-frequency = <400000>;
	i2c-sda-hold-time-ns = <300>;
	i2c-sda-falling-time-ns = <100>;
	i2c-scl-falling-time-ns = <100>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c1_pins>;
	status = "okay";
};

&i2c2 {
	clock-frequency = <100000>;
	i2c-sda-hold-time-ns = <300>;
	i2c-sda-falling-time-ns = <500>;
	i2c-scl-falling-time-ns = <500>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c2_pins>;
	status = "okay";
};

&osc_sys {
	clock-frequency = <25000000>;
};

&osc_aud {
	clock-frequency = <27000000>;
};

&uart3 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart3_pins>;
	status = "okay";
};