/ {
	/* Short TL_Key3 (J6 pin 31) to ground (J4 pin 3, 5, 9) */
	key_pool {
		compatible = "gpio-keys";

		inp {
			gpios = <&gpiod 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>,
					<&gpiod 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
		};
	};

	key_matrix {
		compatible = "gpio-keys";

		col {
			gpios = <&gpiod 5 GPIO_ACTIVE_HIGH>,
					<&gpiod 7 GPIO_ACTIVE_HIGH>;
		};

		row {
			gpios = <&gpiod 4 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>,
					<&gpiod 6 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>;
		};
	};

	led_pool {
		compatible = "gpio-leds";

		out {
			gpios = <&gpioc 3 GPIO_ACTIVE_HIGH>;
		};
	};

	pwm_pool {
		compatible = "pwm-leds";
		out {
			pwms = <&pwm0 2 PWM_MSEC(20) PWM_POLARITY_NORMAL>,
					<&pwm0 0 PWM_MSEC(20) PWM_POLARITY_NORMAL>,
					<&pwm0 1 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
		};
	};
};

&pwm0 {
	/* On board RGB LEDs */
	pinctrl-ch0 = <&pwm_ch0_pc1_default>;
	pinctrl-ch2 = <&pwm_ch1_pc0_default>;
	pinctrl-ch1 = <&pwm_ch2_pc2_default>;
};

&pinctrl {
	pwm_ch0_pc1_default: pwm_ch0_pc1_default {
		pinmux = <B9x_PINMUX_SET(B9x_PORT_C, B9x_PIN_1, B95_FUNC_PWM0)>;
	};
	pwm_ch1_pc0_default: pwm_ch1_pc0_default {
		pinmux = <B9x_PINMUX_SET(B9x_PORT_C, B9x_PIN_0, B95_FUNC_PWM1)>;
	};
	pwm_ch2_pc2_default: pwm_ch2_pc2_default {
		pinmux = <B9x_PINMUX_SET(B9x_PORT_C, B9x_PIN_2, B95_FUNC_PWM2)>;
	};
};
