I am interfacing with a dsp that we have programmed and there are only options for slot widths of 16 or 32 bits but we are using a 24 bit data format. When I record using arecord -v -f S32_LE -r 48000 -t wav -c4 /home/nyquist/test.wav I get valid audio recording but the lower 8bits is 0 as would be expected. When I record using : arecord -v -f S24_LE -r 48000 -t wav -c4 /home/nyquist/test.wav I get garbage as it appears to be using 24bit wide tdm slots. My overlay is below and I have set what I believe are the correct slot configurations for the device. We have 4 channel input and one channel output 32bit slot width. Any help would be greatly appreciated as I am sure I am missing something. /dts-v1/; /plugin/; #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/pinctrl/am33xx.h> #include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/input/linux-event-codes.h> / { compatible = "ti,beaglebone", "ti,beaglebone-black", "ti,beaglebone-green"; /* identification */ part-number = "NQ-ASB-01"; version = "00A0", "A0"; fragment@0 { target = <&am33xx_pinmux>; __overlay__ { bone_audio_cape_audio_pins: pinmux_bone_audio_cape_audio_pins { pinctrl-single,pins = < 0x190 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_aclkx.mcasp0_aclkx */ 0x194 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_fsx.mcasp0_fsx, INPUT */ 0x198 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* mcasp0_axr0.mcasp0_axr0 */ 0x19c (PIN_INPUT_PULLDOWN | MUX_MODE2) /* mcasp0_ahclkr.mcasp0_axr2 */ 0x1ac (PIN_INPUT_PULLDOWN | MUX_MODE0) /* MCASP0_AHCLKX -> MCASP0_AHCLKX (I2S_MCLK_OUT)- in */ 0x06c ( PIN_OUTPUT_PULLUP | MUX_MODE7 ) /* mcasp0_axr1 GPIO1_27 | OUTPUT | PULLUP */ >; }; /* dsp SPI Pins */ bb_spi0_pins: pinmux_bb_spi0_pins { pinctrl-single,pins = < 0x150 0x30 /* p84 spi0_sclk.spi0_sclk, INPUT_PULLUP | MODE0 */ 0x154 0x30 /* p85 spi0_d0.spi0_d0, INPUT_PULLUP | MODE0 */ 0x158 0x10 /* p86 spi0_d1.spi0_d1, OUTPUT_PULLUP | MODE0 */ 0x15c 0x10 /* p87 spi0_cs0.spi0_cs0, OUTPUT_PULLUP | MODE0 */ >; }; }; }; /* Relay Spi Interface */ fragment@1 { target = <&spi0>; __overlay__ { #address-cells = <1>; #size-cells = <0>; status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&bb_spi0_pins>; ti,pio-mode; /* disable dma when used as an overlay, dma gets stuck at 160 bits... */ ti,pindir-d0-out-d1-in = <1>; dspspi: channel@0 { #address-cells = <1>; #size-cells = <0>; #sound-dai-cells = <0>; compatible = "nq,dsp"; reg = <0>; spi-max-frequency = <16000000>; spi-cpha; }; }; }; /* MCASP Interface */ fragment@2 { target = <&mcasp0>; __overlay__ { #sound-dai-cells = <0>; compatible = "ti,am33xx-mcasp-audio"; pinctrl-names = "default"; pinctrl-0 = <&bone_audio_cape_audio_pins>; status = "okay"; op-mode = <0>; /* MCASP_IIS_MODE */ tdm-slots = <4>; serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */ 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 >; tx-num-evt = <1>; rx-num-evt = <1>; }; }; /*Sound Interface Config */ fragment@3 { target-path="/"; __overlay__ { sound { compatible = "simple-audio-card"; simple-audio-card,name = "Nyquist Mixer DSP"; simple-audio-card,format = "dsp_a"; simple-audio-card,bitclock-master = <&sound_master>; simple-audio-card,frame-master = <&sound_master>; simple-audio-card,widgets = "Line", "Line In"; simple-audio-card,cpu { sound-dai = <&mcasp0>; dai-tdm-slot-num = <4>; dai-tdm-slot-width = <32>; dai-tdm-slot-tx-mask = <1 0 0 0>; dai-tdm-slot-rx-mask = <1 1 1 1>; }; sound_master: simple-audio-card,codec { sound-dai = <&dspspi>; dai-tdm-slot-num = <4>; dai-tdm-slot-width = <32>; dai-tdm-slot-tx-mask = <1 0 0 0>; dai-tdm-slot-rx-mask = <1 1 1 1>; }; }; }; }; }; Ed McNicholas Sr Embedded Engineer [Bogen Signature Logo]<http://www.bogen.com/> Bogen Communications, Inc. 3862 Quadrangle Blvd Suite 150 Orlando, FL 32817 Direct: (201) 995-2087 Cell: (321) 217-5518
_______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel