Lines Matching defs:drv_data
41 struct xlnx_i2s_drv_data *drv_data = snd_soc_dai_get_drvdata(cpu_dai);
46 drv_data->sysclk = 0;
48 writel(div, drv_data->base + I2S_I2STIM_OFFSET);
56 struct xlnx_i2s_drv_data *drv_data = snd_soc_dai_get_drvdata(dai);
58 drv_data->sysclk = freq;
62 if (drv_data->is_32bit_lrclk)
65 bits_per_sample = drv_data->data_width;
67 drv_data->ratnum.num = freq / (bits_per_sample * drv_data->channels) / 2;
68 drv_data->ratnum.den_step = 1;
69 drv_data->ratnum.den_min = 1;
70 drv_data->ratnum.den_max = 255;
71 drv_data->rate_constraints.rats = &drv_data->ratnum;
72 drv_data->rate_constraints.nrats = 1;
80 struct xlnx_i2s_drv_data *drv_data = snd_soc_dai_get_drvdata(dai);
82 if (drv_data->sysclk)
85 &drv_data->rate_constraints);
95 struct xlnx_i2s_drv_data *drv_data = snd_soc_dai_get_drvdata(i2s_dai);
97 if (drv_data->sysclk) {
100 if (drv_data->is_32bit_lrclk)
103 bits_per_sample = drv_data->data_width;
106 sclk_div = drv_data->sysclk / sclk / 2;
108 if ((drv_data->sysclk % sclk != 0) ||
111 drv_data->sysclk, sclk);
114 writel(sclk_div, drv_data->base + I2S_I2STIM_OFFSET);
121 writel(chan_id, drv_data->base + reg_off);
131 struct xlnx_i2s_drv_data *drv_data = snd_soc_dai_get_drvdata(i2s_dai);
137 writel(I2S_CORE_CTRL_ENABLE, drv_data->base + I2S_CORE_CTRL_OFFSET);
142 writel(0, drv_data->base + I2S_CORE_CTRL_OFFSET);
173 struct xlnx_i2s_drv_data *drv_data;
179 drv_data = devm_kzalloc(&pdev->dev, sizeof(*drv_data), GFP_KERNEL);
180 if (!drv_data)
183 drv_data->base = devm_platform_ioremap_resource(pdev, 0);
184 if (IS_ERR(drv_data->base))
185 return PTR_ERR(drv_data->base);
187 ret = of_property_read_u32(node, "xlnx,num-channels", &drv_data->channels);
192 drv_data->channels *= 2;
194 ret = of_property_read_u32(node, "xlnx,dwidth", &drv_data->data_width);
199 switch (drv_data->data_width) {
211 drv_data->dai_drv.name = "xlnx_i2s_playback";
212 drv_data->dai_drv.playback.stream_name = "Playback";
213 drv_data->dai_drv.playback.formats = format;
214 drv_data->dai_drv.playback.channels_min = drv_data->channels;
215 drv_data->dai_drv.playback.channels_max = drv_data->channels;
216 drv_data->dai_drv.playback.rates = SNDRV_PCM_RATE_8000_192000;
217 drv_data->dai_drv.ops = &xlnx_i2s_dai_ops;
219 drv_data->dai_drv.name = "xlnx_i2s_capture";
220 drv_data->dai_drv.capture.stream_name = "Capture";
221 drv_data->dai_drv.capture.formats = format;
222 drv_data->dai_drv.capture.channels_min = drv_data->channels;
223 drv_data->dai_drv.capture.channels_max = drv_data->channels;
224 drv_data->dai_drv.capture.rates = SNDRV_PCM_RATE_8000_192000;
225 drv_data->dai_drv.ops = &xlnx_i2s_dai_ops;
229 drv_data->is_32bit_lrclk = readl(drv_data->base + I2S_CORE_CTRL_OFFSET) &
232 dev_set_drvdata(&pdev->dev, drv_data);
235 &drv_data->dai_drv, 1);
241 dev_info(&pdev->dev, "%s DAI registered\n", drv_data->dai_drv.name);