From 22ffba549d788b9dd32d0f4bfcd2d4094010ad59 Mon Sep 17 00:00:00 2001 From: Hao Luo Date: Wed, 23 Apr 2025 10:43:15 +0800 Subject: [PATCH] drivers: ambiq: Add spi/i2c support for apollo510 This commit adds spi and i2c support for apollo510 Signed-off-by: Hao Luo --- .../apollo510_evb/apollo510_evb-pinctrl.dtsi | 117 ++++++++++++ boards/ambiq/apollo510_evb/apollo510_evb.yaml | 2 + dts/arm/ambiq/ambiq_apollo510.dtsi | 178 ++++++++++++++++++ 3 files changed, 297 insertions(+) diff --git a/boards/ambiq/apollo510_evb/apollo510_evb-pinctrl.dtsi b/boards/ambiq/apollo510_evb/apollo510_evb-pinctrl.dtsi index 90164edbad2..44b0f89f6f7 100644 --- a/boards/ambiq/apollo510_evb/apollo510_evb-pinctrl.dtsi +++ b/boards/ambiq/apollo510_evb/apollo510_evb-pinctrl.dtsi @@ -24,6 +24,123 @@ }; }; + i2c0_default: i2c0_default { + group1 { + pinmux = , ; + drive-open-drain; + drive-strength = "0.5"; + bias-pull-up; + }; + }; + + i2c1_default: i2c1_default { + group1 { + pinmux = , ; + drive-open-drain; + drive-strength = "0.5"; + bias-pull-up; + }; + }; + + i2c2_default: i2c2_default { + group1 { + pinmux = , ; + drive-open-drain; + drive-strength = "0.5"; + bias-pull-up; + }; + }; + + i2c3_default: i2c3_default { + group1 { + pinmux = , ; + drive-open-drain; + drive-strength = "0.5"; + bias-pull-up; + }; + }; + + i2c5_default: i2c5_default { + group1 { + pinmux = , ; + drive-open-drain; + drive-strength = "0.5"; + bias-pull-up; + }; + }; + + i2c6_default: i2c6_default { + group1 { + pinmux = , ; + drive-open-drain; + drive-strength = "0.5"; + bias-pull-up; + }; + }; + + i2c7_default: i2c7_default { + group1 { + pinmux = , ; + drive-open-drain; + drive-strength = "0.5"; + bias-pull-up; + }; + }; + + spid0_default: spid0_default { + group1 { + pinmux = , , , ; + }; + }; + + spi0_default: spi0_default { + group1 { + pinmux = , , ; + }; + }; + + spi1_default: spi1_default { + group1 { + pinmux = , , ; + }; + }; + + spi2_default: spi2_default { + group1 { + pinmux = , , ; + }; + }; + + spi3_default: spi3_default { + group1 { + pinmux = , , ; + }; + }; + + spi4_default: spi4_default { + group1 { + pinmux = , , ; + }; + }; + + spi5_default: spi5_default { + group1 { + pinmux = , , ; + }; + }; + + spi6_default: spi6_default { + group1 { + pinmux = , , ; + }; + }; + + spi7_default: spi7_default { + group1 { + pinmux = , , ; + }; + }; + mspi0_default: mspi0_default { group0 { pinmux = , diff --git a/boards/ambiq/apollo510_evb/apollo510_evb.yaml b/boards/ambiq/apollo510_evb/apollo510_evb.yaml index 88d1a43dbaa..b56ef04fcb1 100644 --- a/boards/ambiq/apollo510_evb/apollo510_evb.yaml +++ b/boards/ambiq/apollo510_evb/apollo510_evb.yaml @@ -12,6 +12,8 @@ supported: - watchdog - counter - gpio + - spi + - i2c - rtc - clock_control - mspi diff --git a/dts/arm/ambiq/ambiq_apollo510.dtsi b/dts/arm/ambiq/ambiq_apollo510.dtsi index 6b70d577d5b..805a6adc144 100644 --- a/dts/arm/ambiq/ambiq_apollo510.dtsi +++ b/dts/arm/ambiq/ambiq_apollo510.dtsi @@ -291,6 +291,184 @@ status = "disabled"; }; + spid0: spi@IOSLAVE_BASE_NAME { + compatible = "ambiq,spid"; + reg = ; + #address-cells = <1>; + #size-cells = <0>; + interrupts = <4 0>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + + iom0: iom@IOM0_BASE_NAME { + compatible = "ambiq,iom"; + reg = ; + interrupts = <6 0>; + + spi { + compatible = "ambiq,spi"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + i2c { + compatible = "ambiq,i2c"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + }; + + iom1: iom@IOM1_BASE_NAME { + compatible = "ambiq,iom"; + reg = ; + interrupts = <7 0>; + + spi { + compatible = "ambiq,spi"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + i2c { + compatible = "ambiq,i2c"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + }; + + iom2: iom@IOM2_BASE_NAME { + compatible = "ambiq,iom"; + reg = ; + interrupts = <8 0>; + + spi { + compatible = "ambiq,spi"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + i2c { + compatible = "ambiq,i2c"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + }; + + iom3: iom@IOM3_BASE_NAME { + compatible = "ambiq,iom"; + reg = ; + interrupts = <9 0>; + + spi { + compatible = "ambiq,spi"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + i2c { + compatible = "ambiq,i2c"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + }; + + iom4: iom@IOM4_BASE_NAME { + compatible = "ambiq,iom"; + reg = ; + interrupts = <10 0>; + + spi { + compatible = "ambiq,spi"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + i2c { + compatible = "ambiq,i2c"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + }; + + iom5: iom@IOM5_BASE_NAME { + compatible = "ambiq,iom"; + reg = ; + interrupts = <11 0>; + + spi { + compatible = "ambiq,spi"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + i2c { + compatible = "ambiq,i2c"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + }; + + iom6: iom@IOM6_BASE_NAME { + compatible = "ambiq,iom"; + reg = ; + interrupts = <12 0>; + + spi { + compatible = "ambiq,spi"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + i2c { + compatible = "ambiq,i2c"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + }; + + iom7: iom@IOM7_BASE_NAME { + compatible = "ambiq,iom"; + reg = ; + interrupts = <13 0>; + + spi { + compatible = "ambiq,spi"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + i2c { + compatible = "ambiq,i2c"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + }; + uart0: uart@UART0_BASE_NAME { compatible = "ambiq,uart", "arm,pl011"; reg = ;