Lines Matching refs: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)) argument
123 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); in rsnd_ssi_use_busif() local
129 if (!(rsnd_flags_has(ssi, RSND_SSI_NO_BUSIF))) in rsnd_ssi_use_busif()
270 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); in rsnd_ssi_master_clk_start() local
292 if (ssi->usrcnt > 0) { in rsnd_ssi_master_clk_start()
293 if (ssi->rate != rate) { in rsnd_ssi_master_clk_start()
298 if (ssi->chan != chan) { in rsnd_ssi_master_clk_start()
325 ssi->cr_clk = FORCE | rsnd_rdai_width_to_swl(rdai) | in rsnd_ssi_master_clk_start()
327 ssi->wsr = CONT; in rsnd_ssi_master_clk_start()
328 ssi->rate = rate; in rsnd_ssi_master_clk_start()
329 ssi->chan = chan; in rsnd_ssi_master_clk_start()
345 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); in rsnd_ssi_master_clk_stop() local
353 if (ssi->usrcnt > 1) in rsnd_ssi_master_clk_stop()
356 ssi->cr_clk = 0; in rsnd_ssi_master_clk_stop()
357 ssi->rate = 0; in rsnd_ssi_master_clk_stop()
358 ssi->chan = 0; in rsnd_ssi_master_clk_stop()
370 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); in rsnd_ssi_config_init() local
371 u32 cr_own = ssi->cr_own; in rsnd_ssi_config_init()
372 u32 cr_mode = ssi->cr_mode; in rsnd_ssi_config_init()
373 u32 wsr = ssi->wsr; in rsnd_ssi_config_init()
451 ssi->cr_own = cr_own; in rsnd_ssi_config_init()
452 ssi->cr_mode = cr_mode; in rsnd_ssi_config_init()
453 ssi->wsr = wsr; in rsnd_ssi_config_init()
458 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); in rsnd_ssi_register_setup() local
460 rsnd_mod_write(mod, SSIWSR, ssi->wsr); in rsnd_ssi_register_setup()
461 rsnd_mod_write(mod, SSICR, ssi->cr_own | in rsnd_ssi_register_setup()
462 ssi->cr_clk | in rsnd_ssi_register_setup()
463 ssi->cr_mode | in rsnd_ssi_register_setup()
464 ssi->cr_en); in rsnd_ssi_register_setup()
474 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); in rsnd_ssi_init() local
484 ssi->usrcnt++; in rsnd_ssi_init()
504 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); in rsnd_ssi_quit() local
510 if (!ssi->usrcnt) { in rsnd_ssi_quit()
519 ssi->usrcnt--; in rsnd_ssi_quit()
521 if (!ssi->usrcnt) { in rsnd_ssi_quit()
522 ssi->cr_own = 0; in rsnd_ssi_quit()
523 ssi->cr_mode = 0; in rsnd_ssi_quit()
524 ssi->wsr = 0; in rsnd_ssi_quit()
553 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); in rsnd_ssi_start() local
572 ssi->cr_en = EN; in rsnd_ssi_start()
574 rsnd_mod_write(mod, SSICR, ssi->cr_own | in rsnd_ssi_start()
575 ssi->cr_clk | in rsnd_ssi_start()
576 ssi->cr_mode | in rsnd_ssi_start()
577 ssi->cr_en); in rsnd_ssi_start()
586 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); in rsnd_ssi_stop() local
595 cr = ssi->cr_own | in rsnd_ssi_stop()
596 ssi->cr_clk; in rsnd_ssi_stop()
604 rsnd_mod_write(mod, SSICR, cr | ssi->cr_en); in rsnd_ssi_stop()
621 ssi->cr_en = 0; in rsnd_ssi_stop()
810 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); in rsnd_ssi_common_probe() local
836 if (!rsnd_flags_has(ssi, RSND_SSI_PROBED)) { in rsnd_ssi_common_probe()
837 ret = request_irq(ssi->irq, in rsnd_ssi_common_probe()
842 rsnd_flags_set(ssi, RSND_SSI_PROBED); in rsnd_ssi_common_probe()
852 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); in rsnd_ssi_common_remove() local
860 if (rsnd_flags_has(ssi, RSND_SSI_PROBED)) { in rsnd_ssi_common_remove()
861 free_irq(ssi->irq, mod); in rsnd_ssi_common_remove()
863 rsnd_flags_del(ssi, RSND_SSI_PROBED); in rsnd_ssi_common_remove()
876 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); in rsnd_ssi_pio_interrupt() local
877 u32 *buf = (u32 *)(runtime->dma_area + ssi->byte_pos); in rsnd_ssi_pio_interrupt()
895 byte_pos = ssi->byte_pos + sizeof(*buf); in rsnd_ssi_pio_interrupt()
897 if (byte_pos >= ssi->next_period_byte) { in rsnd_ssi_pio_interrupt()
898 int period_pos = byte_pos / ssi->byte_per_period; in rsnd_ssi_pio_interrupt()
905 ssi->next_period_byte = (period_pos + 1) * ssi->byte_per_period; in rsnd_ssi_pio_interrupt()
910 WRITE_ONCE(ssi->byte_pos, byte_pos); in rsnd_ssi_pio_interrupt()
920 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); in rsnd_ssi_pio_init() local
923 ssi->byte_pos = 0; in rsnd_ssi_pio_init()
924 ssi->byte_per_period = runtime->period_size * in rsnd_ssi_pio_init()
927 ssi->next_period_byte = ssi->byte_per_period; in rsnd_ssi_pio_init()
937 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); in rsnd_ssi_pio_pointer() local
940 *pointer = bytes_to_frames(runtime, READ_ONCE(ssi->byte_pos)); in rsnd_ssi_pio_pointer()
1036 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); in rsnd_ssi_debug_info() local
1047 seq_printf(m, "chan: %d\n", ssi->chan); in rsnd_ssi_debug_info()
1048 seq_printf(m, "user: %d\n", ssi->usrcnt); in rsnd_ssi_debug_info()
1167 struct rsnd_ssi *ssi; in rsnd_ssi_probe() local
1181 ssi = devm_kcalloc(dev, nr, sizeof(*ssi), GFP_KERNEL); in rsnd_ssi_probe()
1182 if (!ssi) { in rsnd_ssi_probe()
1187 priv->ssi = ssi; in rsnd_ssi_probe()
1202 ssi = rsnd_ssi_get(priv, i); in rsnd_ssi_probe()
1215 rsnd_flags_set(ssi, RSND_SSI_CLK_PIN_SHARE); in rsnd_ssi_probe()
1218 rsnd_flags_set(ssi, RSND_SSI_NO_BUSIF); in rsnd_ssi_probe()
1220 ssi->irq = irq_of_parse_and_map(np, 0); in rsnd_ssi_probe()
1221 if (!ssi->irq) { in rsnd_ssi_probe()
1232 ret = rsnd_mod_init(priv, rsnd_mod_get(ssi), ops, clk, in rsnd_ssi_probe()
1252 struct rsnd_ssi *ssi; in rsnd_ssi_remove() local
1255 for_each_rsnd_ssi(ssi, priv, i) { in rsnd_ssi_remove()
1256 rsnd_mod_quit(rsnd_mod_get(ssi)); in rsnd_ssi_remove()