/* max 5 slots, 10 channels, 2 channel in 1 slot */ #define AUD_MAX_SLOTSEL 5
/* * This is a selector for virtual register map of AIO. * * map: Specify the index of virtual register map. * hw : Specify the ID of real register map, selector uses this value. * A meaning of this value depends specification of SoC.
*/ struct uniphier_aio_selector { int map; int hw;
};
/** * 'SoftWare MAPping' setting of UniPhier AIO registers. * * We have to setup 'virtual' register maps to access 'real' registers of AIO. * This feature is legacy and meaningless but AIO needs this to work. * * Each hardware blocks have own virtual register maps as following: * * Address Virtual Real * ------- --------- --------------- * 0x12000 DMAC map0 --> [selector] --> DMAC hardware 3 * 0x12080 DMAC map1 --> [selector] --> DMAC hardware 1 * ... * 0x42000 Port map0 --> [selector] --> Port hardware 1 * 0x42400 Port map1 --> [selector] --> Port hardware 2 * ... * * ch : Input or output channel of DMAC * rb : Ring buffer * iport: PCM input port * iif : Input interface * oport: PCM output port * oif : Output interface * och : Output channel of DMAC for sampling rate converter * * These are examples for sound data paths: * * For caputure device: * (outer of AIO) -> iport -> iif -> ch -> rb -> (CPU) * For playback device: * (CPU) -> rb -> ch -> oif -> oport -> (outer of AIO) * For sampling rate converter device: * (CPU) -> rb -> ch -> oif -> (HW SRC) -> iif -> och -> orb -> (CPU)
*/ struct uniphier_aio_swmap { int type; int dir;
unsignedint fmt; /* Set one of AUD_CLK_X */ int clk_in; int clk_out; /* Set one of AUD_PLL_X */ int pll_in; int pll_out; /* Set one of AUD_PLLDIV_X */ int plldiv;
};
void aio_iecout_set_enable(struct uniphier_aio_chip *chip, bool enable); int aio_chip_set_pll(struct uniphier_aio_chip *chip, int pll_id, unsignedint freq); void aio_chip_init(struct uniphier_aio_chip *chip); int aio_init(struct uniphier_aio_sub *sub); void aio_port_reset(struct uniphier_aio_sub *sub); int aio_port_set_param(struct uniphier_aio_sub *sub, int pass_through, conststruct snd_pcm_hw_params *params); void aio_port_set_enable(struct uniphier_aio_sub *sub, int enable); int aio_port_get_volume(struct uniphier_aio_sub *sub); void aio_port_set_volume(struct uniphier_aio_sub *sub, int vol); int aio_if_set_param(struct uniphier_aio_sub *sub, int pass_through); int aio_oport_set_stream_type(struct uniphier_aio_sub *sub, enum IEC61937_PC pc); void aio_src_reset(struct uniphier_aio_sub *sub); int aio_src_set_param(struct uniphier_aio_sub *sub, conststruct snd_pcm_hw_params *params); int aio_srcif_set_param(struct uniphier_aio_sub *sub); int aio_srcch_set_param(struct uniphier_aio_sub *sub); void aio_srcch_set_enable(struct uniphier_aio_sub *sub, int enable);
int aiodma_ch_set_param(struct uniphier_aio_sub *sub); void aiodma_ch_set_enable(struct uniphier_aio_sub *sub, int enable); int aiodma_rb_set_threshold(struct uniphier_aio_sub *sub, u64 size, u32 th); int aiodma_rb_set_buffer(struct uniphier_aio_sub *sub, u64 start, u64 end, int period); void aiodma_rb_sync(struct uniphier_aio_sub *sub, u64 start, u64 size, int period); bool aiodma_rb_is_irq(struct uniphier_aio_sub *sub); void aiodma_rb_clear_irq(struct uniphier_aio_sub *sub);
#endif/* SND_UNIPHIER_AIO_H__ */
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.16Bemerkung:
(vorverarbeitet am 2026-04-25)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.