162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
262306a36Sopenharmony_ci/***************************************************************************
362306a36Sopenharmony_ci *            au88x0_cxtalk.h
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci *  Wed Nov 19 19:07:17 2003
662306a36Sopenharmony_ci *  Copyright  2003  mjander
762306a36Sopenharmony_ci *  mjander@users.sourceforge.org
862306a36Sopenharmony_ci ****************************************************************************/
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci/*
1162306a36Sopenharmony_ci */
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci/* The crosstalk canceler supports 5 stereo input channels. The result is
1462306a36Sopenharmony_ci   available at one single output route pair (stereo). */
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci#ifndef _AU88X0_CXTALK_H
1762306a36Sopenharmony_ci#define _AU88X0_CXTALK_H
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci#include "au88x0.h"
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci#define XTDLINE_SZ 32
2262306a36Sopenharmony_ci#define XTGAINS_SZ 10
2362306a36Sopenharmony_ci#define XTINST_SZ 4
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci#define XT_HEADPHONE	1
2662306a36Sopenharmony_ci#define XT_SPEAKER0		2
2762306a36Sopenharmony_ci#define XT_SPEAKER1		3
2862306a36Sopenharmony_ci#define XT_DIAMOND		4
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_citypedef u32 xtalk_dline_t[XTDLINE_SZ];
3162306a36Sopenharmony_citypedef u16 xtalk_gains_t[XTGAINS_SZ];
3262306a36Sopenharmony_citypedef u16 xtalk_instate_t[XTINST_SZ];
3362306a36Sopenharmony_citypedef u16 xtalk_coefs_t[5][5];
3462306a36Sopenharmony_citypedef u16 xtalk_state_t[5][4];
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_cistatic void vortex_XtalkHw_SetGains(vortex_t * vortex,
3762306a36Sopenharmony_ci				    xtalk_gains_t const gains);
3862306a36Sopenharmony_cistatic void vortex_XtalkHw_SetGainsAllChan(vortex_t * vortex);
3962306a36Sopenharmony_cistatic void vortex_XtalkHw_SetSampleRate(vortex_t * vortex, u32 sr);
4062306a36Sopenharmony_cistatic void vortex_XtalkHw_ProgramPipe(vortex_t * vortex);
4162306a36Sopenharmony_cistatic void vortex_XtalkHw_ProgramPipe(vortex_t * vortex);
4262306a36Sopenharmony_cistatic void vortex_XtalkHw_ProgramXtalkWide(vortex_t * vortex);
4362306a36Sopenharmony_cistatic void vortex_XtalkHw_ProgramXtalkNarrow(vortex_t * vortex);
4462306a36Sopenharmony_cistatic void vortex_XtalkHw_ProgramDiamondXtalk(vortex_t * vortex);
4562306a36Sopenharmony_cistatic void vortex_XtalkHw_Enable(vortex_t * vortex);
4662306a36Sopenharmony_cistatic void vortex_XtalkHw_Disable(vortex_t * vortex);
4762306a36Sopenharmony_cistatic void vortex_XtalkHw_init(vortex_t * vortex);
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci#endif				/* _AU88X0_CXTALK_H */
50