diff --git a/boards/ambiq/apollo4p_evb/apollo4p_evb.yaml b/boards/ambiq/apollo4p_evb/apollo4p_evb.yaml index b54f5d4150c0b..934a8a0c0aa45 100644 --- a/boards/ambiq/apollo4p_evb/apollo4p_evb.yaml +++ b/boards/ambiq/apollo4p_evb/apollo4p_evb.yaml @@ -18,6 +18,7 @@ supported: - adc - hwinfo - usbd + - sdhc testing: ignore_tags: - net diff --git a/boards/ambiq/apollo510_evb/apollo510_evb-pinctrl.dtsi b/boards/ambiq/apollo510_evb/apollo510_evb-pinctrl.dtsi index 44340242fa319..f96061faed437 100644 --- a/boards/ambiq/apollo510_evb/apollo510_evb-pinctrl.dtsi +++ b/boards/ambiq/apollo510_evb/apollo510_evb-pinctrl.dtsi @@ -405,4 +405,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 71b42a4d23449..012cc98980457 100644 --- a/boards/ambiq/apollo510_evb/apollo510_evb.dts +++ b/boards/ambiq/apollo510_evb/apollo510_evb.dts @@ -199,6 +199,27 @@ }; }; +&sdio0 { + pinctrl-0 = <&sdio0_default>; + pinctrl-names = "default"; + txdelay = <0>; + rxdelay = <0>; + status = "disabled"; + mmc { + compatible = "zephyr,mmc-disk"; + disk-name = "SD2"; + status = "disabled"; + }; +}; + +&sdio1 { + pinctrl-0 = <&sdio1_default>; + pinctrl-names = "default"; + txdelay = <9>; + rxdelay = <11>; + status = "okay"; +}; + 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 ea56c1280e58e..df8e326839894 100644 --- a/boards/ambiq/apollo510_evb/apollo510_evb.yaml +++ b/boards/ambiq/apollo510_evb/apollo510_evb.yaml @@ -22,6 +22,7 @@ supported: - pdm - i2s - mspi + - sdhc testing: ignore_tags: - net diff --git a/dts/arm/ambiq/ambiq_apollo510.dtsi b/dts/arm/ambiq/ambiq_apollo510.dtsi index ad11a31dad989..55719554c4aea 100644 --- a/dts/arm/ambiq/ambiq_apollo510.dtsi +++ b/dts/arm/ambiq/ambiq_apollo510.dtsi @@ -579,6 +579,28 @@ #io-channel-cells = <1>; }; + sdio0: sdio@SDIO0_BASE_NAME { + compatible = "ambiq,sdio"; + reg = ; + interrupts = <26 0>; + max-bus-freq = <96000000>; + min-bus-freq = <375000>; + power-delay-ms = <50>; + status = "disabled"; + zephyr,pm-device-runtime-auto; + }; + + sdio1: sdio@SDIO1_BASE_NAME { + compatible = "ambiq,sdio"; + reg = ; + interrupts = <84 0>; + max-bus-freq = <96000000>; + min-bus-freq = <375000>; + power-delay-ms = <50>; + 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..d373bee8a4ff2 --- /dev/null +++ b/samples/subsys/fs/fs_sample/boards/apollo510_evb.conf @@ -0,0 +1,8 @@ +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 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"; + }; +}; diff --git a/tests/drivers/disk/disk_performance/boards/apollo4p_evb.conf b/tests/drivers/disk/disk_performance/boards/apollo4p_evb.conf new file mode 100644 index 0000000000000..d373bee8a4ff2 --- /dev/null +++ b/tests/drivers/disk/disk_performance/boards/apollo4p_evb.conf @@ -0,0 +1,8 @@ +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 diff --git a/tests/drivers/disk/disk_performance/boards/apollo4p_evb.overlay b/tests/drivers/disk/disk_performance/boards/apollo4p_evb.overlay new file mode 100644 index 0000000000000..8818c6d5f5850 --- /dev/null +++ b/tests/drivers/disk/disk_performance/boards/apollo4p_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"; + }; +}; diff --git a/tests/drivers/disk/disk_performance/boards/apollo510_evb.conf b/tests/drivers/disk/disk_performance/boards/apollo510_evb.conf new file mode 100644 index 0000000000000..d373bee8a4ff2 --- /dev/null +++ b/tests/drivers/disk/disk_performance/boards/apollo510_evb.conf @@ -0,0 +1,8 @@ +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 diff --git a/tests/drivers/disk/disk_performance/boards/apollo510_evb.overlay b/tests/drivers/disk/disk_performance/boards/apollo510_evb.overlay new file mode 100644 index 0000000000000..8818c6d5f5850 --- /dev/null +++ b/tests/drivers/disk/disk_performance/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"; + }; +};