@@ -58,6 +58,8 @@ static const struct of_device_id rk_spdif_match[] __maybe_unused = {
58
58
.data = (void * )RK_SPDIF_RK3366 },
59
59
{ .compatible = "rockchip,rk3399-spdif" ,
60
60
.data = (void * )RK_SPDIF_RK3366 },
61
+ { .compatible = "rockchip,rk3568-spdif" ,
62
+ .data = (void * )RK_SPDIF_RK3366 },
61
63
{},
62
64
};
63
65
MODULE_DEVICE_TABLE (of , rk_spdif_match );
@@ -103,8 +105,8 @@ static int __maybe_unused rk_spdif_runtime_resume(struct device *dev)
103
105
}
104
106
105
107
static int rk_spdif_hw_params (struct snd_pcm_substream * substream ,
106
- struct snd_pcm_hw_params * params ,
107
- struct snd_soc_dai * dai )
108
+ struct snd_pcm_hw_params * params ,
109
+ struct snd_soc_dai * dai )
108
110
{
109
111
struct rk_spdif_dev * spdif = snd_soc_dai_get_drvdata (dai );
110
112
unsigned int val = SPDIF_CFGR_HALFWORD_ENABLE ;
@@ -137,15 +139,15 @@ static int rk_spdif_hw_params(struct snd_pcm_substream *substream,
137
139
}
138
140
139
141
ret = regmap_update_bits (spdif -> regmap , SPDIF_CFGR ,
140
- SPDIF_CFGR_CLK_DIV_MASK | SPDIF_CFGR_HALFWORD_ENABLE |
141
- SDPIF_CFGR_VDW_MASK ,
142
- val );
142
+ SPDIF_CFGR_CLK_DIV_MASK |
143
+ SPDIF_CFGR_HALFWORD_ENABLE |
144
+ SDPIF_CFGR_VDW_MASK , val );
143
145
144
146
return ret ;
145
147
}
146
148
147
149
static int rk_spdif_trigger (struct snd_pcm_substream * substream ,
148
- int cmd , struct snd_soc_dai * dai )
150
+ int cmd , struct snd_soc_dai * dai )
149
151
{
150
152
struct rk_spdif_dev * spdif = snd_soc_dai_get_drvdata (dai );
151
153
int ret ;
@@ -155,31 +157,31 @@ static int rk_spdif_trigger(struct snd_pcm_substream *substream,
155
157
case SNDRV_PCM_TRIGGER_RESUME :
156
158
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE :
157
159
ret = regmap_update_bits (spdif -> regmap , SPDIF_DMACR ,
158
- SPDIF_DMACR_TDE_ENABLE |
159
- SPDIF_DMACR_TDL_MASK ,
160
- SPDIF_DMACR_TDE_ENABLE |
161
- SPDIF_DMACR_TDL (16 ));
160
+ SPDIF_DMACR_TDE_ENABLE |
161
+ SPDIF_DMACR_TDL_MASK ,
162
+ SPDIF_DMACR_TDE_ENABLE |
163
+ SPDIF_DMACR_TDL (16 ));
162
164
163
165
if (ret != 0 )
164
166
return ret ;
165
167
166
168
ret = regmap_update_bits (spdif -> regmap , SPDIF_XFER ,
167
- SPDIF_XFER_TXS_START ,
168
- SPDIF_XFER_TXS_START );
169
+ SPDIF_XFER_TXS_START ,
170
+ SPDIF_XFER_TXS_START );
169
171
break ;
170
172
case SNDRV_PCM_TRIGGER_SUSPEND :
171
173
case SNDRV_PCM_TRIGGER_STOP :
172
174
case SNDRV_PCM_TRIGGER_PAUSE_PUSH :
173
175
ret = regmap_update_bits (spdif -> regmap , SPDIF_DMACR ,
174
- SPDIF_DMACR_TDE_ENABLE ,
175
- SPDIF_DMACR_TDE_DISABLE );
176
+ SPDIF_DMACR_TDE_ENABLE ,
177
+ SPDIF_DMACR_TDE_DISABLE );
176
178
177
179
if (ret != 0 )
178
180
return ret ;
179
181
180
182
ret = regmap_update_bits (spdif -> regmap , SPDIF_XFER ,
181
- SPDIF_XFER_TXS_START ,
182
- SPDIF_XFER_TXS_STOP );
183
+ SPDIF_XFER_TXS_START ,
184
+ SPDIF_XFER_TXS_STOP );
183
185
break ;
184
186
default :
185
187
ret = - EINVAL ;
@@ -247,6 +249,7 @@ static bool rk_spdif_rd_reg(struct device *dev, unsigned int reg)
247
249
case SPDIF_INTCR :
248
250
case SPDIF_INTSR :
249
251
case SPDIF_XFER :
252
+ case SPDIF_SMPDR :
250
253
return true;
251
254
default :
252
255
return false;
@@ -258,6 +261,7 @@ static bool rk_spdif_volatile_reg(struct device *dev, unsigned int reg)
258
261
switch (reg ) {
259
262
case SPDIF_INTSR :
260
263
case SPDIF_SDBLR :
264
+ case SPDIF_SMPDR :
261
265
return true;
262
266
default :
263
267
return false;
@@ -291,7 +295,7 @@ static int rk_spdif_probe(struct platform_device *pdev)
291
295
grf = syscon_regmap_lookup_by_phandle (np , "rockchip,grf" );
292
296
if (IS_ERR (grf )) {
293
297
dev_err (& pdev -> dev ,
294
- "rockchip_spdif missing 'rockchip,grf' \n" );
298
+ "rockchip_spdif missing 'rockchip,grf'\n" );
295
299
return PTR_ERR (grf );
296
300
}
297
301
0 commit comments