@@ -95,9 +95,11 @@ static int acp_i2s_set_tdm_slot(struct snd_soc_dai *dai, u32 tx_mask, u32 rx_mas
9595{
9696 struct device * dev = dai -> component -> dev ;
9797 struct acp_dev_data * adata = snd_soc_dai_get_drvdata (dai );
98+ struct acp_chip_info * chip ;
9899 struct acp_stream * stream ;
99100 int slot_len , no_of_slots ;
100101
102+ chip = dev_get_platdata (dev );
101103 switch (slot_width ) {
102104 case SLOT_WIDTH_8 :
103105 slot_len = 8 ;
@@ -116,28 +118,44 @@ static int acp_i2s_set_tdm_slot(struct snd_soc_dai *dai, u32 tx_mask, u32 rx_mas
116118 return - EINVAL ;
117119 }
118120
119- switch (slots ) {
120- case 1 ... 7 :
121- no_of_slots = slots ;
122- break ;
123- case 8 :
124- no_of_slots = 0 ;
121+ switch (chip -> acp_rev ) {
122+ case ACP3X_DEV :
123+ case ACP6X_DEV :
124+ switch (slots ) {
125+ case 1 ... 7 :
126+ no_of_slots = slots ;
127+ break ;
128+ case 8 :
129+ no_of_slots = 0 ;
130+ break ;
131+ default :
132+ dev_err (dev , "Unsupported slots %d\n" , slots );
133+ return - EINVAL ;
134+ }
125135 break ;
126136 default :
127- dev_err (dev , "Unsupported slots %d\n" , slots );
137+ dev_err (dev , "Unknown chip revision %d\n" , chip -> acp_rev );
128138 return - EINVAL ;
129139 }
130140
131141 slots = no_of_slots ;
132142
133143 spin_lock_irq (& adata -> acp_lock );
134144 list_for_each_entry (stream , & adata -> stream_list , list ) {
135- if (tx_mask && stream -> dir == SNDRV_PCM_STREAM_PLAYBACK )
136- adata -> tdm_tx_fmt [stream -> dai_id - 1 ] =
145+ switch (chip -> acp_rev ) {
146+ case ACP3X_DEV :
147+ case ACP6X_DEV :
148+ if (tx_mask && stream -> dir == SNDRV_PCM_STREAM_PLAYBACK )
149+ adata -> tdm_tx_fmt [stream -> dai_id - 1 ] =
137150 FRM_LEN | (slots << 15 ) | (slot_len << 18 );
138- else if (rx_mask && stream -> dir == SNDRV_PCM_STREAM_CAPTURE )
139- adata -> tdm_rx_fmt [stream -> dai_id - 1 ] =
151+ else if (rx_mask && stream -> dir == SNDRV_PCM_STREAM_CAPTURE )
152+ adata -> tdm_rx_fmt [stream -> dai_id - 1 ] =
140153 FRM_LEN | (slots << 15 ) | (slot_len << 18 );
154+ break ;
155+ default :
156+ dev_err (dev , "Unknown chip revision %d\n" , chip -> acp_rev );
157+ return - EINVAL ;
158+ }
141159 }
142160 spin_unlock_irq (& adata -> acp_lock );
143161 return 0 ;
0 commit comments