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 * 762306a36Sopenharmony_ci * This file is part of the Audiowerk2 ALSA driver 862306a36Sopenharmony_ci * 962306a36Sopenharmony_ci *****************************************************************************/ 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci/* SAA7146 registers */ 1262306a36Sopenharmony_ci#define PCI_BT_A 0x4C 1362306a36Sopenharmony_ci#define IICTFR 0x8C 1462306a36Sopenharmony_ci#define IICSTA 0x90 1562306a36Sopenharmony_ci#define BaseA1_in 0x94 1662306a36Sopenharmony_ci#define ProtA1_in 0x98 1762306a36Sopenharmony_ci#define PageA1_in 0x9C 1862306a36Sopenharmony_ci#define BaseA1_out 0xA0 1962306a36Sopenharmony_ci#define ProtA1_out 0xA4 2062306a36Sopenharmony_ci#define PageA1_out 0xA8 2162306a36Sopenharmony_ci#define BaseA2_in 0xAC 2262306a36Sopenharmony_ci#define ProtA2_in 0xB0 2362306a36Sopenharmony_ci#define PageA2_in 0xB4 2462306a36Sopenharmony_ci#define BaseA2_out 0xB8 2562306a36Sopenharmony_ci#define ProtA2_out 0xBC 2662306a36Sopenharmony_ci#define PageA2_out 0xC0 2762306a36Sopenharmony_ci#define IER 0xDC 2862306a36Sopenharmony_ci#define GPIO_CTRL 0xE0 2962306a36Sopenharmony_ci#define ACON1 0xF4 3062306a36Sopenharmony_ci#define ACON2 0xF8 3162306a36Sopenharmony_ci#define MC1 0xFC 3262306a36Sopenharmony_ci#define MC2 0x100 3362306a36Sopenharmony_ci#define ISR 0x10C 3462306a36Sopenharmony_ci#define PSR 0x110 3562306a36Sopenharmony_ci#define SSR 0x114 3662306a36Sopenharmony_ci#define PCI_ADP1 0x12C 3762306a36Sopenharmony_ci#define PCI_ADP2 0x130 3862306a36Sopenharmony_ci#define PCI_ADP3 0x134 3962306a36Sopenharmony_ci#define PCI_ADP4 0x138 4062306a36Sopenharmony_ci#define LEVEL_REP 0x140 4162306a36Sopenharmony_ci#define FB_BUFFER1 0x144 4262306a36Sopenharmony_ci#define FB_BUFFER2 0x148 4362306a36Sopenharmony_ci#define TSL1 0x180 4462306a36Sopenharmony_ci#define TSL2 0x1C0 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci#define ME (1UL << 11) 4762306a36Sopenharmony_ci#define LIMIT (1UL << 4) 4862306a36Sopenharmony_ci#define PV (1UL << 3) 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci/* PSR/ISR/IER */ 5162306a36Sopenharmony_ci#define PPEF (1UL << 31) 5262306a36Sopenharmony_ci#define PABO (1UL << 30) 5362306a36Sopenharmony_ci#define IIC_S (1UL << 17) 5462306a36Sopenharmony_ci#define IIC_E (1UL << 16) 5562306a36Sopenharmony_ci#define A2_in (1UL << 15) 5662306a36Sopenharmony_ci#define A2_out (1UL << 14) 5762306a36Sopenharmony_ci#define A1_in (1UL << 13) 5862306a36Sopenharmony_ci#define A1_out (1UL << 12) 5962306a36Sopenharmony_ci#define AFOU (1UL << 11) 6062306a36Sopenharmony_ci#define PIN3 (1UL << 6) 6162306a36Sopenharmony_ci#define PIN2 (1UL << 5) 6262306a36Sopenharmony_ci#define PIN1 (1UL << 4) 6362306a36Sopenharmony_ci#define PIN0 (1UL << 3) 6462306a36Sopenharmony_ci#define ECS (1UL << 2) 6562306a36Sopenharmony_ci#define EC3S (1UL << 1) 6662306a36Sopenharmony_ci#define EC0S (1UL << 0) 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ci/* SSR */ 6962306a36Sopenharmony_ci#define PRQ (1UL << 31) 7062306a36Sopenharmony_ci#define PMA (1UL << 30) 7162306a36Sopenharmony_ci#define IIC_EA (1UL << 21) 7262306a36Sopenharmony_ci#define IIC_EW (1UL << 20) 7362306a36Sopenharmony_ci#define IIC_ER (1UL << 19) 7462306a36Sopenharmony_ci#define IIC_EL (1UL << 18) 7562306a36Sopenharmony_ci#define IIC_EF (1UL << 17) 7662306a36Sopenharmony_ci#define AF2_in (1UL << 10) 7762306a36Sopenharmony_ci#define AF2_out (1UL << 9) 7862306a36Sopenharmony_ci#define AF1_in (1UL << 8) 7962306a36Sopenharmony_ci#define AF1_out (1UL << 7) 8062306a36Sopenharmony_ci#define EC5S (1UL << 3) 8162306a36Sopenharmony_ci#define EC4S (1UL << 2) 8262306a36Sopenharmony_ci#define EC2S (1UL << 1) 8362306a36Sopenharmony_ci#define EC1S (1UL << 0) 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci/* PCI_BT_A */ 8662306a36Sopenharmony_ci#define BurstA1_in (1UL << 26) 8762306a36Sopenharmony_ci#define ThreshA1_in (1UL << 24) 8862306a36Sopenharmony_ci#define BurstA1_out (1UL << 18) 8962306a36Sopenharmony_ci#define ThreshA1_out (1UL << 16) 9062306a36Sopenharmony_ci#define BurstA2_in (1UL << 10) 9162306a36Sopenharmony_ci#define ThreshA2_in (1UL << 8) 9262306a36Sopenharmony_ci#define BurstA2_out (1UL << 2) 9362306a36Sopenharmony_ci#define ThreshA2_out (1UL << 0) 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ci/* MC1 */ 9662306a36Sopenharmony_ci#define MRST_N (1UL << 15) 9762306a36Sopenharmony_ci#define EAP (1UL << 9) 9862306a36Sopenharmony_ci#define EI2C (1UL << 8) 9962306a36Sopenharmony_ci#define TR_E_A2_OUT (1UL << 3) 10062306a36Sopenharmony_ci#define TR_E_A2_IN (1UL << 2) 10162306a36Sopenharmony_ci#define TR_E_A1_OUT (1UL << 1) 10262306a36Sopenharmony_ci#define TR_E_A1_IN (1UL << 0) 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ci/* MC2 */ 10562306a36Sopenharmony_ci#define UPLD_IIC (1UL << 0) 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ci/* ACON1 */ 10862306a36Sopenharmony_ci#define AUDIO_MODE (1UL << 29) 10962306a36Sopenharmony_ci#define MAXLEVEL (1UL << 22) 11062306a36Sopenharmony_ci#define A1_SWAP (1UL << 21) 11162306a36Sopenharmony_ci#define A2_SWAP (1UL << 20) 11262306a36Sopenharmony_ci#define WS0_CTRL (1UL << 18) 11362306a36Sopenharmony_ci#define WS0_SYNC (1UL << 16) 11462306a36Sopenharmony_ci#define WS1_CTRL (1UL << 14) 11562306a36Sopenharmony_ci#define WS1_SYNC (1UL << 12) 11662306a36Sopenharmony_ci#define WS2_CTRL (1UL << 10) 11762306a36Sopenharmony_ci#define WS2_SYNC (1UL << 8) 11862306a36Sopenharmony_ci#define WS3_CTRL (1UL << 6) 11962306a36Sopenharmony_ci#define WS3_SYNC (1UL << 4) 12062306a36Sopenharmony_ci#define WS4_CTRL (1UL << 2) 12162306a36Sopenharmony_ci#define WS4_SYNC (1UL << 0) 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci/* ACON2 */ 12462306a36Sopenharmony_ci#define A1_CLKSRC (1UL << 27) 12562306a36Sopenharmony_ci#define A2_CLKSRC (1UL << 22) 12662306a36Sopenharmony_ci#define INVERT_BCLK1 (1UL << 21) 12762306a36Sopenharmony_ci#define INVERT_BCLK2 (1UL << 20) 12862306a36Sopenharmony_ci#define BCLK1_OEN (1UL << 19) 12962306a36Sopenharmony_ci#define BCLK2_OEN (1UL << 18) 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci/* IICSTA */ 13262306a36Sopenharmony_ci#define IICCC (1UL << 8) 13362306a36Sopenharmony_ci#define ABORT (1UL << 7) 13462306a36Sopenharmony_ci#define SPERR (1UL << 6) 13562306a36Sopenharmony_ci#define APERR (1UL << 5) 13662306a36Sopenharmony_ci#define DTERR (1UL << 4) 13762306a36Sopenharmony_ci#define DRERR (1UL << 3) 13862306a36Sopenharmony_ci#define AL (1UL << 2) 13962306a36Sopenharmony_ci#define ERR (1UL << 1) 14062306a36Sopenharmony_ci#define BUSY (1UL << 0) 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ci/* IICTFR */ 14362306a36Sopenharmony_ci#define BYTE2 (1UL << 24) 14462306a36Sopenharmony_ci#define BYTE1 (1UL << 16) 14562306a36Sopenharmony_ci#define BYTE0 (1UL << 8) 14662306a36Sopenharmony_ci#define ATRR2 (1UL << 6) 14762306a36Sopenharmony_ci#define ATRR1 (1UL << 4) 14862306a36Sopenharmony_ci#define ATRR0 (1UL << 2) 14962306a36Sopenharmony_ci#define ERR (1UL << 1) 15062306a36Sopenharmony_ci#define BUSY (1UL << 0) 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_ci#define START 3 15362306a36Sopenharmony_ci#define CONT 2 15462306a36Sopenharmony_ci#define STOP 1 15562306a36Sopenharmony_ci#define NOP 0 156