Lines Matching refs:uni
80 { .compatible = "st,stih407-uni-player-hdmi",
83 { .compatible = "st,stih407-uni-player-pcm-out",
86 { .compatible = "st,stih407-uni-player-dac",
89 { .compatible = "st,stih407-uni-player-spdif",
92 { .compatible = "st,stih407-uni-reader-pcm_in",
95 { .compatible = "st,stih407-uni-reader-hdmi",
102 int sti_uniperiph_reset(struct uniperif *uni)
106 /* Reset uniperipheral uni */
107 SET_UNIPERIF_SOFT_RST_SOFT_RST(uni);
109 if (uni->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0) {
110 while (GET_UNIPERIF_SOFT_RST_SOFT_RST(uni) && count) {
117 dev_err(uni->dev, "Failed to reset uniperif\n");
129 struct uniperif *uni = priv->dai_data.uni;
132 if (!UNIPERIF_TYPE_IS_TDM(uni)) {
133 dev_err(uni->dev, "cpu dai not in tdm mode\n");
138 uni->tdm_slot.slots = slots;
139 uni->tdm_slot.slot_width = slot_width;
141 uni->tdm_slot.mask = (tx_mask != 0) ? tx_mask : rx_mask;
144 for (i = 0, avail_slots = 0; i < uni->tdm_slot.slots; i++) {
145 if ((uni->tdm_slot.mask >> i) & 0x01)
148 uni->tdm_slot.avail_slots = avail_slots;
151 frame_size = uni->tdm_slot.avail_slots * uni->tdm_slot.slot_width / 8;
156 dev_err(uni->dev, "frame size not allowed: %d bytes\n",
167 struct uniperif *uni = rule->private;
170 t.min = uni->tdm_slot.avail_slots;
171 t.max = uni->tdm_slot.avail_slots;
182 struct uniperif *uni = rule->private;
186 switch (uni->tdm_slot.slot_width) {
194 dev_err(uni->dev, "format not supported: %d bits\n",
195 uni->tdm_slot.slot_width);
210 int sti_uniperiph_get_tdm_word_pos(struct uniperif *uni,
213 int slot_width = uni->tdm_slot.slot_width / 8;
214 int slots_num = uni->tdm_slot.slots;
215 unsigned int slots_mask = uni->tdm_slot.mask;
259 struct uniperif *uni = priv->dai_data.uni;
263 if (!uni->num_ctrls)
266 for (i = 0; i < uni->num_ctrls; i++) {
271 ctrl = &uni->snd_ctrls[i];
272 ctrl->index = uni->id;
273 ctrl->device = uni->id;
276 return snd_soc_add_dai_controls(dai, uni->snd_ctrls, uni->num_ctrls);
287 struct uniperif *uni = priv->dai_data.uni;
291 if (uni->type == SND_ST_UNIPERIF_TYPE_TDM)
307 priv->dai_data.uni->daifmt = fmt;
315 struct uniperif *uni = priv->dai_data.uni;
319 if (uni->state != UNIPERIF_STATE_STOPPED) {
320 dev_err(uni->dev, "%s: invalid uni state( %d)\n",
321 __func__, (int)uni->state);
326 ret = pinctrl_pm_select_sleep_state(uni->dev);
328 dev_err(uni->dev, "%s: failed to select pinctrl state\n",
337 struct uniperif *uni = priv->dai_data.uni;
341 ret = uni_player_resume(uni);
347 ret = pinctrl_pm_select_default_state(uni->dev);
349 dev_err(uni->dev, "%s: failed to select pinctrl state\n",
366 dai_data->dma_data.addr = dai_data->uni->fifo_phys_address;
394 struct uniperif *uni;
408 uni = devm_kzalloc(dev, sizeof(*uni), GFP_KERNEL);
409 if (!uni)
412 uni->id = dev_data->id;
413 uni->ver = dev_data->version;
419 uni->base = devm_platform_get_and_ioremap_resource(priv->pdev, 0, &uni->mem_region);
420 if (IS_ERR(uni->base))
421 return PTR_ERR(uni->base);
423 uni->fifo_phys_address = uni->mem_region->start +
424 UNIPERIF_FIFO_DATA_OFFSET(uni);
426 uni->irq = platform_get_irq(priv->pdev, 0);
427 if (uni->irq < 0)
430 uni->type = dev_data->type;
435 uni->type = SND_ST_UNIPERIF_TYPE_TDM;
437 uni->type = SND_ST_UNIPERIF_TYPE_PCM;
440 dai_data->uni = uni;
444 ret = uni_player_init(priv->pdev, uni);
447 ret = uni_reader_init(priv->pdev, uni);
453 dai->ops = uni->dai_ops;
456 stream->channels_min = uni->hw->channels_min;
457 stream->channels_max = uni->hw->channels_max;
458 stream->rates = uni->hw->rates;
459 stream->formats = uni->hw->formats;