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",
101 int sti_uniperiph_reset(struct uniperif *uni)
105 /* Reset uniperipheral uni */
106 SET_UNIPERIF_SOFT_RST_SOFT_RST(uni);
108 if (uni->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0) {
109 while (GET_UNIPERIF_SOFT_RST_SOFT_RST(uni) && count) {
116 dev_err(uni->dev, "Failed to reset uniperif\n");
128 struct uniperif *uni = priv->dai_data.uni;
131 if (!UNIPERIF_TYPE_IS_TDM(uni)) {
132 dev_err(uni->dev, "cpu dai not in tdm mode\n");
137 uni->tdm_slot.slots = slots;
138 uni->tdm_slot.slot_width = slot_width;
140 uni->tdm_slot.mask = (tx_mask != 0) ? tx_mask : rx_mask;
143 for (i = 0, avail_slots = 0; i < uni->tdm_slot.slots; i++) {
144 if ((uni->tdm_slot.mask >> i) & 0x01)
147 uni->tdm_slot.avail_slots = avail_slots;
150 frame_size = uni->tdm_slot.avail_slots * uni->tdm_slot.slot_width / 8;
155 dev_err(uni->dev, "frame size not allowed: %d bytes\n",
166 struct uniperif *uni = rule->private;
169 t.min = uni->tdm_slot.avail_slots;
170 t.max = uni->tdm_slot.avail_slots;
181 struct uniperif *uni = rule->private;
185 switch (uni->tdm_slot.slot_width) {
193 dev_err(uni->dev, "format not supported: %d bits\n",
194 uni->tdm_slot.slot_width);
209 int sti_uniperiph_get_tdm_word_pos(struct uniperif *uni,
212 int slot_width = uni->tdm_slot.slot_width / 8;
213 int slots_num = uni->tdm_slot.slots;
214 unsigned int slots_mask = uni->tdm_slot.mask;
258 struct uniperif *uni = priv->dai_data.uni;
262 if (!uni->num_ctrls)
265 for (i = 0; i < uni->num_ctrls; i++) {
270 ctrl = &uni->snd_ctrls[i];
271 ctrl->index = uni->id;
272 ctrl->device = uni->id;
275 return snd_soc_add_dai_controls(dai, uni->snd_ctrls, uni->num_ctrls);
286 struct uniperif *uni = priv->dai_data.uni;
290 if (uni->type == SND_ST_UNIPERIF_TYPE_TDM)
306 priv->dai_data.uni->daifmt = fmt;
314 struct uniperif *uni = priv->dai_data.uni;
318 if (uni->state != UNIPERIF_STATE_STOPPED) {
319 dev_err(uni->dev, "%s: invalid uni state( %d)\n",
320 __func__, (int)uni->state);
325 ret = pinctrl_pm_select_sleep_state(uni->dev);
327 dev_err(uni->dev, "%s: failed to select pinctrl state\n",
336 struct uniperif *uni = priv->dai_data.uni;
340 ret = uni_player_resume(uni);
346 ret = pinctrl_pm_select_default_state(uni->dev);
348 dev_err(uni->dev, "%s: failed to select pinctrl state\n",
365 dai_data->dma_data.addr = dai_data->uni->fifo_phys_address;
388 struct uniperif *uni;
402 uni = devm_kzalloc(dev, sizeof(*uni), GFP_KERNEL);
403 if (!uni)
406 uni->id = dev_data->id;
407 uni->ver = dev_data->version;
413 uni->mem_region = platform_get_resource(priv->pdev, IORESOURCE_MEM, 0);
415 if (!uni->mem_region) {
420 uni->base = devm_ioremap_resource(dev, uni->mem_region);
422 if (IS_ERR(uni->base))
423 return PTR_ERR(uni->base);
425 uni->fifo_phys_address = uni->mem_region->start +
426 UNIPERIF_FIFO_DATA_OFFSET(uni);
428 uni->irq = platform_get_irq(priv->pdev, 0);
429 if (uni->irq < 0)
432 uni->type = dev_data->type;
437 uni->type = SND_ST_UNIPERIF_TYPE_TDM;
439 uni->type = SND_ST_UNIPERIF_TYPE_PCM;
442 dai_data->uni = uni;
446 ret = uni_player_init(priv->pdev, uni);
449 ret = uni_reader_init(priv->pdev, uni);
455 dai->ops = uni->dai_ops;
458 stream->channels_min = uni->hw->channels_min;
459 stream->channels_max = uni->hw->channels_max;
460 stream->rates = uni->hw->rates;
461 stream->formats = uni->hw->formats;