Sorry for late reply, we were in the National Day Holiday. ? 10/1/2015 02:46, Mark Brown ??: > On Mon, Sep 28, 2015 at 04:16:12PM +0800, sugar wrote: >> ? 9/24/2015 00:24, Mark Brown ??: > >>> My initial thought here is that the machine driver should be responsible >>> for setting this and then the DAI driver should check to see if >>> symmetric_rates are in use and configure itself appropriately. Is there >>> a reason why this won't work here? > >> It's for i2s ip configuration, in the most situation, there is no need >> to use this property, except one case: > >> In order to save gpio pins for other function use, we may use single >> lrck(tx or rx) pin. of course, it depends on product design. when in i2s >> slave mode, we need to configure this to share lrck with tx/rx inside i2s >> logic. > >> symmetric_rates flag works fine on rockchip platform, but it can't cover the >> above case. > >> Do you have any suggestion about this or maybe there is no need to upstream >> this special part? > > What makes you say that the symmetric_rates flag can't be used to cover > this case? What you describe above is hte normal reason for needing to > enforce symmetric_rates. The driver should be able to check if the flag > has been set just as well as the core is. > Got it, How about the following modify? if (dai->symmetric_rates) regmap_update_bits(i2s->regmap, I2S_CKR, I2S_CKR_TRCM_MASK, I2S_CKR_TRCM(val));