xref: /kernel/linux/linux-6.6/sound/pci/aw2/aw2-tsl.c (revision 62306a36)
162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*****************************************************************************
362306a36Sopenharmony_ci *
462306a36Sopenharmony_ci * Copyright (C) 2008 Cedric Bregardis <cedric.bregardis@free.fr> and
562306a36Sopenharmony_ci * Jean-Christian Hassler <jhassler@free.fr>
662306a36Sopenharmony_ci * Copyright 1998 Emagic Soft- und Hardware GmbH
762306a36Sopenharmony_ci * Copyright 2002 Martijn Sipkema
862306a36Sopenharmony_ci *
962306a36Sopenharmony_ci * This file is part of the Audiowerk2 ALSA driver
1062306a36Sopenharmony_ci *
1162306a36Sopenharmony_ci *****************************************************************************/
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#define TSL_WS0		(1UL << 31)
1462306a36Sopenharmony_ci#define	TSL_WS1		(1UL << 30)
1562306a36Sopenharmony_ci#define	TSL_WS2		(1UL << 29)
1662306a36Sopenharmony_ci#define TSL_WS3		(1UL << 28)
1762306a36Sopenharmony_ci#define TSL_WS4		(1UL << 27)
1862306a36Sopenharmony_ci#define	TSL_DIS_A1	(1UL << 24)
1962306a36Sopenharmony_ci#define TSL_SDW_A1	(1UL << 23)
2062306a36Sopenharmony_ci#define TSL_SIB_A1	(1UL << 22)
2162306a36Sopenharmony_ci#define TSL_SF_A1	(1UL << 21)
2262306a36Sopenharmony_ci#define	TSL_LF_A1	(1UL << 20)
2362306a36Sopenharmony_ci#define TSL_BSEL_A1	(1UL << 17)
2462306a36Sopenharmony_ci#define TSL_DOD_A1	(1UL << 15)
2562306a36Sopenharmony_ci#define TSL_LOW_A1	(1UL << 14)
2662306a36Sopenharmony_ci#define TSL_DIS_A2	(1UL << 11)
2762306a36Sopenharmony_ci#define TSL_SDW_A2	(1UL << 10)
2862306a36Sopenharmony_ci#define TSL_SIB_A2	(1UL << 9)
2962306a36Sopenharmony_ci#define TSL_SF_A2	(1UL << 8)
3062306a36Sopenharmony_ci#define TSL_LF_A2	(1UL << 7)
3162306a36Sopenharmony_ci#define TSL_BSEL_A2	(1UL << 4)
3262306a36Sopenharmony_ci#define TSL_DOD_A2	(1UL << 2)
3362306a36Sopenharmony_ci#define TSL_LOW_A2	(1UL << 1)
3462306a36Sopenharmony_ci#define TSL_EOS		(1UL << 0)
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci    /* Audiowerk8 hardware setup: */
3762306a36Sopenharmony_ci    /*      WS0, SD4, TSL1  - Analog/ digital in */
3862306a36Sopenharmony_ci    /*      WS1, SD0, TSL1  - Analog out #1, digital out */
3962306a36Sopenharmony_ci    /*      WS2, SD2, TSL1  - Analog out #2 */
4062306a36Sopenharmony_ci    /*      WS3, SD1, TSL2  - Analog out #3 */
4162306a36Sopenharmony_ci    /*      WS4, SD3, TSL2  - Analog out #4 */
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci    /* Audiowerk8 timing: */
4462306a36Sopenharmony_ci    /*      Timeslot:     | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ... */
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci    /*      A1_INPUT: */
4762306a36Sopenharmony_ci    /*      SD4:          <_ADC-L_>-------<_ADC-R_>-------< */
4862306a36Sopenharmony_ci    /*      WS0:          _______________/---------------\_ */
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci    /*      A1_OUTPUT: */
5162306a36Sopenharmony_ci    /*      SD0:          <_1-L___>-------<_1-R___>-------< */
5262306a36Sopenharmony_ci    /*      WS1:          _______________/---------------\_ */
5362306a36Sopenharmony_ci    /*      SD2:          >-------<_2-L___>-------<_2-R___> */
5462306a36Sopenharmony_ci    /*      WS2:          -------\_______________/--------- */
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci    /*      A2_OUTPUT: */
5762306a36Sopenharmony_ci    /*      SD1:          <_3-L___>-------<_3-R___>-------< */
5862306a36Sopenharmony_ci    /*      WS3:          _______________/---------------\_ */
5962306a36Sopenharmony_ci    /*      SD3:          >-------<_4-L___>-------<_4-R___> */
6062306a36Sopenharmony_ci    /*      WS4:          -------\_______________/--------- */
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_cistatic const int tsl1[8] = {
6362306a36Sopenharmony_ci	1 * TSL_SDW_A1 | 3 * TSL_BSEL_A1 |
6462306a36Sopenharmony_ci	0 * TSL_DIS_A1 | 0 * TSL_DOD_A1 | TSL_LF_A1,
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci	1 * TSL_SDW_A1 | 2 * TSL_BSEL_A1 |
6762306a36Sopenharmony_ci	0 * TSL_DIS_A1 | 0 * TSL_DOD_A1,
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci	0 * TSL_SDW_A1 | 3 * TSL_BSEL_A1 |
7062306a36Sopenharmony_ci	0 * TSL_DIS_A1 | 0 * TSL_DOD_A1,
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci	0 * TSL_SDW_A1 | 2 * TSL_BSEL_A1 |
7362306a36Sopenharmony_ci	0 * TSL_DIS_A1 | 0 * TSL_DOD_A1,
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci	1 * TSL_SDW_A1 | 1 * TSL_BSEL_A1 |
7662306a36Sopenharmony_ci	0 * TSL_DIS_A1 | 0 * TSL_DOD_A1 | TSL_WS1 | TSL_WS0,
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci	1 * TSL_SDW_A1 | 0 * TSL_BSEL_A1 |
7962306a36Sopenharmony_ci	0 * TSL_DIS_A1 | 0 * TSL_DOD_A1 | TSL_WS1 | TSL_WS0,
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci	0 * TSL_SDW_A1 | 1 * TSL_BSEL_A1 |
8262306a36Sopenharmony_ci	0 * TSL_DIS_A1 | 0 * TSL_DOD_A1 | TSL_WS1 | TSL_WS0,
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci	0 * TSL_SDW_A1 | 0 * TSL_BSEL_A1 | 0 * TSL_DIS_A1 |
8562306a36Sopenharmony_ci	0 * TSL_DOD_A1 | TSL_WS1 | TSL_WS0 | TSL_SF_A1 | TSL_EOS,
8662306a36Sopenharmony_ci};
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_cistatic const int tsl2[8] = {
8962306a36Sopenharmony_ci	0 * TSL_SDW_A2 | 3 * TSL_BSEL_A2 | 2 * TSL_DOD_A2 | TSL_LF_A2,
9062306a36Sopenharmony_ci	0 * TSL_SDW_A2 | 2 * TSL_BSEL_A2 | 2 * TSL_DOD_A2,
9162306a36Sopenharmony_ci	0 * TSL_SDW_A2 | 3 * TSL_BSEL_A2 | 2 * TSL_DOD_A2,
9262306a36Sopenharmony_ci	0 * TSL_SDW_A2 | 2 * TSL_BSEL_A2 | 2 * TSL_DOD_A2,
9362306a36Sopenharmony_ci	0 * TSL_SDW_A2 | 1 * TSL_BSEL_A2 | 2 * TSL_DOD_A2 | TSL_WS2,
9462306a36Sopenharmony_ci	0 * TSL_SDW_A2 | 0 * TSL_BSEL_A2 | 2 * TSL_DOD_A2 | TSL_WS2,
9562306a36Sopenharmony_ci	0 * TSL_SDW_A2 | 1 * TSL_BSEL_A2 | 2 * TSL_DOD_A2 | TSL_WS2,
9662306a36Sopenharmony_ci	0 * TSL_SDW_A2 | 0 * TSL_BSEL_A2 | 2 * TSL_DOD_A2 | TSL_WS2 | TSL_EOS
9762306a36Sopenharmony_ci};
98