// SPDX-License-Identifier: GPL-2.0

/dts-v1/;

#include "pxa300-raumfeld-common.dtsi"

/ {
	model = "Raumfeld Controller (PXA3xx)";
	compatible = "raumfeld,raumfeld-controller-pxa303", "marvell,pxa300";

	reg_vbatt: regulator-vbatt {
		compatible = "regulator-fixed";
		regulator-name = "vbatt-fixed-supply";
		regulator-min-microvolt = <3700000>;
		regulator-max-microvolt = <3700000>;
		regulator-always-on;
	};

	lcd_supply: regulator-va-tft {
		compatible = "regulator-fixed";
		regulator-name = "va-tft-fixed-supply";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpio 33 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	onewire {
		compatible = "w1-gpio";
		pinctrl-names = "default";
		pinctrl-0 = <&w1_pins>;
		gpios = <
			&gpio 126 GPIO_OPEN_DRAIN	/* W1 I/O	*/
			&gpio 105 GPIO_ACTIVE_HIGH	/* pullup	*/
		>;

		w1_ds2760: slave-ds2760 {
			compatible = "maxim,ds2760";
			power-supplies = <&charger>;
		};
	};

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

	/*
	 * One of the following two will be set to "okay" by the bootloader,
	 * depending on the hardware revision.
	 */
	backlight-controller-pwm {
		compatible = "pwm-backlight";
		pinctrl-names = "default";
		pinctrl-0 = <&pwm0_pins>;
		pwms = <&pwm0 10000>;
		power-supply = <&reg_vbatt>;
		status = "disabled";

		brightness-levels = <
			 0  1  2  3  4  5  6  7  8  9
			10 11 12 13 14 15 16 17 18 19
			20 21 22 23 24 25 26 27 28 29
			30 31 32 33 34 35 36 37 38 39
			40 41 42 43 44 45 46 47 48 49
			50 51 52 53 54 55 56 57 58 59
			60 61 62 63 64 65 66 67 68 69
			70 71 72 73 74 75 76 77 78 79
			80 81 82 83 84 85 86 87 88 89
			90 91 92 93 94 95 96 97 98 99
			100
		>;
		default-brightness-level = <100>;
	};

	backlight-controller {
		compatible = "lltc,lt3593";
		pinctrl-names = "default";
		pinctrl-0 = <&lt3593_pins>;
		lltc,ctrl-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
		status = "disabled";

		led {
			label = "backlight";
			default-state = "on";
		};
	};
};

&reg_va_5v0 {
	status = "disabled";
};

&ethernet {
	status = "disabled";
};

&leds {
	status = "disabled";
};

&dac {
	status = "disabled";
};

&pwm0 {
	status = "okay";
};

&keys {
	dock-detect {
		label = "dock detect";
		gpios = <&gpio 116 GPIO_ACTIVE_HIGH>;
		linux,code = <KEY_F5>;
	};
};

&spi {
	accelerometer@1 {
		compatible = "st,lis302dl-spi";
		pinctrl-names = "default";
		pinctrl-0 = <&lis302_pins>;
		reg = <1>;
		spi-max-frequency = <1000000>;
		interrupt-parent = <&gpio>;
		interrupts = <104 IRQ_TYPE_EDGE_FALLING>;

		st,click-single-x;
		st,click-single-y;
		st,click-single-z;
		st,click-thresh-x = <10>;
		st,click-thresh-y = <10>;
		st,click-thresh-z = <10>;
		st,irq1-click;
		st,irq2-click;
		st,wakeup-x-lo;
		st,wakeup-x-hi;
		st,wakeup-y-lo;
		st,wakeup-y-hi;
		st,wakeup-z-lo;
		st,wakeup-z-hi;
	};
};

&lcdc {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&lcdc_pins>;
	lcd-supply = <&lcd_supply>;

	port {
		lcdc_out: endpoint {
			remote-endpoint = <&panel_in>;
			bus-width = <16>;
		};
	};

	panel {
		compatible = "sharp,lq043t3dx0-panel";
		display-timings {
			native-mode = <&timing0>;
			timing0: timing {
				clock-frequency = <9009000>;
				pixelclk-active = <0>;	/* negative edge */
				hactive = <480>;
				vactive = <272>;
				hsync-len = <41>;
				hback-porch = <2>;
				hfront-porch = <1>;
				vsync-len = <10>;
				vback-porch = <3>;
				vfront-porch = <1>;
			};
		};

		port {
			panel_in: endpoint {
				remote-endpoint = <&lcdc_out>;
			};
		};
	};
};

&gcu {
	status = "okay";
};

&pxai2c1 {
	touchscreen@a {
		compatible = "eeti,exc3000-i2c";
		pinctrl-names = "default";
		pinctrl-0 = <&eeti_ts_pins>;
		reg = <0xa>;
		interrupt-parent = <&gpio>;
		interrupts = <32 IRQ_TYPE_EDGE_RISING>;
		attn-gpios = <&gpio 32 GPIO_ACTIVE_HIGH>;
		touchscreen-inverted-y;
	};
};

&pinctrl {
	lis302_pins: lis302-pins {
		pinctrl-single,pins = <
			MFP_PIN_PXA300(104) MFP_AF0	/* IRQ	*/
		>;
		pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW);
	};

	eeti_ts_pins: eeti-ts-pins {
		pinctrl-single,pins = <
			MFP_PIN_PXA300(32) MFP_AF0	/* IRQ */
		>;
		pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_FLOAT);
	};

	lt3593_pins: lt3593-pins {
		pinctrl-single,pins = <
			MFP_PIN_PXA300(17) MFP_AF0	/* Backlight	*/
		>;
		pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW);
	};

	pwm0_pins: pwm0-pins {
		pinctrl-single,pins = <
			MFP_PIN_PXA300(17) MFP_AF1	/* PWM	*/
		>;
		pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW);
	};

	w1_pins: w1-pins {
		pinctrl-single,pins = <
			MFP_PIN_PXA300(126) MFP_AF0	/* PWM	*/
			MFP_PIN_PXA300(105) MFP_AF0	/* PWM	*/
		>;
		pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_FLOAT);
	};

	lcdc_pins: lcdc-pins {
		pinctrl-single,pins = <
			MFP_PIN_PXA300(54) MFP_AF1	/* LDD_0	*/
			MFP_PIN_PXA300(55) MFP_AF1	/* LDD_1	*/
			MFP_PIN_PXA300(56) MFP_AF1	/* LDD_2	*/
			MFP_PIN_PXA300(57) MFP_AF1	/* LDD_3	*/
			MFP_PIN_PXA300(58) MFP_AF1	/* LDD_4	*/
			MFP_PIN_PXA300(59) MFP_AF1	/* LDD_5	*/
			MFP_PIN_PXA300(60) MFP_AF1	/* LDD_6	*/
			MFP_PIN_PXA300(61) MFP_AF1	/* LDD_7	*/
			MFP_PIN_PXA300(62) MFP_AF1	/* LDD_8	*/
			MFP_PIN_PXA300(63) MFP_AF1	/* LDD_9	*/
			MFP_PIN_PXA300(64) MFP_AF1	/* LDD_10	*/
			MFP_PIN_PXA300(65) MFP_AF1	/* LDD_11	*/
			MFP_PIN_PXA300(66) MFP_AF1	/* LDD_12	*/
			MFP_PIN_PXA300(67) MFP_AF1	/* LDD_13	*/
			MFP_PIN_PXA300(68) MFP_AF1	/* LDD_14	*/
			MFP_PIN_PXA300(69) MFP_AF1	/* LDD_15	*/
			MFP_PIN_PXA300(70) MFP_AF1	/* LDD_16	*/
			MFP_PIN_PXA300(71) MFP_AF1	/* LDD_17	*/
			MFP_PIN_PXA300(72) MFP_AF1	/* LCD_FCLK	*/
			MFP_PIN_PXA300(73) MFP_AF1	/* LCD_LCLK	*/
			MFP_PIN_PXA300(74) MFP_AF1	/* LCD_PCLK	*/
			MFP_PIN_PXA300(75) MFP_AF1	/* LCD_BIAS	*/
		>;
		pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW);
	};
};
