Page 1 of 1

Luckfox Pico Ultra W怎样使用I2S设备

Posted: 2025-08-14 10:21
by seventeen
我现在想用I2S0来驱动INMP441,我修改了rv1106g-luckfox-pico-ultra-w.dts文件,编译通过后执行arecord -l,无法找到INMP441,以下是我的设备树文件,我如果想实现INMP441的使用,我应该怎样修改

Code: Select all

// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2022 Rockchip Electronics Co., Ltd.
 */

/dts-v1/;
#include "rv1106.dtsi"
#include "rv1106-luckfox-pico-ultra-ipc.dtsi"
#include <dt-bindings/input/input.h>
#include <dt-bindings/display/media-bus-format.h>

/ {
	model = "Luckfox Pico Ultra W";
	compatible = "rockchip,rv1103g-38x38-ipc-v10", "rockchip,rv1106g3";

	restart-poweroff {
		compatible = "restart-poweroff";
	};

	sdio_pwrseq: sdio-pwrseq {
		compatible = "mmc-pwrseq-simple";
		pinctrl-names = "default";
		reset-gpios = <&gpio1 RK_PA2 GPIO_ACTIVE_LOW>;
	};

	wireless_bluetooth: wireless-bluetooth {
		compatible = "bluetooth-platdata";
		uart_rts_gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
		pinctrl-names = "default", "rts_gpio";
		pinctrl-0 = <&uart1m0_rtsn>;
		pinctrl-1 = <&uart1_gpios>;
		BT,wake_gpio     = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
		BT,wake_host_irq = <&gpio1 RK_PA2 GPIO_ACTIVE_HIGH>;
		status = "okay";
	};

	/* 定义 INMP441 音频链路 */
    inmp441_sound: inmp441-sound {
        compatible = "simple-audio-card";
        simple-audio-card,name = "INMP441-I2S";  
        simple-audio-card,format = "i2s";  
        simple-audio-card,mclk-fs = <256>;  
        simple-audio-card,bitclock-master = <&i2s_cpu>;  
        simple-audio-card,frame-master = <&i2s_cpu>;  

        i2s_cpu: simple-audio-card,cpu {
            sound-dai = <&i2s0_8ch>; 
        };

        simple-audio-card,codec {
            sound-dai = <&inmp441>; 
        };
    };

    inmp441: inmp441 {
		compatible = "simple-audio-codec";
		#sound-dai-cells = <0>;
		status = "okay";
	};
};

/**********CRU**********/
//&cru {
//	assigned-clocks =
//		<&cru PLL_GPLL>, <&cru PLL_CPLL>,
//		<&cru ARMCLK>,
//		<&cru ACLK_PERI_ROOT>, <&cru HCLK_PERI_ROOT>,
//		<&cru PCLK_PERI_ROOT>, <&cru ACLK_BUS_ROOT>,
//		<&cru PCLK_TOP_ROOT>, <&cru PCLK_PMU_ROOT>,
//		<&cru HCLK_PMU_ROOT>, <&cru CLK_500M_SRC>;
//	assigned-clock-rates =
//		<1188000000>, <700000000>,
//		<1104000000>,
//		<400000000>, <200000000>,
//		<100000000>, <300000000>,
//		<100000000>, <100000000>,
//		<200000000>, <700000000>;
//};

/**********NPU**********/
//&npu {
//	assigned-clock-rates = <700000000>;
//};

/**********EMMC**********/
&emmc {
	bus-width = <8>;
	cap-mmc-highspeed;
	non-removable;
	// mmc-hs200-1_8v;
	rockchip,default-sample-phase = <90>;
	no-sdio;
	no-sd;
	memory-region-ecsd = <&mmc_ecsd>;
	post-power-on-delay-ms = <0>;
	status = "okay";
};

&fiq_debugger {
	rockchip,irq-mode-enable = <1>;
	status = "okay";
};

/**********SDIO-WIFI**********/
&sdmmc {
	max-frequency = <50000000>;
	bus-width = <4>;
	cap-sd-highspeed;
	cap-sdio-irq;
	keep-power-in-suspend;
	non-removable;
	rockchip,default-sample-phase = <90>;
	// no-sd;
	// no-mmc;
	supports-sdio;
	mmc-pwrseq = <&sdio_pwrseq>;
	pinctrl-names = "default";
	pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_bus4 &sdmmc0_det>;
	status = "okay";
};

&pinctrl{
	sdmmc0{
		sdmmc0_det: sdmmc0-det {
			rockchip,pins =
				/* sdmmc0_det */
				<3 RK_PA1 1 &pcfg_pull_down>;
		};
	};
};


/**********ETH**********/
&gmac {
	status = "okay";
};

/**********USB**********/
&usbdrd_dwc3 {
	status = "okay";
	dr_mode = "peripheral";
	//dr_mode = "host";
};

/**********RTC**********/
&rtc {
	status = "okay";
};

/**********BT**********/
&uart1 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn>;
};

&pinctrl {
	wireless-bluetooth {
		uart1_gpios: uart1-gpios {
			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};
};

/**********SPI**********/
&spi0 {
	status = "disabled";
	spidev@0 {
		spi-max-frequency = <50000000>;
	};
};

/**********RGB**********/
&panel {
        status = "disabled";
};

&rgb {
        status = "disabled";
};

&rgb_in_vop {
        status = "disabled";
};

&route_rgb {
        status = "disabled";
};

&vop {
        status = "disabled";
};

/**********I2S**********/
&i2s0_8ch {
    #sound-dai-cells = <0>;
    pinctrl-names = "default";
    pinctrl-0 = <&i2s0_pins>;
    assigned-clocks = <&cru MCLK_I2S0_8CH_TX>;
    assigned-clock-rates = <12288000>;
    status = "okay";
};

&pinctrl {
    i2s0 {
        i2s0_pins: i2s0-pins {
            rockchip,pins =
                <2 RK_PA0 1 &pcfg_pull_none>, /* I2S0_SCLK */
                <2 RK_PA1 1 &pcfg_pull_none>, /* I2S0_LRCK_TX */
                <2 RK_PA4 1 &pcfg_pull_none>; /* I2S0_SDIO0 (DIN) */
        };
    };
};

&acodec {
	status = "disabled";
};

Re: Luckfox Pico Ultra W怎样使用I2S设备

Posted: 2025-08-26 3:51
by Crocodile
您好,请检查一下acodec_sound是否也已经disabled, 同时使用iomux命令确定相关的引脚是否复用正确 ,I2S 声卡的适配更多还需要结合内核信息调试。