Lines Matching defs: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))
125 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
131 if (!(rsnd_flags_has(ssi, RSND_SSI_NO_BUSIF)))
272 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
294 if (ssi->usrcnt > 0) {
295 if (ssi->rate != rate) {
300 if (ssi->chan != chan) {
328 ssi->cr_clk = FORCE | rsnd_rdai_width_to_swl(rdai) |
330 ssi->wsr = CONT;
331 ssi->rate = rate;
332 ssi->chan = chan;
344 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
352 if (ssi->usrcnt > 1)
355 ssi->cr_clk = 0;
356 ssi->rate = 0;
357 ssi->chan = 0;
369 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
370 u32 cr_own = ssi->cr_own;
371 u32 cr_mode = ssi->cr_mode;
372 u32 wsr = ssi->wsr;
403 wsr = ssi->wsr;
486 ssi->cr_own = cr_own;
487 ssi->cr_mode = cr_mode;
488 ssi->wsr = wsr;
493 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
495 rsnd_mod_write(mod, SSIWSR, ssi->wsr);
496 rsnd_mod_write(mod, SSICR, ssi->cr_own |
497 ssi->cr_clk |
498 ssi->cr_mode |
499 ssi->cr_en);
509 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
519 ssi->usrcnt++;
539 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
552 if (!ssi->usrcnt) {
561 ssi->usrcnt--;
563 if (!ssi->usrcnt) {
564 ssi->cr_own = 0;
565 ssi->cr_mode = 0;
566 ssi->wsr = 0;
627 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
646 ssi->cr_en = EN;
648 rsnd_mod_write(mod, SSICR, ssi->cr_own |
649 ssi->cr_clk |
650 ssi->cr_mode |
651 ssi->cr_en);
660 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
669 cr = ssi->cr_own |
670 ssi->cr_clk;
678 rsnd_mod_write(mod, SSICR, cr | ssi->cr_en);
695 ssi->cr_en = 0;
933 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
944 * It can't judge ssi parent at this point
959 if (!rsnd_flags_has(ssi, RSND_SSI_PROBED)) {
960 ret = request_irq(ssi->irq,
965 rsnd_flags_set(ssi, RSND_SSI_PROBED);
975 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
983 if (rsnd_flags_has(ssi, RSND_SSI_PROBED)) {
984 free_irq(ssi->irq, mod);
986 rsnd_flags_del(ssi, RSND_SSI_PROBED);
999 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
1000 u32 *buf = (u32 *)(runtime->dma_area + ssi->byte_pos);
1018 byte_pos = ssi->byte_pos + sizeof(*buf);
1020 if (byte_pos >= ssi->next_period_byte) {
1021 int period_pos = byte_pos / ssi->byte_per_period;
1028 ssi->next_period_byte = (period_pos + 1) * ssi->byte_per_period;
1033 WRITE_ONCE(ssi->byte_pos, byte_pos);
1043 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
1046 ssi->byte_pos = 0;
1047 ssi->byte_per_period = runtime->period_size *
1050 ssi->next_period_byte = ssi->byte_per_period;
1060 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
1063 *pointer = bytes_to_frames(runtime, READ_ONCE(ssi->byte_pos));
1138 * If not, "rcar_sound.ssi" will be used.
1175 * ssi mod function
1252 struct rsnd_ssi *ssi;
1266 ssi = devm_kcalloc(dev, nr, sizeof(*ssi), GFP_KERNEL);
1267 if (!ssi) {
1272 priv->ssi = ssi;
1280 ssi = rsnd_ssi_get(priv, i);
1293 rsnd_flags_set(ssi, RSND_SSI_CLK_PIN_SHARE);
1296 rsnd_flags_set(ssi, RSND_SSI_NO_BUSIF);
1298 ssi->irq = irq_of_parse_and_map(np, 0);
1299 if (!ssi->irq) {
1310 ret = rsnd_mod_init(priv, rsnd_mod_get(ssi), ops, clk,
1330 struct rsnd_ssi *ssi;
1333 for_each_rsnd_ssi(ssi, priv, i) {
1334 rsnd_mod_quit(rsnd_mod_get(ssi));