/*
 * Copyright (c) 2023 Vestas Wind Systems A/S
 *
 * SPDX-License-Identifier: Apache-2.0
*/

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

/ {
     zephyr,user {
             output-high-gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
             output-low-gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>;
             input-gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>;
     };
};

&gpio0 {
	hog1 {
		gpio-hog;
		gpios = <1 GPIO_ACTIVE_LOW>;
		output-high;
	};

	hog2 {
		gpio-hog;
		gpios = <2 GPIO_ACTIVE_HIGH>;
		output-low;
	};

	hog3 {
		gpio-hog;
		gpios = <3 GPIO_ACTIVE_HIGH>;
		input;
	};
};
