Lines Matching refs:ssi

77 #define SSI_NAME "ssi"
107 ((pos) = ((struct rsnd_ssi *)(priv)->ssi + i)); \
110 #define rsnd_ssi_get(priv, id) ((struct rsnd_ssi *)(priv->ssi) + id)
113 #define rsnd_ssi_is_parent(ssi, io) ((ssi) == rsnd_io_to_mod_ssip(io))
123 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
129 if (!(rsnd_flags_has(ssi, RSND_SSI_NO_BUSIF)))
270 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
292 if (ssi->usrcnt > 0) {
293 if (ssi->rate != rate) {
298 if (ssi->chan != chan) {
325 ssi->cr_clk = FORCE | rsnd_rdai_width_to_swl(rdai) |
327 ssi->wsr = CONT;
328 ssi->rate = rate;
329 ssi->chan = chan;
345 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
353 if (ssi->usrcnt > 1)
356 ssi->cr_clk = 0;
357 ssi->rate = 0;
358 ssi->chan = 0;
370 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
371 u32 cr_own = ssi->cr_own;
372 u32 cr_mode = ssi->cr_mode;
373 u32 wsr = ssi->wsr;
451 ssi->cr_own = cr_own;
452 ssi->cr_mode = cr_mode;
453 ssi->wsr = wsr;
458 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
460 rsnd_mod_write(mod, SSIWSR, ssi->wsr);
461 rsnd_mod_write(mod, SSICR, ssi->cr_own |
462 ssi->cr_clk |
463 ssi->cr_mode |
464 ssi->cr_en);
474 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
484 ssi->usrcnt++;
504 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
510 if (!ssi->usrcnt) {
519 ssi->usrcnt--;
521 if (!ssi->usrcnt) {
522 ssi->cr_own = 0;
523 ssi->cr_mode = 0;
524 ssi->wsr = 0;
553 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
572 ssi->cr_en = EN;
574 rsnd_mod_write(mod, SSICR, ssi->cr_own |
575 ssi->cr_clk |
576 ssi->cr_mode |
577 ssi->cr_en);
586 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
595 cr = ssi->cr_own |
596 ssi->cr_clk;
604 rsnd_mod_write(mod, SSICR, cr | ssi->cr_en);
621 ssi->cr_en = 0;
810 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
821 * It can't judge ssi parent at this point
836 if (!rsnd_flags_has(ssi, RSND_SSI_PROBED)) {
837 ret = request_irq(ssi->irq,
842 rsnd_flags_set(ssi, RSND_SSI_PROBED);
852 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
860 if (rsnd_flags_has(ssi, RSND_SSI_PROBED)) {
861 free_irq(ssi->irq, mod);
863 rsnd_flags_del(ssi, RSND_SSI_PROBED);
876 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
877 u32 *buf = (u32 *)(runtime->dma_area + ssi->byte_pos);
895 byte_pos = ssi->byte_pos + sizeof(*buf);
897 if (byte_pos >= ssi->next_period_byte) {
898 int period_pos = byte_pos / ssi->byte_per_period;
905 ssi->next_period_byte = (period_pos + 1) * ssi->byte_per_period;
910 WRITE_ONCE(ssi->byte_pos, byte_pos);
920 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
923 ssi->byte_pos = 0;
924 ssi->byte_per_period = runtime->period_size *
927 ssi->next_period_byte = ssi->byte_per_period;
937 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
940 *pointer = bytes_to_frames(runtime, READ_ONCE(ssi->byte_pos));
1015 * If not, "rcar_sound.ssi" will be used.
1036 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
1047 seq_printf(m, "chan: %d\n", ssi->chan);
1048 seq_printf(m, "user: %d\n", ssi->usrcnt);
1081 * ssi mod function
1167 struct rsnd_ssi *ssi;
1181 ssi = devm_kcalloc(dev, nr, sizeof(*ssi), GFP_KERNEL);
1182 if (!ssi) {
1187 priv->ssi = ssi;
1202 ssi = rsnd_ssi_get(priv, i);
1215 rsnd_flags_set(ssi, RSND_SSI_CLK_PIN_SHARE);
1218 rsnd_flags_set(ssi, RSND_SSI_NO_BUSIF);
1220 ssi->irq = irq_of_parse_and_map(np, 0);
1221 if (!ssi->irq) {
1232 ret = rsnd_mod_init(priv, rsnd_mod_get(ssi), ops, clk,
1252 struct rsnd_ssi *ssi;
1255 for_each_rsnd_ssi(ssi, priv, i) {
1256 rsnd_mod_quit(rsnd_mod_get(ssi));