diff --git a/boards/ambiq/apollo510_evb/apollo510_evb-pinctrl.dtsi b/boards/ambiq/apollo510_evb/apollo510_evb-pinctrl.dtsi index 797ce0b96d196..2d31813e6e5ed 100644 --- a/boards/ambiq/apollo510_evb/apollo510_evb-pinctrl.dtsi +++ b/boards/ambiq/apollo510_evb/apollo510_evb-pinctrl.dtsi @@ -380,4 +380,78 @@ drive-strength = "0.5"; }; }; + + sdio0_default: sdio0_default { + group0 { + pinmux = , + , + , + , + , + ; + drive-strength = "1.0"; + }; + group1 { + pinmux = , + , + , + ; + drive-strength = "1.0"; + bias-pull-up; + ambiq,pull-up-ohms = <12000>; + }; + group2 { + pinmux = ; + ambiq,sdif-cdwp = <1>; + }; + group3 { + pinmux = ; + ambiq,sdif-cdwp = <2>; + }; + group4 { + pinmux = ; + ambiq,sdif-cdwp = <3>; + }; + group5 { + pinmux = ; + ambiq,sdif-cdwp = <4>; + }; + }; + + sdio1_default: sdio1_default { + group0 { + pinmux = , + , + , + , + , + ; + drive-strength = "1.0"; + }; + group1 { + pinmux = , + , + , + ; + drive-strength = "1.0"; + bias-pull-up; + ambiq,pull-up-ohms = <12000>; + }; + group2 { + pinmux = ; + ambiq,sdif-cdwp = <1>; + }; + group3 { + pinmux = ; + ambiq,sdif-cdwp = <2>; + }; + group4 { + pinmux = ; + ambiq,sdif-cdwp = <3>; + }; + group5 { + pinmux = ; + ambiq,sdif-cdwp = <4>; + }; + }; }; diff --git a/boards/ambiq/apollo510_evb/apollo510_evb.dts b/boards/ambiq/apollo510_evb/apollo510_evb.dts index 051c409369bd4..3c4cacf7cfbd9 100644 --- a/boards/ambiq/apollo510_evb/apollo510_evb.dts +++ b/boards/ambiq/apollo510_evb/apollo510_evb.dts @@ -199,6 +199,19 @@ }; }; +&sdio0 { + pinctrl-0 = <&sdio0_default>; + pinctrl-names = "default"; + txdelay = <0>; + rxdelay = <0>; + status = "disabled"; + mmc { + compatible = "zephyr,mmc-disk"; + disk-name = "SD2"; + status = "disabled"; + }; +}; + zephyr_udc0: &usb { vddusb33-gpios = <&gpio64_95 27 (GPIO_PULL_UP)>; vddusb0p9-gpios = <&gpio64_95 26 (GPIO_PULL_UP)>; diff --git a/boards/ambiq/apollo510_evb/apollo510_evb.yaml b/boards/ambiq/apollo510_evb/apollo510_evb.yaml index e4cc0a9a4e2b9..99ab36e103395 100644 --- a/boards/ambiq/apollo510_evb/apollo510_evb.yaml +++ b/boards/ambiq/apollo510_evb/apollo510_evb.yaml @@ -20,6 +20,7 @@ supported: - clock_control - usbd - mspi + - sdio testing: ignore_tags: - net diff --git a/dts/arm/ambiq/ambiq_apollo510.dtsi b/dts/arm/ambiq/ambiq_apollo510.dtsi index a6d980c2739c6..58cbdc441e17c 100644 --- a/dts/arm/ambiq/ambiq_apollo510.dtsi +++ b/dts/arm/ambiq/ambiq_apollo510.dtsi @@ -559,6 +559,22 @@ #io-channel-cells = <1>; }; + sdio0: sdio@SDIO0_BASE_NAME { + compatible = "ambiq,sdio"; + reg = ; + interrupts = <26 0>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + + sdio1: sdio@SDIO1_BASE_NAME { + compatible = "ambiq,sdio"; + reg = ; + interrupts = <84 0>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + pinctrl: pin-controller@GPIO_BASE_NAME { compatible = "ambiq,apollo5-pinctrl"; reg = ; diff --git a/samples/subsys/fs/fs_sample/boards/apollo510_evb.conf b/samples/subsys/fs/fs_sample/boards/apollo510_evb.conf new file mode 100644 index 0000000000000..dd0e39f6b3788 --- /dev/null +++ b/samples/subsys/fs/fs_sample/boards/apollo510_evb.conf @@ -0,0 +1,11 @@ +CONFIG_DISK_DRIVER_MMC=y +CONFIG_MMC_STACK=y +CONFIG_SDHC=y +CONFIG_MMC_SUBSYS=y + +CONFIG_MAIN_STACK_SIZE=8192 +CONFIG_IDLE_STACK_SIZE=4096 +CONFIG_AMBIQ_SDIO_ASYNC=y +CONFIG_PM=y +CONFIG_PM_DEVICE=y +CONFIG_PM_DEVICE_RUNTIME=y diff --git a/samples/subsys/fs/fs_sample/boards/apollo510_evb.overlay b/samples/subsys/fs/fs_sample/boards/apollo510_evb.overlay new file mode 100644 index 0000000000000..8818c6d5f5850 --- /dev/null +++ b/samples/subsys/fs/fs_sample/boards/apollo510_evb.overlay @@ -0,0 +1,18 @@ +/* + * Copyright (C) 2025 Ambiq Micro Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + aliases { + sdhc0 = &sdio0; + }; +}; + +&sdio0 { + status = "okay"; + mmc { + status = "okay"; + }; +};