// SPDX-License-Identifier: GPL-2.0
/*
 * Tesla Full Self-Driving SoC device tree source
 *
 * Copyright (c) 2017-2021 Samsung Electronics Co., Ltd.
 *		https://www.samsung.com
 * Copyright (c) 2017-2021 Tesla, Inc.
 *		https://www.tesla.com
 */

#include "fsd-pinctrl.h"

&pinctrl_fsys0 {
	gpf0: gpf0-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpf1: gpf1-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpf6: gpf6-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpf4: gpf4-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpf5: gpf5-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	ufs_rst_n: ufs-rst-n-pins {
		samsung,pins = "gpf5-0";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_DOWN>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	ufs_refclk_out: ufs-refclk-out-pins {
		samsung,pins = "gpf5-1";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_UP>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};
};

&pinctrl_peric {
	gpc8: gpc8-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpf2: gpf2-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpf3: gpf3-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpd0: gpd0-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpb0: gpb0-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpb1: gpb1-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpb4: gpb4-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpb5: gpb5-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpb6: gpb6-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpb7: gpb7-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpd1: gpd1-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpd2: gpd2-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpd3: gpd3-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpg0: gpg0-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpg1: gpg1-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpg2: gpg2-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpg3: gpg3-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpg4: gpg4-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpg5: gpg5-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpg6: gpg6-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	gpg7: gpg7-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};

	pwm0_out: pwm0-out-pins {
		samsung,pins = "gpb6-1";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_UP>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	pwm1_out: pwm1-out-pins {
		samsung,pins = "gpb6-5";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_UP>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	hs_i2c0_bus: hs-i2c0-bus-pins {
		samsung,pins = "gpb0-0", "gpb0-1";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_UP>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	hs_i2c1_bus: hs-i2c1-bus-pins {
		samsung,pins = "gpb0-2", "gpb0-3";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_UP>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	hs_i2c2_bus: hs-i2c2-bus-pins {
		samsung,pins = "gpb0-4", "gpb0-5";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_UP>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	hs_i2c3_bus: hs-i2c3-bus-pins {
		samsung,pins = "gpb0-6", "gpb0-7";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_UP>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	hs_i2c4_bus: hs-i2c4-bus-pins {
		samsung,pins = "gpb1-0", "gpb1-1";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_UP>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	hs_i2c5_bus: hs-i2c5-bus-pins {
		samsung,pins = "gpb1-2", "gpb1-3";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_UP>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	hs_i2c6_bus: hs-i2c6-bus-pins {
		samsung,pins = "gpb1-4", "gpb1-5";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_UP>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	hs_i2c7_bus: hs-i2c7-bus-pins {
		samsung,pins = "gpb1-6", "gpb1-7";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_UP>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	uart0_data: uart0-data-pins {
		samsung,pins = "gpb7-0", "gpb7-1";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_UP>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	uart1_data: uart1-data-pins {
		samsung,pins = "gpb7-4", "gpb7-5";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_UP>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	spi0_bus: spi0-bus-pins {
		samsung,pins = "gpb4-0", "gpb4-2", "gpb4-3";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_DOWN>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	spi1_bus: spi1-bus-pins {
		samsung,pins = "gpb4-4", "gpb4-6", "gpb4-7";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_DOWN>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	spi2_bus: spi2-bus-pins {
		samsung,pins = "gpb5-0", "gpb5-2", "gpb5-3";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_DOWN>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	m_can0_bus: m-can0-bus-pins {
		samsung,pins = "gpd0-0", "gpd0-1";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_UP>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	m_can1_bus: m-can1-bus-pins {
		samsung,pins = "gpd0-2", "gpd0-3";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_UP>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	m_can2_bus: m-can2-bus-pins {
		samsung,pins = "gpd0-4", "gpd0-5";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_UP>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	m_can3_bus: m-can3-bus-pins {
		samsung,pins = "gpd0-6", "gpd0-7";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_UP>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	i2s0_bus: i2s0-bus-pins {
		samsung,pins = "gpd1-0", "gpd1-1", "gpd1-2", "gpd1-3", "gpd1-4";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_DOWN>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};

	i2s1_bus: i2s1-bus-pins {
		samsung,pins = "gpd2-0", "gpd2-1", "gpd2-2", "gpd2-3", "gpd2-4";
		samsung,pin-function = <FSD_PIN_FUNC_2>;
		samsung,pin-pud = <FSD_PIN_PULL_DOWN>;
		samsung,pin-drv = <FSD_PIN_DRV_LV4>;
	};
};

&pinctrl_pmu {
	gpq0: gpq0-gpio-bank {
		gpio-controller;
		#gpio-cells = <2>;
	};
};