/*
 * Copyright (c) 2023 Ambiq Micro Inc. <www.ambiq.com>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <dt-bindings/pinctrl/ambiq-apollo4-pinctrl.h>

&pinctrl {
	uart0_default: uart0_default {
		group1 {
			pinmux = <UART0TX_P12>;
		};
		group2 {
			pinmux = <UART0RX_P47>;
			input-enable;
		};
	};
	i2c0_default: i2c0_default {
		group1 {
			pinmux = <M0SCL_P5>, <M0SDAWIR3_P6>;
			drive-open-drain;
			drive-strength = "0.5";
			bias-pull-up;
		};
	};
	i2c1_default: i2c1_default {
		group1 {
			pinmux = <M1SCL_P8>, <M1SDAWIR3_P9>;
			drive-open-drain;
			drive-strength = "0.5";
			bias-pull-up;
		};
	};
	i2c2_default: i2c2_default {
		group1 {
			pinmux = <M2SCL_P25>, <M2SDAWIR3_P26>;
			drive-open-drain;
			drive-strength = "0.5";
			bias-pull-up;
		};
	};
	i2c3_default: i2c3_default {
		group1 {
			pinmux = <M3SCL_P31>, <M3SDAWIR3_P32>;
			drive-open-drain;
			drive-strength = "0.5";
			bias-pull-up;
		};
	};
	i2c5_default: i2c5_default {
		group1 {
			pinmux = <M5SCL_P47>, <M5SDAWIR3_P48>;
			drive-open-drain;
			drive-strength = "0.5";
			bias-pull-up;
		};
	};
	i2c6_default: i2c6_default {
		group1 {
			pinmux = <M6SCL_P61>, <M6SDAWIR3_P62>;
			drive-open-drain;
			drive-strength = "0.5";
			bias-pull-up;
		};
	};
	i2c7_default: i2c7_default {
		group1 {
			pinmux = <M7SCL_P22>, <M7SDAWIR3_P23>;
			drive-open-drain;
			drive-strength = "0.5";
			bias-pull-up;
		};
	};

	spi0_default: spi0_default {
		group1 {
			pinmux = <M0SCK_P5>, <M0MISO_P7>, <M0MOSI_P6>;
		};
		group2 {
			pinmux = <NCE72_P72>;
			drive-push-pull;
			ambiq,iom-nce-module = <0>;
		};
	};
	spi1_default: spi1_default {
		group1 {
			pinmux = <M1SCK_P8>, <M1MISO_P10>, <M1MOSI_P9>;
		};
		group2 {
			pinmux = <NCE11_P11>;
			drive-push-pull;
			ambiq,iom-nce-module = <4>;
		};
	};
	spi2_default: spi2_default {
		group1 {
			pinmux = <M2SCK_P25>, <M2MISO_P27>, <M2MOSI_P26>;
		};
		group2 {
			pinmux = <NCE37_P37>;
			drive-push-pull;
			ambiq,iom-nce-module = <8>;
		};
	};
	spi3_default: spi3_default {
		group1 {
			pinmux = <M3SCK_P31>, <M3MISO_P33>, <M3MOSI_P32>;
		};
		group2 {
			pinmux = <NCE85_P85>;
			drive-push-pull;
			ambiq,iom-nce-module = <12>;
		};
	};
	spi4_default: spi4_default {
		group1 {
			pinmux = <M4SCK_P34>, <M4MISO_P36>, <M4MOSI_P35>;
		};
		group2 {
			pinmux = <NCE54_P54>;
			drive-push-pull;
			ambiq,iom-nce-module = <16>;
		};
	};
	spi5_default: spi5_default {
		group1 {
			pinmux = <M5SCK_P47>, <M5MISO_P49>, <M5MOSI_P48>;
		};
		group2 {
			pinmux = <NCE60_P60>;
			drive-push-pull;
			ambiq,iom-nce-module = <20>;
		};
	};
	spi6_default: spi6_default {
		group1 {
			pinmux = <M6SCK_P61>, <M6MISO_P63>, <M6MOSI_P62>;
		};
		group2 {
			pinmux = <NCE30_P30>;
			drive-push-pull;
			ambiq,iom-nce-module = <24>;
		};
	};
	spi7_default: spi7_default {
		group1 {
			pinmux = <M7SCK_P22>, <M7MISO_P24>, <M7MOSI_P23>;
		};
		group2 {
			pinmux = <NCE88_P88>;
			drive-push-pull;
			ambiq,iom-nce-module = <28>;
		};
	};
	mspi0_default: mspi0_default{
		group1 {
			pinmux = <MSPI0_0_P64>,
				 <MSPI0_1_P65>,
				 <MSPI0_8_P72>;
		};
		group2 {
			pinmux = <NCE57_P57>;
			drive-push-pull;
			drive-strength = "0.5";
			ambiq,iom-nce-module = <32>;
		};
	};
	mspi1_default: mspi1_default{
		group1 {
			pinmux = <MSPI1_0_P37>,
				 <MSPI1_1_P38>,
				 <MSPI1_8_P45>;
		};
		group2 {
			pinmux = <NCE56_P56>;
			drive-push-pull;
			drive-strength = "0.5";
			ambiq,iom-nce-module = <34>;
		};
	};
	mspi2_default: mspi2_default{
		group1 {
			pinmux = <MSPI2_0_P74>,
				 <MSPI2_1_P75>,
				 <MSPI2_8_P82>;
		};
		group2 {
			pinmux = <NCE52_P52>;
			drive-push-pull;
			drive-strength = "0.5";
			ambiq,iom-nce-module = <36>;
		};
	};

	xo32m_default: xo32m_default {
		group1 {
			pinmux = <CLKOUT_32M_P46>;
			drive-strength = "0.1";
		};
	};
	xo32k_default: xo32k_default {
		group1 {
			pinmux = <XT32KHZ_P4>;
			drive-strength = "0.1";
		};
	};
};
