Em Seg, 2009-06-15 às 19:40 +0200, Daniel Mack escreveu:
Forbidding it due to API clearance even though it's supported by the hardware is a step backwards.
I wouldn't consider this API clearance. If you look at the pxa-ssp.c history you will see that the first version of this driver that hit mainline used to work for the standard 32 bits frame_width for 2*16 bits samples, for DSP_A/DSP_B and I2S.
(Tough I2S was broken for other reasons if you used SND_SOC_DAIFMT_IB_IF, and required a set_tdm_slot() call)
Commit aa4ef01de5f2e7ed948b88f9f1cfc93c8e0c3f25 broke DSP_A and DSP_B for 2*16bits samples, if you don't make a dummy set_tdm_slot() call.
Commit 72d7466468b471f99cefae3c5f4a414bbbaa0bdd broke I2S mode for pxa2xx, even with set_tdm_slot(). And introduced a relation between SerClkDiv and sample_width that shouldn't exist.
Commit 92429069d0fc9f52d436c9067c5b5c392e3f8876 extended the breakage of 2*16bits samples on 32bit frames for all modes, unless you call set_tdm_slot(2, 3).
So, mostly, I'm fixing regressions. ;)
Of course I want the driver to work with all the weird non-standard formats that hardware may require, but the current code is broken on standards compliant hardware unless you do some set_tdm_slot black magic. Doing set_tdm_slot hacks is acceptable for non-standard devices, but is not a nice thing if your hardware is standard or if you want to use _real_ network mode.
-- Daniel Ribeiro