18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
28c2ecf20Sopenharmony_ci/***************************************************************************
38c2ecf20Sopenharmony_ci *            au88x0_cxtalk.h
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci *  Wed Nov 19 19:07:17 2003
68c2ecf20Sopenharmony_ci *  Copyright  2003  mjander
78c2ecf20Sopenharmony_ci *  mjander@users.sourceforge.org
88c2ecf20Sopenharmony_ci ****************************************************************************/
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci/*
118c2ecf20Sopenharmony_ci */
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ci/* The crosstalk canceler supports 5 stereo input channels. The result is
148c2ecf20Sopenharmony_ci   available at one single output route pair (stereo). */
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci#ifndef _AU88X0_CXTALK_H
178c2ecf20Sopenharmony_ci#define _AU88X0_CXTALK_H
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci#include "au88x0.h"
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci#define XTDLINE_SZ 32
228c2ecf20Sopenharmony_ci#define XTGAINS_SZ 10
238c2ecf20Sopenharmony_ci#define XTINST_SZ 4
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ci#define XT_HEADPHONE	1
268c2ecf20Sopenharmony_ci#define XT_SPEAKER0		2
278c2ecf20Sopenharmony_ci#define XT_SPEAKER1		3
288c2ecf20Sopenharmony_ci#define XT_DIAMOND		4
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_citypedef u32 xtalk_dline_t[XTDLINE_SZ];
318c2ecf20Sopenharmony_citypedef u16 xtalk_gains_t[XTGAINS_SZ];
328c2ecf20Sopenharmony_citypedef u16 xtalk_instate_t[XTINST_SZ];
338c2ecf20Sopenharmony_citypedef u16 xtalk_coefs_t[5][5];
348c2ecf20Sopenharmony_citypedef u16 xtalk_state_t[5][4];
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_cistatic void vortex_XtalkHw_SetGains(vortex_t * vortex,
378c2ecf20Sopenharmony_ci				    xtalk_gains_t const gains);
388c2ecf20Sopenharmony_cistatic void vortex_XtalkHw_SetGainsAllChan(vortex_t * vortex);
398c2ecf20Sopenharmony_cistatic void vortex_XtalkHw_SetSampleRate(vortex_t * vortex, u32 sr);
408c2ecf20Sopenharmony_cistatic void vortex_XtalkHw_ProgramPipe(vortex_t * vortex);
418c2ecf20Sopenharmony_cistatic void vortex_XtalkHw_ProgramPipe(vortex_t * vortex);
428c2ecf20Sopenharmony_cistatic void vortex_XtalkHw_ProgramXtalkWide(vortex_t * vortex);
438c2ecf20Sopenharmony_cistatic void vortex_XtalkHw_ProgramXtalkNarrow(vortex_t * vortex);
448c2ecf20Sopenharmony_cistatic void vortex_XtalkHw_ProgramDiamondXtalk(vortex_t * vortex);
458c2ecf20Sopenharmony_cistatic void vortex_XtalkHw_Enable(vortex_t * vortex);
468c2ecf20Sopenharmony_cistatic void vortex_XtalkHw_Disable(vortex_t * vortex);
478c2ecf20Sopenharmony_cistatic void vortex_XtalkHw_init(vortex_t * vortex);
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_ci#endif				/* _AU88X0_CXTALK_H */
50