[alsa-devel] [PATCH 1/2] ASoC: fsl_ssi: Let it understand mono
Currently there are two variants for the FSL SSI driver:
- fsl_ssi.c is the device tree driver version for the FSL SSI driver (used by PowerPC and i.MX)
- imx-ssi.c is the non device tree version that runs on some i.MX processors that are not yet converted to dt.
Commit 0865a7 (ASoC: imx-ssi: Remove mono support) attempted to fix mono audio playback issue inside imx-ssi.c, which according to 104c22 (ASoC: Revert 'ASoC: imx-ssi: Remove mono support' ) caused problem on another i.MX platform.
The original mono playback issue was later fixed inside the mc13783 codec driver.
As the long term goal is to move other platforms to dt, then fsl_ssi needs to have the same fix for channels_min as in imx-ssi.
Signed-off-by: Fabio Estevam fabio.estevam@freescale.com --- Timur,
Can you please try to play a mono track on your PowerPC platform with these series applied?
sound/soc/fsl/fsl_ssi.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c index 4ed2afd..7768b93 100644 --- a/sound/soc/fsl/fsl_ssi.c +++ b/sound/soc/fsl/fsl_ssi.c @@ -559,14 +559,13 @@ static const struct snd_soc_dai_ops fsl_ssi_dai_ops = { /* Template for the CPU dai driver structure */ static struct snd_soc_dai_driver fsl_ssi_dai_template = { .playback = { - /* The SSI does not support monaural audio. */ - .channels_min = 2, + .channels_min = 1, .channels_max = 2, .rates = FSLSSI_I2S_RATES, .formats = FSLSSI_I2S_FORMATS, }, .capture = { - .channels_min = 2, + .channels_min = 1, .channels_max = 2, .rates = FSLSSI_I2S_RATES, .formats = FSLSSI_I2S_FORMATS,
According to cs4270 datasheet, there is no reference to mono mode.
Signed-off-by: Fabio Estevam fabio.estevam@freescale.com --- sound/soc/codecs/cs4270.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sound/soc/codecs/cs4270.c b/sound/soc/codecs/cs4270.c index 815b53b..8e47798 100644 --- a/sound/soc/codecs/cs4270.c +++ b/sound/soc/codecs/cs4270.c @@ -459,7 +459,7 @@ static struct snd_soc_dai_driver cs4270_dai = { .name = "cs4270-hifi", .playback = { .stream_name = "Playback", - .channels_min = 1, + .channels_min = 2, .channels_max = 2, .rates = SNDRV_PCM_RATE_CONTINUOUS, .rate_min = 4000, @@ -468,7 +468,7 @@ static struct snd_soc_dai_driver cs4270_dai = { }, .capture = { .stream_name = "Capture", - .channels_min = 1, + .channels_min = 2, .channels_max = 2, .rates = SNDRV_PCM_RATE_CONTINUOUS, .rate_min = 4000,
Fabio Estevam wrote:
According to cs4270 datasheet, there is no reference to mono mode.
Signed-off-by: Fabio Estevam fabio.estevam@freescale.com
Acked-by: Timur Tabi timur@freescale.com
Hello all,
I've noticed a strange behaviour. My UAC2 device is recognized correctly during boot, but won't output any sound. Tried restarting alsa, but to no avail.
Removing/inserting the snd-usb-audio module didn't produce any effect.
Only removing/inserting the device physically solved the problem.
I'm on the 3.2.17 kernel, with alsa 1.0.25.
Dmesg output is as follows:
[ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 3.2.17-rt28 (root@debian) (gcc version 4.4.5 (Debian 4.4.5-8) ) #1 PREEMPT RT Thu Aug 23 01:09:05 WEST 2012 [ 0.000000] KERNEL supported cpus: [ 0.000000] AMD AuthenticAMD [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009e800 (usable) [ 0.000000] BIOS-e820: 000000000009e800 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 000000000f7b0000 (usable) [ 0.000000] BIOS-e820: 000000000f7b0000 - 000000000f7b3000 (ACPI NVS) [ 0.000000] BIOS-e820: 000000000f7b3000 - 000000000f7c0000 (ACPI data) [ 0.000000] BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved) [ 0.000000] Notice: NX (Execute Disable) protection missing in CPU! [ 0.000000] DMI not present or invalid. [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] last_pfn = 0xf7b0 max_arch_pfn = 0x100000 [ 0.000000] initial memory mapped : 0 - 01800000 [ 0.000000] Base memory trampoline at [c009d000] 9d000 size 4096 [ 0.000000] init_memory_mapping: 0000000000000000-000000000f7b0000 [ 0.000000] 0000000000 - 0000400000 page 4k [ 0.000000] 0000400000 - 000f400000 page 2M [ 0.000000] 000f400000 - 000f7b0000 page 4k [ 0.000000] kernel direct mapping tables up to f7b0000 @ 17fb000-1800000 [ 0.000000] RAMDISK: 0b7c1000 - 0ba04000 [ 0.000000] ACPI: RSDP 000f6370 00014 (v00 AMDGX3) [ 0.000000] ACPI: RSDT 0f7b3040 00028 (v01 AMDGX3 AWRDACPI 42302E31 AWRD 00000000) [ 0.000000] ACPI: FACP 0f7b30c0 00074 (v01 AMDGX3 AWRDACPI 42302E31 AWRD 00000000) [ 0.000000] ACPI Warning: Invalid length for Pm2ControlBlock: 16, using default 8 (20110623/tbfadt-610) [ 0.000000] ACPI: DSDT 0f7b3180 02C19 (v01 AMDGX3 AWRDACPI 00001000 MSFT 03000000) [ 0.000000] ACPI: FACS 0f7b0000 00040 [ 0.000000] 0MB HIGHMEM available. [ 0.000000] 247MB LOWMEM available. [ 0.000000] mapped low ram: 0 - 0f7b0000 [ 0.000000] low ram: 0 - 0f7b0000 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] Normal 0x00001000 -> 0x0000f7b0 [ 0.000000] HighMem empty [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[2] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009e [ 0.000000] 0: 0x00000100 -> 0x0000f7b0 [ 0.000000] On node 0 totalpages: 63294 [ 0.000000] free_area_init_node: node 0, pgdat c1329a60, node_mem_map cf5bf200 [ 0.000000] DMA zone: 32 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3950 pages, LIFO batch:0 [ 0.000000] Normal zone: 464 pages used for memmap [ 0.000000] Normal zone: 58848 pages, LIFO batch:15 [ 0.000000] ACPI: PM-Timer IO Port: 0x9c10 [ 0.000000] Allocating PCI resources starting at f7c0000 (gap: f7c0000:f0830000) [ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768 [ 0.000000] pcpu-alloc: [0] 0 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 62798 [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.2.17-rt28 root=UUID=db00af1b-7a21-4968-9087-92bb7cb92ee0 ro quiet clocksource=acpi_pm maxcpus=1 [ 0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes) [ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) [ 0.000000] Initializing CPU#0 [ 0.000000] Initializing HighMem for node 0 (00000000:00000000) [ 0.000000] Memory: 244808k/253632k available (2154k kernel code, 8368k reserved, 1101k data, 260k init, 0k highmem) [ 0.000000] virtual kernel memory layout: [ 0.000000] fixmap : 0xfffe5000 - 0xfffff000 ( 104 kB) [ 0.000000] pkmap : 0xff800000 - 0xffc00000 (4096 kB) [ 0.000000] vmalloc : 0xcffb0000 - 0xff7fe000 ( 760 MB) [ 0.000000] lowmem : 0xc0000000 - 0xcf7b0000 ( 247 MB) [ 0.000000] .init : 0xc132e000 - 0xc136f000 ( 260 kB) [ 0.000000] .data : 0xc121ab05 - 0xc132e000 (1101 kB) [ 0.000000] .text : 0xc1000000 - 0xc121ab05 (2154 kB) [ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok. [ 0.000000] NR_IRQS:16 nr_irqs:16 16 [ 0.000000] CPU 0 irqstacks, hard=cf008000 soft=cf00a000 [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 498.079 MHz processor. [ 0.001005] Calibrating delay loop (skipped), value calculated using timer frequency.. 996.15 BogoMIPS (lpj=498079) [ 0.001033] pid_max: default: 32768 minimum: 301 [ 0.001333] Mount-cache hash table entries: 512 [ 0.002233] Initializing cgroup subsys cpuacct [ 0.002252] Initializing cgroup subsys devices [ 0.002266] Initializing cgroup subsys freezer [ 0.002279] Initializing cgroup subsys net_cls [ 0.002396] CPU: Geode(TM) Integrated Processor by AMD PCS stepping 02 [ 0.002469] ACPI: Core revision 20110623 [ 0.012197] ACPI: setting ELCR to 0200 (from 0c20) [ 0.014141] Performance Events: no PMU driver, software events only. [ 0.015182] devtmpfs: initialized [ 0.015938] print_constraints: dummy: [ 0.016206] NET: Registered protocol family 16 [ 0.016615] ACPI: bus type pci registered [ 0.018189] PCI: PCI BIOS revision 2.10 entry at 0xfa980, last bus=0 [ 0.021456] bio: create slab <bio-0> at 0 [ 0.021787] ACPI: Added _OSI(Module Device) [ 0.021802] ACPI: Added _OSI(Processor Device) [ 0.021816] ACPI: Added _OSI(3.0 _SCP Extensions) [ 0.021832] ACPI: Added _OSI(Processor Aggregator Device) [ 0.027790] ACPI: EC: Look up EC in DSDT [ 0.039951] ACPI: Interpreter enabled [ 0.039963] ACPI: (supports S0 S5) [ 0.040055] ACPI: Using PIC for interrupt routing [ 0.056047] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 0.056390] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.057140] pci_root PNP0A03:00: host bridge window [io 0x0000-0x0cf7] [ 0.057162] pci_root PNP0A03:00: host bridge window [io 0x0d00-0xac17] [ 0.057182] pci_root PNP0A03:00: host bridge window [io 0xac20-0xffff] [ 0.057204] pci_root PNP0A03:00: host bridge window [mem 0x000a0000-0x000bffff] [ 0.057225] pci_root PNP0A03:00: host bridge window [mem 0x000c8000-0x000dffff] [ 0.057247] pci_root PNP0A03:00: host bridge window [mem 0x0f7c0000-0xfebfffff] [ 0.057426] pci 0000:00:01.0: [1022:2080] type 0 class 0x000600 [ 0.057589] pci 0000:00:01.0: reg 10: [io 0xac1c-0xac1f] [ 0.057718] pci 0000:00:01.0: reg 14: [io 0x9e00-0x9e07] [ 0.058622] pci 0000:00:01.1: [1022:2081] type 0 class 0x000300 [ 0.059025] pci 0000:00:01.1: reg 10: [mem 0xee000000-0xeeffffff] [ 0.059324] pci 0000:00:01.1: reg 14: [mem 0xefff4000-0xefff7fff] [ 0.059622] pci 0000:00:01.1: reg 18: [mem 0xefff0000-0xefff3fff] [ 0.059919] pci 0000:00:01.1: reg 1c: [mem 0xeffec000-0xeffeffff] [ 0.060270] pci 0000:00:01.1: reg 20: [mem 0xeffe8000-0xeffebfff] [ 0.061183] pci 0000:00:01.2: [1022:2082] type 0 class 0x001010 [ 0.061528] pci 0000:00:01.2: reg 10: [mem 0xefff8000-0xefffbfff] [ 0.063446] pci 0000:00:0c.0: [1033:0035] type 0 class 0x000c03 [ 0.063542] pci 0000:00:0c.0: reg 10: [mem 0xeffff000-0xefffffff] [ 0.063889] pci 0000:00:0c.0: supports D1 D2 [ 0.063907] pci 0000:00:0c.0: PME# supported from D0 D1 D2 D3hot [ 0.063937] pci 0000:00:0c.0: PME# disabled [ 0.064083] pci 0000:00:0c.1: [1033:00e0] type 0 class 0x000c03 [ 0.064179] pci 0000:00:0c.1: reg 10: [mem 0xefffe000-0xefffe0ff] [ 0.064527] pci 0000:00:0c.1: supports D1 D2 [ 0.064544] pci 0000:00:0c.1: PME# supported from D0 D1 D2 D3hot [ 0.064573] pci 0000:00:0c.1: PME# disabled [ 0.064707] pci 0000:00:0d.0: [1106:3053] type 0 class 0x000200 [ 0.064803] pci 0000:00:0d.0: reg 10: [io 0xfc00-0xfcff] [ 0.064866] pci 0000:00:0d.0: reg 14: [mem 0xefffd000-0xefffd0ff] [ 0.065202] pci 0000:00:0d.0: supports D1 D2 [ 0.065220] pci 0000:00:0d.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.065250] pci 0000:00:0d.0: PME# disabled [ 0.065428] pci 0000:00:0f.0: [1022:2090] type 0 class 0x000601 [ 0.065829] pci 0000:00:0f.0: reg 10: [io 0x6000-0x6007] [ 0.066194] pci 0000:00:0f.0: reg 14: [io 0x6100-0x61ff] [ 0.066536] pci 0000:00:0f.0: reg 18: [io 0x6200-0x623f] [ 0.066878] pci 0000:00:0f.0: reg 1c: [io 0x0000-0x001f] [ 0.067227] pci 0000:00:0f.0: reg 20: [io 0x9d00-0x9d7f] [ 0.067587] pci 0000:00:0f.0: reg 24: [io 0x9c00-0x9c3f] [ 0.068320] pci 0000:00:0f.2: [1022:209a] type 0 class 0x000101 [ 0.069710] pci 0000:00:0f.2: reg 20: [io 0xff00-0xff0f] [ 0.070710] pci 0000:00:0f.5: [1022:2095] type 0 class 0x000c03 [ 0.071207] pci 0000:00:0f.5: reg 10: [mem 0xefffc000-0xefffcfff] [ 0.073185] pci 0000:00:0f.5: PME# supported from D0 D3hot D3cold [ 0.073287] pci 0000:00:0f.5: PME# disabled [ 0.073565] pci_bus 0000:00: on NUMA node 0 [ 0.073585] ACPI: PCI Interrupt Routing Table [_SB_.PCI0._PRT] [ 0.074293] pci0000:00: Unable to request _OSC control (_OSC support mask: 0x08) [ 0.084172] ACPI: PCI Interrupt Link [LNKA] (IRQs 5 *10 11) [ 0.084973] ACPI: PCI Interrupt Link [LNKB] (IRQs 5 10 *11) [ 0.085777] ACPI: PCI Interrupt Link [LNKC] (IRQs 5 10 11) *0 [ 0.086568] ACPI: PCI Interrupt Link [LNKD] (IRQs 5 10 11) *0 [ 0.087323] PCI: Using ACPI for IRQ routing [ 0.087339] PCI: pci_cache_line_size set to 32 bytes [ 0.087399] pci 0000:00:01.0: no compatible bridge window for [io 0xac1c-0xac1f] [ 0.087865] reserve RAM buffer: 000000000009e800 - 000000000009ffff [ 0.087884] reserve RAM buffer: 000000000f7b0000 - 000000000fffffff [ 0.088473] Switching to clocksource pit [ 0.088683] pnp: PnP ACPI init [ 0.088741] ACPI: bus type pnp registered [ 0.088741] pnp 00:00: [mem 0x000f0000-0x000fffff] [ 0.088741] pnp 00:00: [mem 0x0f7b0000-0x0f7bffff] [ 0.088741] pnp 00:00: [mem 0xffff0000-0xffffffff] [ 0.088741] pnp 00:00: [mem 0x00000000-0x0009ffff] [ 0.088741] pnp 00:00: [mem 0x00100000-0x0f7affff] [ 0.088741] pnp 00:00: [mem 0xfee00000-0xfee00fff] [ 0.088963] system 00:00: [mem 0x000f0000-0x000fffff] could not be reserved [ 0.088988] system 00:00: [mem 0x0f7b0000-0x0f7bffff] could not be reserved [ 0.089012] system 00:00: [mem 0xffff0000-0xffffffff] has been reserved [ 0.089035] system 00:00: [mem 0x00000000-0x0009ffff] could not be reserved [ 0.089060] system 00:00: [mem 0x00100000-0x0f7affff] could not be reserved [ 0.089084] system 00:00: [mem 0xfee00000-0xfee00fff] has been reserved [ 0.089109] system 00:00: Plug and Play ACPI device, IDs PNP0c01 (active) [ 0.089590] pnp 00:01: [bus 00-ff] [ 0.089607] pnp 00:01: [io 0x0cf8-0x0cff] [ 0.089625] pnp 00:01: [io 0x0000-0x0cf7 window] [ 0.089643] pnp 00:01: [io 0x0d00-0xac17 window] [ 0.089662] pnp 00:01: [io 0xac20-0xffff window] [ 0.089681] pnp 00:01: [mem 0x000a0000-0x000bffff window] [ 0.089700] pnp 00:01: [mem 0x000c8000-0x000dffff window] [ 0.089720] pnp 00:01: [mem 0x0f7c0000-0xfebfffff window] [ 0.089911] pnp 00:01: Plug and Play ACPI device, IDs PNP0a03 (active) [ 0.091114] pnp 00:02: [io 0x0010-0x001f] [ 0.091132] pnp 00:02: [io 0x0022-0x002d] [ 0.091149] pnp 00:02: [io 0x0030-0x003f] [ 0.091166] pnp 00:02: [io 0x0044-0x005f] [ 0.091183] pnp 00:02: [io 0x0062-0x0063] [ 0.091200] pnp 00:02: [io 0x0065-0x006f] [ 0.091216] pnp 00:02: [io 0x0074-0x007f] [ 0.091233] pnp 00:02: [io 0x0091-0x0093] [ 0.091250] pnp 00:02: [io 0x00a2-0x00bf] [ 0.091276] pnp 00:02: [io 0x00e0-0x00ef] [ 0.091293] pnp 00:02: [io 0x0b78-0x0b7b] [ 0.091309] pnp 00:02: [io 0x0f78-0x0f7b] [ 0.091326] pnp 00:02: [io 0x0a78-0x0a7b] [ 0.091343] pnp 00:02: [io 0x0e78-0x0e7b] [ 0.091360] pnp 00:02: [io 0x0bbc-0x0bbf] [ 0.091377] pnp 00:02: [io 0x0fbc-0x0fbf] [ 0.091394] pnp 00:02: [io 0x04d0-0x04d1] [ 0.091491] pnp 00:02: disabling [io 0x0010-0x001f] because it overlaps 0000:00:0f.0 BAR 3 [io 0x0000-0x001f] [ 0.091798] system 00:02: [io 0x0b78-0x0b7b] has been reserved [ 0.091820] system 00:02: [io 0x0f78-0x0f7b] has been reserved [ 0.091843] system 00:02: [io 0x0a78-0x0a7b] has been reserved [ 0.091865] system 00:02: [io 0x0e78-0x0e7b] has been reserved [ 0.091887] system 00:02: [io 0x0bbc-0x0bbf] has been reserved [ 0.091910] system 00:02: [io 0x0fbc-0x0fbf] has been reserved [ 0.091932] system 00:02: [io 0x04d0-0x04d1] has been reserved [ 0.091956] system 00:02: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.092036] pnp 00:03: [dma 4] [ 0.092052] pnp 00:03: [io 0x0000-0x000f] [ 0.092069] pnp 00:03: [io 0x0080-0x0090] [ 0.092086] pnp 00:03: [io 0x0094-0x009f] [ 0.092103] pnp 00:03: [io 0x00c0-0x00df] [ 0.092276] pnp 00:03: Plug and Play ACPI device, IDs PNP0200 (active) [ 0.092348] pnp 00:04: [io 0x0070-0x0073] [ 0.092366] pnp 00:04: [irq 8] [ 0.092606] pnp 00:04: Plug and Play ACPI device, IDs PNP0b00 (active) [ 0.092667] pnp 00:05: [io 0x0061] [ 0.092846] pnp 00:05: Plug and Play ACPI device, IDs PNP0800 (active) [ 0.092907] pnp 00:06: [io 0x00f0-0x00ff] [ 0.092924] pnp 00:06: [irq 13] [ 0.093104] pnp 00:06: Plug and Play ACPI device, IDs PNP0c04 (active) [ 0.095256] pnp 00:07: [io 0x03f8-0x03ff] [ 0.095274] pnp 00:07: [irq 4] [ 0.095736] pnp 00:07: Plug and Play ACPI device, IDs PNP0501 (active) [ 0.096757] pnp 00:08: [io 0x02f8-0x02ff] [ 0.096775] pnp 00:08: [irq 3] [ 0.097168] pnp 00:08: Plug and Play ACPI device, IDs PNP0501 (active) [ 0.098919] pnp 00:09: [io 0x0378-0x037f] [ 0.098936] pnp 00:09: [io 0x0778-0x077b] [ 0.098953] pnp 00:09: [irq 7] [ 0.099337] pnp 00:09: Plug and Play ACPI device, IDs PNP0400 (active) [ 0.099985] pnp: PnP ACPI: found 10 devices [ 0.099998] ACPI: ACPI bus type pnp unregistered [ 0.146822] Switching to clocksource acpi_pm [ 0.146888] PCI: max bus depth: 0 pci_try_num: 1 [ 0.146941] pci 0000:00:0f.0: BAR 3: assigned [io 0x1000-0x101f] [ 0.147039] pci 0000:00:0f.0: BAR 3: set to [io 0x1000-0x101f] (PCI address [0x1000-0x101f]) [ 0.147066] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 0.147086] pci_bus 0000:00: resource 5 [io 0x0d00-0xac17] [ 0.147107] pci_bus 0000:00: resource 6 [io 0xac20-0xffff] [ 0.147127] pci_bus 0000:00: resource 7 [mem 0x000a0000-0x000bffff] [ 0.147149] pci_bus 0000:00: resource 8 [mem 0x000c8000-0x000dffff] [ 0.147170] pci_bus 0000:00: resource 9 [mem 0x0f7c0000-0xfebfffff] [ 0.147365] NET: Registered protocol family 2 [ 0.147596] IP route cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.148092] TCP established hash table entries: 8192 (order: 4, 65536 bytes) [ 0.148344] TCP bind hash table entries: 8192 (order: 5, 196608 bytes) [ 0.149066] TCP: Hash tables configured (established 8192 bind 8192) [ 0.149081] TCP reno registered [ 0.149099] UDP hash table entries: 128 (order: 1, 8192 bytes) [ 0.149172] UDP-Lite hash table entries: 128 (order: 1, 8192 bytes) [ 0.149456] NET: Registered protocol family 1 [ 0.149575] pci 0000:00:01.1: Boot video device [ 0.151825] ACPI: PCI Interrupt Link [LNKC] BIOS reported IRQ 0, using IRQ 11 [ 0.151844] ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11 [ 0.151859] PCI: setting IRQ 11 as level-triggered [ 0.151886] pci 0000:00:0c.0: PCI INT A -> Link[LNKC] -> GSI 11 (level, low) -> IRQ 11 [ 0.151963] pci 0000:00:0c.0: PCI INT A disabled [ 0.152014] pci 0000:00:0c.1: PCI INT A -> Link[LNKC] -> GSI 11 (level, low) -> IRQ 11 [ 0.152136] pci 0000:00:0c.1: PCI INT A disabled [ 0.154327] ACPI: PCI Interrupt Link [LNKD] BIOS reported IRQ 0, using IRQ 10 [ 0.154346] ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 10 [ 0.154360] PCI: setting IRQ 10 as level-triggered [ 0.154386] pci 0000:00:0f.5: PCI INT D -> Link[LNKD] -> GSI 10 (level, low) -> IRQ 10 [ 0.154605] pci 0000:00:0f.5: PCI INT D disabled [ 0.154652] PCI: CLS 32 bytes, default 32 [ 0.154935] Unpacking initramfs... [ 0.624071] Freeing initrd memory: 2316k freed [ 0.627274] scx200: NatSemi SCx200 Driver [ 0.627953] audit: initializing netlink socket (disabled) [ 0.627998] type=2000 audit(1348592489.626:1): initialized [ 0.814907] HugeTLB registered 4 MB page size, pre-allocated 0 pages [ 0.815553] VFS: Disk quotas dquot_6.5.2 [ 0.815610] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 0.816130] msgmni has been set to 482 [ 0.816741] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.816759] io scheduler noop registered [ 0.816772] io scheduler deadline registered [ 0.816834] io scheduler cfq registered (default) [ 0.898318] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.919204] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 0.940086] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A [ 0.962414] 00:07: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 0.983856] 00:08: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A [ 0.985301] i8042: PNP: No PS/2 controller found. Probing ports directly. [ 0.987873] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 0.987904] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 0.989277] rtc_cmos 00:04: RTC can wake from S4 [ 0.989613] rtc_cmos 00:04: rtc core: registered rtc_cmos as rtc0 [ 0.989769] rtc0: alarms up to one day, 242 bytes nvram [ 0.990333] rtc-test rtc-test.0: rtc core: registered test as rtc1 [ 0.990688] rtc-test rtc-test.1: rtc core: registered test as rtc2 [ 0.990717] cpuidle: using governor ladder [ 0.991200] TCP cubic registered [ 0.991365] NET: Registered protocol family 10 [ 0.992100] Mobile IPv6 [ 0.992115] NET: Registered protocol family 17 [ 0.992140] Registering the dns_resolver key type [ 0.992699] registered taskstats version 1 [ 0.993897] rtc_cmos 00:04: setting system clock to 2012-09-25 17:01:30 UTC (1348592490) [ 0.994963] Freeing unused kernel memory: 260k freed [ 0.995576] Write protecting the kernel text: 2156k [ 0.995712] Write protecting the kernel read-only data: 936k [ 1.087364] udev[45]: starting version 164 [ 1.632099] Refined TSC clocksource calibration: 498.050 MHz. [ 1.886435] SCSI subsystem initialized [ 2.404247] libata version 3.00 loaded. [ 2.408866] pata_amd 0000:00:0f.2: version 0.4.1 [ 2.446107] scsi0 : pata_amd [ 2.451097] scsi1 : pata_amd [ 2.454916] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0xff00 irq 14 [ 2.454937] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0xff08 irq 15 [ 2.621389] ata1.00: CFA: TS4GCF133, 20110407, max UDMA/66 [ 2.621411] ata1.00: 7831152 sectors, multi 0: LBA [ 2.621579] ata1.01: ATA-9: INTEL SSDSC2CT120A3, 300i, max UDMA/133 [ 2.621601] ata1.01: 234441648 sectors, multi 16: LBA48 [ 2.628291] ata1.00: configured for UDMA/66 [ 2.647651] ata1.01: configured for UDMA/100 [ 2.648111] scsi 0:0:0:0: Direct-Access ATA TS4GCF133 2011 PQ: 0 ANSI: 5 [ 2.649923] scsi 0:0:1:0: Direct-Access ATA INTEL SSDSC2CT12 300i PQ: 0 ANSI: 5 [ 2.652167] ata2: port disabled--ignoring [ 2.700497] sd 0:0:0:0: [sda] 7831152 512-byte logical blocks: (4.00 GB/3.73 GiB) [ 2.700751] sd 0:0:0:0: [sda] Write Protect is off [ 2.700773] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 2.700886] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA [ 2.704792] sda: sda1 sda2 [ 2.707134] sd 0:0:0:0: [sda] Attached SCSI removable disk [ 2.707369] sd 0:0:1:0: [sdb] 234441648 512-byte logical blocks: (120 GB/111 GiB) [ 2.707701] sd 0:0:1:0: [sdb] Write Protect is off [ 2.707722] sd 0:0:1:0: [sdb] Mode Sense: 00 3a 00 00 [ 2.707834] sd 0:0:1:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 2.793599] ata1: drained 65536 bytes to clear DRQ [ 2.793634] ata1.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen [ 2.793653] ata1.01: BMDMA stat 0x65 [ 2.793673] ata1.01: failed command: READ DMA [ 2.793726] ata1.01: cmd c8/00:08:00:00:00/00:00:00:00:00/f0 tag 0 dma 4096 in [ 2.793738] res 0a/0a:0a:0a:0a:0a/00:00:00:00:00/0a Emask 0x2 (HSM violation) [ 2.796349] ata1.01: status: { DRQ } [ 2.797079] ata1: soft resetting link [ 3.181286] ata1.00: configured for UDMA/66 [ 3.200638] ata1.01: configured for UDMA/100 [ 3.200675] ata1: EH complete [ 3.286076] ata1: drained 65536 bytes to clear DRQ [ 3.286107] ata1.01: limiting speed to UDMA/66:PIO4 [ 3.286131] ata1.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen [ 3.286149] ata1.01: BMDMA stat 0x65 [ 3.286170] ata1.01: failed command: READ DMA [ 3.286222] ata1.01: cmd c8/00:08:00:00:00/00:00:00:00:00/f0 tag 0 dma 4096 in [ 3.286235] res 0a/0a:0a:0a:0a:0a/00:00:00:00:00/0a Emask 0x2 (HSM violation) [ 3.286256] ata1.01: status: { DRQ } [ 3.286928] ata1: soft resetting link [ 3.671283] ata1.00: configured for UDMA/66 [ 3.690657] ata1.01: configured for UDMA/66 [ 3.690694] ata1: EH complete [ 3.691246] ata1.01: limiting speed to UDMA/33:PIO4 [ 3.691270] ata1.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 [ 3.691287] ata1.01: BMDMA stat 0x64 [ 3.691308] ata1.01: failed command: READ DMA [ 3.691360] ata1.01: cmd c8/00:08:00:00:00/00:00:00:00:00/f0 tag 0 dma 4096 in [ 3.691372] res 51/84:00:08:00:00/00:00:00:00:00/f0 Emask 0x10 (ATA bus error) [ 3.691394] ata1.01: status: { DRDY ERR } [ 3.691411] ata1.01: error: { ICRC ABRT } [ 3.692172] ata1: soft resetting link [ 3.872284] ata1.00: configured for UDMA/66 [ 3.875638] ata1.01: configured for UDMA/33 [ 3.875673] ata1: EH complete [ 3.876926] sda: detected capacity change from 0 to 4009549824 [ 3.877005] sdb: unknown partition table [ 3.880353] sdb: detected capacity change from 0 to 120034123776 [ 3.881475] sda: detected capacity change from 0 to 4009549824 [ 3.881581] sd 0:0:1:0: [sdb] Attached SCSI disk [ 3.889290] sdb: detected capacity change from 0 to 120034123776 [ 4.337095] EXT3-fs (sda1): mounted filesystem with ordered data mode [ 4.338238] kjournald starting. Commit interval 5 seconds [ 4.437401] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 [ 4.437420] ata1.00: BMDMA stat 0x64 [ 4.437441] ata1.00: failed command: READ DMA [ 4.437494] ata1.00: cmd c8/00:20:b9:ce:16/00:00:00:00:00/e0 tag 0 dma 16384 in [ 4.437506] res 51/84:00:b9:ce:16/00:00:00:00:00/e0 Emask 0x10 (ATA bus error) [ 4.437528] ata1.00: status: { DRDY ERR } [ 4.437545] ata1.00: error: { ICRC ABRT } [ 4.438277] ata1: soft resetting link [ 4.602281] ata1.00: configured for UDMA/66 [ 4.621638] ata1.01: configured for UDMA/33 [ 4.621705] ata1: EH complete [ 4.623320] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 [ 4.623338] ata1.00: BMDMA stat 0x64 [ 4.623358] ata1.00: failed command: READ DMA [ 4.623410] ata1.00: cmd c8/00:20:b9:ce:16/00:00:00:00:00/e0 tag 0 dma 16384 in [ 4.623422] res 51/84:00:b9:ce:16/00:00:00:00:00/e0 Emask 0x10 (ATA bus error) [ 4.623443] ata1.00: status: { DRDY ERR } [ 4.623460] ata1.00: error: { ICRC ABRT } [ 4.624178] ata1: soft resetting link [ 4.804280] ata1.00: configured for UDMA/66 [ 4.807636] ata1.01: configured for UDMA/33 [ 4.807697] ata1: EH complete [ 4.809308] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 [ 4.809326] ata1.00: BMDMA stat 0x64 [ 4.809345] ata1.00: failed command: READ DMA [ 4.809397] ata1.00: cmd c8/00:20:b9:ce:16/00:00:00:00:00/e0 tag 0 dma 16384 in [ 4.809410] res 51/84:00:b9:ce:16/00:00:00:00:00/e0 Emask 0x10 (ATA bus error) [ 4.809430] ata1.00: status: { DRDY ERR } [ 4.809447] ata1.00: error: { ICRC ABRT } [ 4.810162] ata1: soft resetting link [ 4.990281] ata1.00: configured for UDMA/66 [ 4.993666] ata1.01: configured for UDMA/33 [ 4.993727] ata1: EH complete [ 4.995335] ata1.00: limiting speed to UDMA/44:PIO4 [ 4.995359] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 [ 4.995377] ata1.00: BMDMA stat 0x64 [ 4.995396] ata1.00: failed command: READ DMA [ 4.995448] ata1.00: cmd c8/00:20:b9:ce:16/00:00:00:00:00/e0 tag 0 dma 16384 in [ 4.995461] res 51/84:00:b9:ce:16/00:00:00:00:00/e0 Emask 0x10 (ATA bus error) [ 4.995482] ata1.00: status: { DRDY ERR } [ 4.995498] ata1.00: error: { ICRC ABRT } [ 4.996214] ata1: soft resetting link [ 5.176281] ata1.00: configured for UDMA/44 [ 5.179635] ata1.01: configured for UDMA/33 [ 5.179696] ata1: EH complete [ 5.907794] udev[207]: starting version 164 [ 6.338312] AMD Geode RNG detected [ 6.446634] via_rhine: v1.10-LK1.5.0 2010-10-09 Written by Donald Becker [ 6.500596] ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 10 [ 6.500627] Geode LX AES 0000:00:01.2: PCI INT A -> Link[LNKA] -> GSI 10 (level, low) -> IRQ 10 [ 6.555602] geode-aes: GEODE AES engine enabled. [ 6.558126] ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 11 [ 6.558156] via-rhine 0000:00:0d.0: PCI INT A -> Link[LNKB] -> GSI 11 (level, low) -> IRQ 11 [ 6.558193] via-rhine 0000:00:0d.0: setting latency timer to 64 [ 6.691654] via-rhine 0000:00:0d.0: eth0: VIA Rhine III (Management Adapter) at 0xefffd000, 00:0d:b9:0e:45:90, IRQ 11 [ 6.714784] via-rhine 0000:00:0d.0: eth0: MII PHY found at address 1, status 0x786d advertising 05e1 Link cde1 [ 6.793890] parport_pc 00:09: reported by Plug and Play ACPI [ 6.793978] parport0: PC-style at 0x378, irq 7 [PCSPP,TRISTATE] [ 7.218201] usbcore: registered new interface driver usbfs [ 7.218328] usbcore: registered new interface driver hub [ 7.225371] usbcore: registered new device driver usb [ 7.242280] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 7.242381] ehci_hcd 0000:00:0c.1: PCI INT A -> Link[LNKC] -> GSI 11 (level, low) -> IRQ 11 [ 7.242458] ehci_hcd 0000:00:0c.1: EHCI Host Controller [ 7.242556] ehci_hcd 0000:00:0c.1: new USB bus registered, assigned bus number 1 [ 7.269610] ehci_hcd 0000:00:0c.1: irq 11, io mem 0xefffe000 [ 7.275106] ehci_hcd 0000:00:0c.1: USB 2.0 started, EHCI 1.00 [ 7.275229] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 [ 7.275251] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 7.275269] usb usb1: Product: EHCI Host Controller [ 7.275286] usb usb1: Manufacturer: Linux 3.2.17-rt28 ehci_hcd [ 7.275303] usb usb1: SerialNumber: 0000:00:0c.1 [ 7.276167] hub 1-0:1.0: USB hub found [ 7.276197] hub 1-0:1.0: 3 ports detected [ 7.276592] ehci_hcd 0000:00:0f.5: PCI INT D -> Link[LNKD] -> GSI 10 (level, low) -> IRQ 10 [ 7.276772] ehci_hcd 0000:00:0f.5: setting latency timer to 64 [ 7.276842] ehci_hcd 0000:00:0f.5: EHCI Host Controller [ 7.276894] ehci_hcd 0000:00:0f.5: new USB bus registered, assigned bus number 2 [ 7.306200] ehci_hcd 0000:00:0f.5: irq 10, io mem 0xefffc000 [ 7.312095] ehci_hcd 0000:00:0f.5: USB 2.0 started, EHCI 1.00 [ 7.312219] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002 [ 7.312241] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 7.312260] usb usb2: Product: EHCI Host Controller [ 7.312277] usb usb2: Manufacturer: Linux 3.2.17-rt28 ehci_hcd [ 7.312294] usb usb2: SerialNumber: 0000:00:0f.5 [ 7.313140] hub 2-0:1.0: USB hub found [ 7.313170] hub 2-0:1.0: 4 ports detected [ 7.342138] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 7.342251] ohci_hcd 0000:00:0c.0: PCI INT A -> Link[LNKC] -> GSI 11 (level, low) -> IRQ 11 [ 7.342330] ohci_hcd 0000:00:0c.0: setting latency timer to 64 [ 7.342355] ohci_hcd 0000:00:0c.0: OHCI Host Controller [ 7.342425] ohci_hcd 0000:00:0c.0: new USB bus registered, assigned bus number 3 [ 7.352871] ohci_hcd 0000:00:0c.0: irq 11, io mem 0xeffff000 [ 7.405174] usb usb3: New USB device found, idVendor=1d6b, idProduct=0001 [ 7.405197] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 7.405216] usb usb3: Product: OHCI Host Controller [ 7.405232] usb usb3: Manufacturer: Linux 3.2.17-rt28 ohci_hcd [ 7.405249] usb usb3: SerialNumber: 0000:00:0c.0 [ 7.409455] hub 3-0:1.0: USB hub found [ 7.409486] hub 3-0:1.0: 3 ports detected [ 7.631128] usb 1-2: new high-speed USB device number 2 using ehci_hcd [ 7.746128] usb 1-2: New USB device found, idVendor=249c, idProduct=930b [ 7.746151] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 7.746170] usb 1-2: Product: M2Tech USB Audio 2.0 [ 7.746186] usb 1-2: Manufacturer: M2Tech [ 7.746201] usb 1-2: SerialNumber: 0000 [ 8.924107] cannot get ctl value: req = 0x83, wValue = 0x201, wIndex = 0xa00, type = 4 [ 8.924220] cannot get ctl value: req = 0x83, wValue = 0x200, wIndex = 0xa00, type = 4 [ 8.928883] usbcore: registered new interface driver snd-usb-audio [ 10.210111] EXT3-fs (sda1): using internal journal [ 10.405299] fuse init (API version 7.17) [ 10.472092] w83627hf: w83627hf: Found W83627HF chip at 0x290 [ 10.507657] ppdev: user-space parallel port driver [ 12.080508] EXT4-fs (sdb): mounted filesystem with ordered data mode. Opts: errors=remount-ro [ 13.888730] via-rhine 0000:00:0d.0: eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1 [ 24.418047] eth0: no IPv6 routers present [ 41.926113] CIFS VFS: default security mechanism requested. The default security mechanism will be upgraded from ntlm to ntlmv2 in kernel release 3.3
Fabio Estevam wrote:
Can you please try to play a mono track on your PowerPC platform with these series applied?
I'm pretty sure this won't work. The SSI is programmed to expect a left and right sample. There is no code in fsl_ssi.c for checking the channel count and adjusting the hardware accordingly. I don't see any code like that in imx-ssi.c either, so I don't even know how it's supposed to work.
On Tue, Sep 18, 2012 at 1:14 PM, Timur Tabi timur@freescale.com wrote:
Fabio Estevam wrote:
Can you please try to play a mono track on your PowerPC platform with these series applied?
I'm pretty sure this won't work. The SSI is programmed to expect a left and right sample. There is no code in fsl_ssi.c for checking the channel count and adjusting the hardware accordingly. I don't see any code like that in imx-ssi.c either, so I don't even know how it's supposed to work.
It works for me on mx6qsabrelite.
However, in order to play the mono track at the correct rate I also need:
--- a/sound/soc/codecs/sgtl5000.c +++ b/sound/soc/codecs/sgtl5000.c @@ -938,7 +938,7 @@ static struct snd_soc_dai_driver sgtl5000_dai = { .name = "sgtl5000", .playback = { .stream_name = "Playback", - .channels_min = 1, + .channels_min = 2, .channels_max = 2, /* * only support 8~48K + 96
I would like to understand when channels_min should be set to 1 or 2 in the platform driver (sound/soc/fsl/fsl_ssi.c in this case) or inside the codec. Could anyone clarify this, please?
Currently we have:
channels_min=1 for imx-ssi.c (FSL BSP also does the same) channels_min=2 for fsl_ssi.c
Which one is correct?
Adding Sascha, who originally used 'channels_min=1' for imx-ssi.c.
Regards,
Fabio Estevam
Fabio Estevam wrote:
On Tue, Sep 18, 2012 at 1:14 PM, Timur Tabi timur@freescale.com wrote:
Fabio Estevam wrote:
Can you please try to play a mono track on your PowerPC platform with these series applied?
I'm pretty sure this won't work. The SSI is programmed to expect a left and right sample. There is no code in fsl_ssi.c for checking the channel count and adjusting the hardware accordingly. I don't see any code like that in imx-ssi.c either, so I don't even know how it's supposed to work.
It works for me on mx6qsabrelite.
I just don't see how that's possible.
However, in order to play the mono track at the correct rate I also need:
--- a/sound/soc/codecs/sgtl5000.c +++ b/sound/soc/codecs/sgtl5000.c @@ -938,7 +938,7 @@ static struct snd_soc_dai_driver sgtl5000_dai = { .name = "sgtl5000", .playback = { .stream_name = "Playback",
.channels_min = 1,
.channels_min = 2, .channels_max = 2, /* * only support 8~48K + 96
That's because the SGTL5000 codec has (apparently) support for mono audio:
/* set mono to save power */ snd_soc_update_bits(codec, SGTL5000_CHIP_ANA_POWER, stereo, channels == 1 ? 0 : stereo);
The problem I have with mono support is that the I2S standard says the LRCLK is used to distinguish between the left and right channels of a given sample.
I do not know of any way to get the SSI to treat the left and right channel as two separate samples.
I can imagine, however, a situation where the SSI is *tricked* into thinking that it's playing stereo audio when it really isn't. The codec then treats the left and right channels as two different samples, and fakes out the clock as well.
I don't know of any codec that does this.
I do know of codecs that support a "left/right fill mode" where it duplicates the data automatically in the left and right timeslots. But I don't think any codec that I've used supports this.
I would like to understand when channels_min should be set to 1 or 2 in the platform driver (sound/soc/fsl/fsl_ssi.c in this case) or inside the codec. Could anyone clarify this, please?
I still have seen no explanation as to how mono audio can work on an I2S device. The I2S standard calls for a left and right channel in every sample, and the playback frequency is based on that sample rate.
On Wed, Sep 19, 2012 at 04:49:15PM -0500, Timur Tabi wrote:
I still have seen no explanation as to how mono audio can work on an I2S device. The I2S standard calls for a left and right channel in every sample, and the playback frequency is based on that sample rate.
In I2S mono just means ignoring the right channel or duplicating the left channel into the right channel at one end of the link or the other. As you say the clocking always has to be for an even number of channels.
Mark Brown wrote:
In I2S mono just means ignoring the right channel or duplicating the left channel into the right channel at one end of the link or the other. As you say the clocking always has to be for an even number of channels.
Let me see if I understand this correctly. In order for I2S mono to work, we need the following:
1) The I2S controller (the SSI in this case) needs to be programmed to DMA data from memory into the left channel only of each frame, and it needs to pump dummy data into the right channel. If it automatically pumps the same data into the right channel, then the codec doesn't need to do anything. Otherwise, we need one of these:
2a) The codec needs to be programmed to ignore the right channel and internally duplicate the left channel into both left and right analog signals.
2b) The board needs to be wired such that only the left analog signal gets routed to the speakers.
For item #1, as far as I know, there is only one way to get the SSI to do that: use dual-FIFO mode. The "left" FIFO points to the audio data as normal, and the right FIFO points to whatever. If the right FIFO also points to the same audio data, then we don't need any codec changes.
I can say for certain that fsl_ssi.c does not implement dual-FIFO mode. I considered it once, but I figured it wasn't worth the effort. Getting it to work for audio capture would be difficult, and the feature must be enabled for both capture and playback. I don't think I could support simultaneous playback and capture in dual-FIFO mode.
I do not see any code in imx-ssi.c that enables dual-FIFO mode. This would be done by setting SSI_SCR_TCH_EN in the SCR, and I don't see that bit being set anywhere.
So unless there's some hackery happening on the mx6qsabrelite board, I can't believe that any of these patches actually work.
On Mon, Sep 24, 2012 at 08:50:41AM -0500, Timur Tabi wrote:
Mark Brown wrote:
In I2S mono just means ignoring the right channel or duplicating the left channel into the right channel at one end of the link or the other. As you say the clocking always has to be for an even number of channels.
Let me see if I understand this correctly. In order for I2S mono to work, we need the following:
- The I2S controller (the SSI in this case) needs to be programmed to DMA
data from memory into the left channel only of each frame, and it needs to pump dummy data into the right channel. If it automatically pumps the same data into the right channel, then the codec doesn't need to do anything. Otherwise, we need one of these:
2a) The codec needs to be programmed to ignore the right channel and internally duplicate the left channel into both left and right analog signals.
2b) The board needs to be wired such that only the left analog signal gets routed to the speakers.
Yes.
participants (5)
-
Fabio Estevam
-
Fabio Estevam
-
Joao Bonina
-
Mark Brown
-
Timur Tabi