On Fri, Sep 10, 2010 at 6:39 PM, Mark Brown broonie@opensource.wolfsonmicro.com wrote:
On Fri, Sep 10, 2010 at 05:43:14PM +0900, Jassi Brar wrote:
I plan to categorize the newer I2S blocks into i2s_v2(s3c2412), i2s_v3(v2 with minor variation in reg field order), i2s_v4 (v3 plus 5.1 channel support) and v5 (v4 plus Secondary Stereo-Channel for h/w mixing support). A new flag 'version' in 'struct s3c_audio_pdata' passed via platform_data can be used to differentiate quirks and features run-time in a single CPU driver.
As I've said in the past the concern I have with all this stuff is that outside of Samsung there's no documentation of the IIS block versions or their relationships, the only references I've seen to versions have been for chips with multiple versions (like the 6410) and there it's just a mention that versions exist and the register documentation is completely cut'n'pasted.
All this info could be gotten by comparing the I2S chapters of relevant SoCs... which is what I do. I don't have any special documentation either.... there is none. The only luxury I have is to be able to get clarifications via appropriate channels of info.
It would be good if you could make sure that any platform data for identifying the versions is sufficiently clear to allow someone to go from datasheet to knowing which IP version they have.
Actually I plan to use enum for I2S types and assign them alongside platform_device definition of I2S blocks and their platform_data. Any I2S block that matches register description of 2-channel block of 6410 is v3, that with 5.1 is v4 and that with 5.1 of C100 is v5. There are no differentiating IDs to be read from any register.