// SPDX-License-Identifier: (GPL-2.0+ or MIT)
// Copyright (C) 2022 Samuel Holland <samuel@sholland.org>

#include <dt-bindings/gpio/gpio.h>

/dts-v1/;

#include "sun20i-d1.dtsi"
#include "sun20i-common-regulators.dtsi"

/ {
	model = "ClockworkPi v3.14 (R-01)";
	compatible = "clockwork,r-01-clockworkpi-v3.14", "allwinner,sun20i-d1";

	aliases {
		ethernet0 = &ap6256;
		serial0 = &uart0;
	};

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

	/*
	 * This regulator is PWM-controlled, but the PWM controller is not
	 * yet supported, so fix the regulator to its default voltage.
	 */
	reg_vdd_cpu: vdd-cpu {
		compatible = "regulator-fixed";
		regulator-name = "vdd-cpu";
		regulator-min-microvolt = <1100000>;
		regulator-max-microvolt = <1100000>;
		vin-supply = <&reg_vcc>;
	};

	wifi_pwrseq: wifi-pwrseq {
		compatible = "mmc-pwrseq-simple";
		reset-gpios = <&pio 6 11 GPIO_ACTIVE_LOW>; /* PG11/GPIO3 */
	};
};

&cpu0 {
	cpu-supply = <&reg_vdd_cpu>;
};

&dcxo {
	clock-frequency = <24000000>;
};

&ehci1 {
	status = "okay";
};

&i2c0 {
	pinctrl-0 = <&i2c0_pb10_pins>;
	pinctrl-names = "default";
	status = "okay";

	axp221: pmic@34 {
		compatible = "x-powers,axp228", "x-powers,axp221";
		reg = <0x34>;
		interrupt-parent = <&pio>;
		interrupts = <4 9 IRQ_TYPE_LEVEL_LOW>; /* PE9/GPIO2 */
		interrupt-controller;
		#interrupt-cells = <1>;

		ac_power_supply: ac-power {
			compatible = "x-powers,axp221-ac-power-supply";
		};

		axp_adc: adc {
			compatible = "x-powers,axp221-adc";
			#io-channel-cells = <1>;
		};

		battery_power_supply: battery-power {
			compatible = "x-powers,axp221-battery-power-supply";
		};

		axp_gpio: gpio {
			compatible = "x-powers,axp221-gpio";
			gpio-controller;
			#gpio-cells = <2>;
		};

		regulators {
			x-powers,dcdc-freq = <3000>;

			reg_dcdc1: dcdc1 {
				regulator-name = "sys-3v3";
				regulator-always-on;
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

			reg_dcdc3: dcdc3 {
				regulator-name = "sys-1v8";
				regulator-always-on;
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
			};

			reg_aldo1: aldo1 {
				regulator-name = "aud-3v3";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

			reg_aldo2: aldo2 {
				regulator-name = "disp-3v3";
				regulator-always-on;
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

			reg_aldo3: aldo3 {
				regulator-name = "vdd-wifi";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
			};

			/* DLDO1 and ELDO1-3 are connected in parallel. */
			reg_dldo1: dldo1 {
				regulator-name = "vbat-wifi-a";
				regulator-always-on;
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

			/* DLDO2-DLDO4 are connected in parallel. */
			reg_dldo2: dldo2 {
				regulator-name = "vcc-3v3-ext-a";
				regulator-always-on;
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

			reg_dldo3: dldo3 {
				regulator-name = "vcc-3v3-ext-b";
				regulator-always-on;
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

			reg_dldo4: dldo4 {
				regulator-name = "vcc-3v3-ext-c";
				regulator-always-on;
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

			reg_eldo1: eldo1 {
				regulator-name = "vbat-wifi-b";
				regulator-always-on;
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

			reg_eldo2: eldo2 {
				regulator-name = "vbat-wifi-c";
				regulator-always-on;
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

			reg_eldo3: eldo3 {
				regulator-name = "vbat-wifi-d";
				regulator-always-on;
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};
		};

		usb_power_supply: usb-power {
			compatible = "x-powers,axp221-usb-power-supply";
			status = "disabled";
		};
	};
};

&mmc0 {
	broken-cd;
	bus-width = <4>;
	disable-wp;
	vmmc-supply = <&reg_dcdc1>;
	vqmmc-supply = <&reg_vcc_3v3>;
	pinctrl-0 = <&mmc0_pins>;
	pinctrl-names = "default";
	status = "okay";
};

&mmc1 {
	bus-width = <4>;
	mmc-pwrseq = <&wifi_pwrseq>;
	non-removable;
	vmmc-supply = <&reg_dldo1>;
	vqmmc-supply = <&reg_aldo3>;
	pinctrl-0 = <&mmc1_pins>;
	pinctrl-names = "default";
	status = "okay";

	ap6256: wifi@1 {
		compatible = "brcm,bcm43456-fmac", "brcm,bcm4329-fmac";
		reg = <1>;
		interrupt-parent = <&pio>;
		interrupts = <6 10 IRQ_TYPE_LEVEL_LOW>; /* PG10/GPIO4 */
		interrupt-names = "host-wake";
	};
};

&ohci1 {
	status = "okay";
};

&pio {
	vcc-pg-supply = <&reg_ldoa>;
};

&uart0 {
	pinctrl-0 = <&uart0_pb8_pins>;
	pinctrl-names = "default";
	status = "okay";
};

&uart1 {
	uart-has-rtscts;
	pinctrl-0 = <&uart1_pg6_pins>, <&uart1_pg8_rts_cts_pins>;
	pinctrl-names = "default";
	status = "okay";

	bluetooth {
		compatible = "brcm,bcm4345c5";
		interrupt-parent = <&pio>;
		interrupts = <6 17 IRQ_TYPE_LEVEL_HIGH>; /* PG17/GPIO6 */
		device-wakeup-gpios = <&pio 6 16 GPIO_ACTIVE_HIGH>; /* PG16/GPIO7 */
		shutdown-gpios = <&pio 6 18 GPIO_ACTIVE_HIGH>; /* PG18/GPIO5 */
		max-speed = <1500000>;
		vbat-supply = <&reg_dldo1>;
		vddio-supply = <&reg_aldo3>;
	};
};

&usb_otg {
	dr_mode = "peripheral";
	status = "okay";
};

&usbphy {
	usb0_vbus_power-supply = <&ac_power_supply>;
	usb1_vbus-supply = <&reg_vcc>;
	status = "okay";
};
