// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2024 Rockchip Electronics Co., Ltd.
 *
 */

/dts-v1/;

#include <dt-bindings/leds/common.h>
#include "rk3588-coolpi-cm5.dtsi"

/ {
	model = "CoolPi CM5 GenBook";
	compatible = "coolpi,pi-cm5-genbook", "coolpi,pi-cm5", "rockchip,rk3588";

	backlight: backlight {
		compatible = "pwm-backlight";
		enable-gpios = <&gpio4 RK_PA3 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&bl_en>;
		power-supply = <&vcc12v_dcin>;
		pwms = <&pwm6 0 25000 0>;
	};

	battery: battery {
		compatible = "simple-battery";
		charge-full-design-microamp-hours = <9800000>;
		voltage-max-design-microvolt = <4350000>;
		voltage-min-design-microvolt = <3000000>;
	};

	charger: dc-charger {
		compatible = "gpio-charger";
		charger-type = "mains";
		gpios = <&gpio1 RK_PC0 GPIO_ACTIVE_LOW>;
	};

	leds: leds {
		compatible = "gpio-leds";

		heartbeat_led: led-0 {
			color = <LED_COLOR_ID_GREEN>;
			function = LED_FUNCTION_STATUS;
			gpios = <&gpio1 RK_PB0 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
		};

		wlan_led: led-1 {
			color = <LED_COLOR_ID_GREEN>;
			function = LED_FUNCTION_WLAN;
			gpios = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>;
		};

		charging_red: led-2 {
			function = LED_FUNCTION_CHARGING;
			color = <LED_COLOR_ID_RED>;
			gpios = <&gpio3 RK_PD2 GPIO_ACTIVE_HIGH>;
		};
	};

	vcc12v_dcin: vcc12v-dcin-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc12v_dcin";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <12000000>;
		regulator-max-microvolt = <12000000>;
	};

	vcc_sys: vcc-sys-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc_sys";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <7000000>;
		regulator-max-microvolt = <7000000>;
		vin-supply = <&vcc12v_dcin>;
	};

	vcc5v0_sys: vcc5v0-sys-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc5v0_sys";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <7000000>;
		regulator-max-microvolt = <7000000>;
		vin-supply = <&vcc_sys>;
	};

	vcc3v3_sys: vcc3v3-sys-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc3v3_sys";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		vin-supply = <&vcc5v0_sys>;
	};

	vcc3v3_lcd: vcc3v3-lcd-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc3v3_lcd";
		enable-active-high;
		gpio = <&gpio1 RK_PC4 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&lcdpwr_en>;
		vin-supply = <&vcc3v3_sys>;
	};

	vcc5v0_usb: vcc5v0-usb-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc5v0_usb";
		regulator-boot-on;
		regulator-always-on;
		enable-active-high;
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpio1 RK_PD5 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&usb_pwren>;
		vin-supply = <&vcc_sys>;
	};

	vcc5v0_usb_host0: vcc5v0_usb30_host: vcc5v0-usb-host-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc5v0_host";
		regulator-boot-on;
		regulator-always-on;
		enable-active-high;
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpio1 RK_PA7 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&usb_host_pwren>;
		vin-supply = <&vcc5v0_usb>;
	};
};

&i2c4 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&i2c4m3_xfer>;

	cw2015@62 {
		compatible = "cellwise,cw2015";
		reg = <0x62>;

		cellwise,battery-profile = /bits/ 8 <
			0x17 0x67 0x69 0x63 0x63 0x62 0x62 0x5F
			0x52 0x73 0x4C 0x5A 0x5B 0x4B 0x42 0x3A
			0x33 0x2D 0x29 0x28 0x2E 0x31 0x3C 0x49
			0x2C 0x2C 0x0C 0xCD 0x30 0x51 0x50 0x66
			0x74 0x74 0x75 0x78 0x41 0x1B 0x84 0x5F
			0x0B 0x34 0x1C 0x45 0x89 0x92 0xA0 0x13
			0x2C 0x55 0xAB 0xCB 0x80 0x5E 0x7B 0xCB
			0x2F 0x00 0x64 0xA5 0xB5 0x10 0x18 0x21
			>;

		cellwise,monitor-interval-ms = <3000>;
		monitored-battery = <&battery>;
		power-supplies = <&charger>;
	};
};

&i2c5 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&i2c5m3_xfer>;

	touchpad: touchpad@2c {
		compatible = "hid-over-i2c";
		reg = <0x2c>;
		interrupt-parent = <&gpio1>;
		interrupts = <RK_PD6 IRQ_TYPE_LEVEL_LOW>;
		hid-descr-addr = <0x0020>;
	};
};

&gmac0 {
	status = "disabled";
};

/* M.2 E-Key */
&pcie2x1l0 {
	reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;
	vpcie3v3-supply = <&vcc3v3_sys>;
	pinctrl-names = "default";
	pinctrl-0 = <&pcie_clkreq &pcie_wake &pcie_rst &wifi_pwron &bt_pwron>;
	status = "okay";
};

&pcie2x1l2 {
	status = "disabled";
};

&pcie30phy {
	status = "okay";
};

/* M.2 M-Key ssd */
&pcie3x4 {
	reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
	vpcie3v3-supply = <&vcc3v3_sys>;
	status = "okay";
};

&pinctrl {
	lcd {
		lcdpwr_en: lcdpwr-en {
			rockchip,pins = <1 RK_PC4 RK_FUNC_GPIO &pcfg_pull_down>;
		};

		bl_en: bl-en {
			rockchip,pins = <4 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	usb {
		usb_pwren: usb-pwren {
			rockchip,pins = <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>;
		};

		usb_otg_pwren: usb-otg-pwren {
			rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
		};

		usb_host_pwren: usb-host-pwren {
			rockchip,pins = <1 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};

	wifi {
		bt_pwron: bt-pwron {
			rockchip,pins = <3 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>;
		};

		pcie_clkreq: pcie-clkreq {
			rockchip,pins = <4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
		};

		pcie_rst: pcie-rst {
			rockchip,pins = <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
		};

		wifi_pwron: wifi-pwron {
			rockchip,pins = <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>;
		};

		pcie_wake: pcie-wake {
			rockchip,pins = <4 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};
};

&pwm6 {
	pinctrl-0 = <&pwm6m1_pins>;
	status = "okay";
};

&sdmmc {
	status = "disabled";
};

&sfc {
	pinctrl-names = "default";
	pinctrl-0 = <&fspim2_pins>;
	status = "okay";

	flash@0 {
		compatible = "jedec,spi-nor";
		reg = <0x0>;
		spi-max-frequency = <100000000>;
		spi-rx-bus-width = <4>;
		spi-tx-bus-width = <1>;
	};
};

&u2phy0 {
	status = "okay";
};

&u2phy0_otg {
	status = "okay";
};

&usbdp_phy0 {
	status = "okay";
};

&u2phy1 {
	status = "okay";
};

&u2phy1_otg {
	status = "okay";
};

&u2phy2 {
	status = "okay";
};

&u2phy3 {
	status = "okay";
};

&u2phy2_host {
	phy-supply = <&vcc5v0_usb_host0>;
	status = "okay";
};

&u2phy3_host {
	phy-supply = <&vcc5v0_usb>;
	status = "okay";
};

&usbdp_phy1 {
	status = "okay";
};

/* For Keypad */
&usb_host0_ehci {
	status = "okay";
};

&usb_host0_ohci {
	status = "okay";
};

/* Type C port */
&usb_host0_xhci {
	dr_mode = "peripheral";
	maximum-speed = "high-speed";
	status = "okay";
};

/* connected to a HUB for camera and BT */
&usb_host1_ehci {
	status = "okay";
};

&usb_host1_ohci {
	status = "okay";
};

/* USB A out */
&usb_host1_xhci {
	dr_mode = "host";
	status = "okay";
};
