diff options
author | Christian Pointner <equinox@helsinki.at> | 2024-05-10 18:52:23 (GMT) |
---|---|---|
committer | Christian Pointner <equinox@helsinki.at> | 2024-05-10 18:52:23 (GMT) |
commit | a641800acf13b5fb1463d4280c3ee7fc267143fb (patch) | |
tree | 248b647a682f71d9eb90d14d24081368ea905a42 /snd-alpx/alpx_reg.h | |
parent | cc4badffe0e02d159c21eb90ea080a6a2f90cb4b (diff) |
import whole driver package
Diffstat (limited to 'snd-alpx/alpx_reg.h')
-rw-r--r-- | snd-alpx/alpx_reg.h | 619 |
1 files changed, 0 insertions, 619 deletions
diff --git a/snd-alpx/alpx_reg.h b/snd-alpx/alpx_reg.h deleted file mode 100644 index 276e16d..0000000 --- a/snd-alpx/alpx_reg.h +++ /dev/null @@ -1,619 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* -* Support for Digigram AlpX PCI-e boards -* -* Copyright (c) 2024 Digigram Digital (info@digigram.com) -*/ - -#ifndef _ALPX_REG_H_ -#define _ALPX_REG_H_ - -/* Macros */ - -#define ALPX_BASE(variant, group) \ - (variant ## _ ## group ## _BASE) - -#define ALPX_OFFSET(variant, group, reg) \ - ((variant ## _ ## group ## _BASE) + \ - (variant ## _ ## group ## _ ## reg ## _REG)) - -#define ALPX_AREA(alpx_dev, variant, group) \ - ((alpx_dev)->base + ALPX_BASE(variant, group)) - -#define ALPX_ITEM_REG(variant, group, index) \ - ((variant ## _ ## group ## _BASE) + \ - (variant ## _ ## group ## _ ## index)) - -#define ALPX_REG(alpx_dev, variant, group, reg) \ - ((alpx_dev)->base + ALPX_OFFSET(variant, group, reg)) - -#define ALPX_REG_ARRAY(alpx_dev, variant, group, index) \ - ((alpx_dev)->base + ALPX_ITEM_REG(variant, group, index)) - -#define ALPX_COMMON_OFFSET(variant, group, reg) \ - ((variant ## _ ## group ## _BASE) + \ - (ALPX_COMMON_ ## reg ## _REG)) - -#define ALPX_COMMON_REG(alpx_dev, variant, group, reg) \ - ((alpx_dev)->base + ALPX_COMMON_OFFSET(variant, group, reg)) - -/* Conversion Register index to register offset, register are 32 bits words */ -#define ALP_INDEX_TO_REG_OFFSET(i) ((i) * 4) - - -/* PCI */ - -#define ALPX_PCI_BAR 0 -#define ALPX_PCI_ID_DEVICE 0x0002 - -#define ALPX_PCI_ID_SUBSYSTEM_MADI 0x0020 -#define ALPX_PCI_ID_SUBSYSTEM_ALP222 0x0040 -#define ALPX_PCI_ID_SUBSYSTEM_ALP222_MIC 0x0840 -#define ALPX_PCI_ID_SUBSYSTEM_ALP442 0x0080 -#define ALPX_PCI_ID_SUBSYSTEM_ALP442_MIC 0x0880 -#define ALPX_PCI_ID_SUBSYSTEM_ALP882 0x00C0 -#define ALPX_PCI_ID_SUBSYSTEM_ALP882_MIC 0x08C0 -#define ALPX_PCI_ID_SUBSYSTEM_MADI_LOOPBACK 0x0000 -#define ALPX_PCI_ID_SUBSYSTEM_ALPDANTE 0x00E0 - - -/* This one is a very special one : The production area is invalid */ -#define ALPX_PCI_ID_SUBSYSTEM_MADI_ALP_DEAD 0xDEAD - -/* UNKNOWN */ -#define ALPUNKNOWN_GPIO_BASE 0xFFFFF - -/* ALPX Base */ - -#define ALP_SHARED_BASE 0x50000 -#define ALP_SHARED_SIZE 8 * 1024 -#define ALP_PROC_BASE 0x60000 -#define ALP_CONTROL_BASE 0x70000 -#define ALP_CLK_MANAGER_BASE ALP_CONTROL_BASE - - -/* Alpxxx Flash defs */ -/** Common size for all the data areas in Flash, exclude the FIRMWARE **/ -#define ALPxxx_FLASH_DATA_AREAS_SIZE (32*1024) - -/** PRODUCTION Area in GOLDEN Region **/ -#define ALPxxx_FLASH_GOLDEN_PRODUCTION_BASE 0x228000 - -/* PRODUCTION structure */ -#define ALPX_SERIAL_OFFSET_IN_PRODUCTION 0 - -/* BUILD version register : common addresses */ -#define ALP_CONTROL_DESIGN_VERSION_REG 0x100 -#define ALP_CONTROL_BUILD_VERSION_REG 0x104 - -#define ALP_CONTROL_BUILD_VERSION_MASK GENMASK(15,0) - - -/** Multi-channels cards **/ - -/* Clock Manager */ -#define ALPMC_CLK_MANAGER_CONFIG_REG 0x24 -#define ALPMC_CLK_MANAGER_CONFIG_FS(v) ((v) & GENMASK(4, 0)) -#define ALPMC_CLK_MANAGER_CONFIG_FS_MASK GENMASK(4, 0) - - -#define ALPMC_CLK_MANAGER_EFFECTIVE_FS(v) (((v) & GENMASK(20, 16)) >> 16) -#define ALPMC_CLK_MANAGER_EFFECTIVE_FS_INVALID 0 -#define ALPMC_CLK_MANAGER_EFFECTIVE_FS_32K 5 -#define ALPMC_CLK_MANAGER_EFFECTIVE_FS_44_1K 6 -#define ALPMC_CLK_MANAGER_EFFECTIVE_FS_48K 7 -#define ALPMC_CLK_MANAGER_EFFECTIVE_FS_DOUBLE BIT(3) -#define ALPMC_CLK_MANAGER_EFFECTIVE_FS_QUAD BIT(4) -#define ALPMC_CLK_MANAGER_EFFECTIVE_FS_BASE_MASK GENMASK(2, 0) - - -#define ALPMC_CLK_MANAGER_CONFIG_CLK_CURRENT_VALUE_MASK GENMASK(20, 16) -#define ALPMC_CLK_MANAGER_CONFIG_CLK_CURRENT_VALUE_POS 16 -#define ALPMC_CLK_MANAGER_CONFIG_CLK_CURRENT_VALUE_QTY 8 - -#define ALPMC_CLK_MANAGER_SOURCE(v) (((v) & GENMASK(23, 21)) >> 21) -#define ALPMC_CLK_MANAGER_SOURCE_INTERNAL 0 -#define ALPMC_CLK_MANAGER_SOURCE_SIC 1 -#define ALPMC_CLK_MANAGER_SOURCE_WCLK_IN 2 -#define ALPMC_CLK_MANAGER_SOURCE_AES_SYNC 3 -#define ALPMC_CLK_MANAGER_SOURCE_AES_AUDIO_12 4 -#define ALPMC_CLK_MANAGER_SOURCE_AES_AUDIO_34 5 -#define ALPMC_CLK_MANAGER_SOURCE_AES_AUDIO_56 6 -#define ALPMC_CLK_MANAGER_SOURCE_AES_AUDIO_78 7 -#define ALPMC_CLK_MANAGER_SOURCE_DANTE 8 - -/* Pre FW V240 compatibility support */ -#define ALP882_APP_PREFW240_CLK_MANAGER_SOURCE_WCLK_IN 0 -#define ALP882_APP_PREFW240_CLK_MANAGER_SOURCE_AES_SYNC 1 -#define ALP882_APP_PREFW240_CLK_MANAGER_SOURCE_AES_AUDIO_12 2 -#define ALP882_APP_PREFW240_CLK_MANAGER_SOURCE_AES_AUDIO_34 3 -#define ALP882_APP_PREFW240_CLK_MANAGER_SOURCE_AES_AUDIO_56 4 -#define ALP882_APP_PREFW240_CLK_MANAGER_SOURCE_AES_AUDIO_78 5 -#define ALP882_APP_PREFW240_CLK_MANAGER_SOURCE_INTERNAL 6 - -#define ALPMC_CLK_MANAGER_CONFIG_CLK_SRC_MASK GENMASK(23, 21) -#define ALPMC_CLK_MANAGER_CONFIG_CLK_SRC_POS 21 - -#define ALPMC_CLK_MANAGER_BASE ALP_CLK_MANAGER_BASE -#define ALPMC_CONTROL_BASE ALP_CLK_MANAGER_BASE -#define ALPMC_GPIO_BASE 0x45000 -#define ALPMC_CODEC_CTRL_BASE 0x71000 -#define ALPMC_MIXER_BASE 0x74000 -#define ALPMC_AMPLI_IN_BASE 0x79000 -#define ALPMC_AMPLI_OUT_BASE 0x7c000 - -/* FS switch delay required by HW (in ms) */ -#define ALPMC_FS_SWITCH_DELAY 500 - -/* Supported Firmware versions */ -#define ALPMC_SUPPORTED_BASE_FW_VERSION 247 -#define ALP222_SUPPORTED_BASE_FW_VERSION 283 -/* The base Firmware version for AlpDANTE supported by this driver */ -#define ALPDANTE_SUPPORTED_BASE_FW_VERSION 316 - - - -/* GPIO */ - -#define ALPMC_GPIO_INPUT_REG 0x08 -#define ALPMC_GPIO_INPUT_QTY 8 -#define ALPMC_GPIO_OUTPUT_REG 0x0C -#define ALPMC_GPIO_OUTPUT_QTY 8 - -/* ALPMC Gain access*/ -#define ALPMC_GAIN_TABLE_BASE(c) (0xc + (c) * 0x4) - -/* Codec */ -#define ALPMC_INPUT_PARAMS_REG 0x2C -#define ALPMC_MIC_INPUT_PH_1_MASK BIT(0) -#define ALPMC_MIC_INPUT_PH_2_MASK BIT(1) -#define ALPMC_MIC_INPUT_PH_3_MASK BIT(2) -#define ALPMC_MIC_INPUT_PH_4_MASK BIT(3) -#define ALPMC_MIC_INPUT_PH_5_MASK BIT(4) -#define ALPMC_MIC_INPUT_PH_6_MASK BIT(5) -#define ALPMC_MIC_INPUT_PH_7_MASK BIT(6) -#define ALPMC_MIC_INPUT_PH_8_MASK BIT(7) - -#define ALPMC_MIC_INPUT_PH_1_POS 0 -#define ALPMC_MIC_INPUT_PH_2_POS 1 -#define ALPMC_MIC_INPUT_PH_3_POS 2 -#define ALPMC_MIC_INPUT_PH_4_POS 3 -#define ALPMC_MIC_INPUT_PH_5_POS 4 -#define ALPMC_MIC_INPUT_PH_6_POS 5 -#define ALPMC_MIC_INPUT_PH_7_POS 6 -#define ALPMC_MIC_INPUT_PH_8_POS 7 - -#define ALPMC_CODEC_PGA_REGS 0x0C - -#define ALPMC_CODEC_AES_SRC_CONTROL_REG 0x08 -#define ALPMC_CODEC_AES_SRC_CONTROL_AUTO_DISABLE_1_2 BIT(0) -#define ALPMC_CODEC_AES_SRC_CONTROL_AUTO_DISABLE_3_4 BIT(1) -#define ALPMC_CODEC_AES_SRC_CONTROL_AUTO_DISABLE_5_6 BIT(2) -#define ALPMC_CODEC_AES_SRC_CONTROL_AUTO_DISABLE_7_8 BIT(3) - -#define ALPMC_CODEC_AES_SRC_1_2_MASK BIT(0) -#define ALPMC_CODEC_AES_SRC_1_2_POS 0 -#define ALPMC_CODEC_AES_SRC_3_4_MASK BIT(1) -#define ALPMC_CODEC_AES_SRC_3_4_POS 1 -#define ALPMC_CODEC_AES_SRC_5_6_MASK BIT(2) -#define ALPMC_CODEC_AES_SRC_5_6_POS 2 -#define ALPMC_CODEC_AES_SRC_7_8_MASK BIT(3) -#define ALPMC_CODEC_AES_SRC_7_8_POS 3 - -/* MC Mixer */ -/* One Gain value per register */ -#define ALPMC_MIXER_ENTRIES_IN_REG 1 - -#define ALPMC_MIXER_GAIN_MASK GENMASK(ALPX_MIXER_GAIN_BITS - 1, 0) - -#define ALPMC_MIXER_GAIN_SEL(v) ((v) & GENMASK(ALPX_MIXER_GAIN_BITS - 1, 0)) - -#define ALPMC_MIXER_GAIN_VALUE(v) ((v) & GENMASK(ALPX_MIXER_GAIN_BITS-1, 0)) - -#define ALPMC_MIXER_GAIN_REG(size, in, out) (ALPX_MIXER_REG_ENTRIES_OFFSET + (out) * ((size) * 4 / ALPMC_MIXER_ENTRIES_IN_REG) + ((in) / ALPMC_MIXER_ENTRIES_IN_REG) * 4) - - -/* Dedicated to ALP882 */ - -#define ALP882_CHANNELS_DAW_COUNT 16 -#define ALP882_CHANNELS_ANALOG_COUNT 8 -#define ALP882_CHANNELS_AES_COUNT 8 - -#define ALP882_CHANNELS_IN_DAW_OFFSET 0 -#define ALP882_CHANNELS_IN_ANALOG_OFFSET (ALP882_CHANNELS_IN_DAW_OFFSET + \ - ALP882_CHANNELS_DAW_COUNT) -#define ALP882_CHANNELS_IN_AES_OFFSET (ALP882_CHANNELS_IN_ANALOG_OFFSET + \ - ALP882_CHANNELS_ANALOG_COUNT) - -#define ALP882_CHANNELS_OUT_ANALOG_OFFSET 0 -#define ALP882_CHANNELS_OUT_AES_OFFSET (ALP882_CHANNELS_OUT_ANALOG_OFFSET + \ - ALP882_CHANNELS_ANALOG_COUNT) -#define ALP882_CHANNELS_OUT_DAW_OFFSET (ALP882_CHANNELS_OUT_AES_OFFSET + \ - ALP882_CHANNELS_AES_COUNT) - - -/* ALP882 Clock Manager */ -#define ALP882_CLK_MANAGER_CONFIG_CLK_SRC_QTY 8 - -/* Alp 882 clk source in Pre 240 FW */ -#define ALP882_APP_PREFW240_CLK_MANAGER_CLK_SRC_QTY 7 - -/* Mixer 882 */ -#define ALP882_MIXER_SIZE 32 - -/* Dedicated to ALP442 */ - -#define ALP442_CHANNELS_ANALOG_COUNT 4 -#define ALP442_CHANNELS_AES_COUNT 4 -#define ALP442_CHANNELS_DAW_COUNT (ALP442_CHANNELS_ANALOG_COUNT + \ - ALP442_CHANNELS_AES_COUNT) - - -#define ALP442_CHANNELS_IN_DAW_OFFSET 0 -#define ALP442_CHANNELS_IN_ANALOG_OFFSET (ALP442_CHANNELS_IN_DAW_OFFSET + \ - ALP442_CHANNELS_DAW_COUNT) -#define ALP442_CHANNELS_IN_AES_OFFSET (ALP442_CHANNELS_IN_ANALOG_OFFSET + \ - ALP442_CHANNELS_ANALOG_COUNT) - -#define ALP442_CHANNELS_OUT_ANALOG_OFFSET 0 -#define ALP442_CHANNELS_OUT_AES_OFFSET (ALP442_CHANNELS_OUT_ANALOG_OFFSET + \ - ALP442_CHANNELS_ANALOG_COUNT) -#define ALP442_CHANNELS_OUT_DAW_OFFSET (ALP442_CHANNELS_OUT_AES_OFFSET + \ - ALP442_CHANNELS_AES_COUNT) - - -/* ALP442 Clock Manager */ -#define ALP442_CLK_MANAGER_CONFIG_CLK_SRC_QTY 6 -#define ALP442_CLK_MANAGER_SOURCE_INTERNAL ALPMC_CLK_MANAGER_SOURCE_INTERNAL - -/* Mixer 442 */ -#define ALP442_MIXER_SIZE (ALP442_CHANNELS_ANALOG_COUNT + \ - ALP442_CHANNELS_AES_COUNT + \ - ALP442_CHANNELS_DAW_COUNT) - - - -/* Alp 222 */ - -#define ALP222_ANALOG_QTY 0x2 -#define ALP222_AES3_QTY 0x2 - -#define ALP222_EXT_CHANNEL_QTY (ALP222_ANALOG_QTY + ALP222_AES3_QTY) - -#define ALP222_DAW_QTY ALP222_EXT_CHANNEL_QTY - - -#define ALP222_CLK_MANAGER_BASE ALP_CLK_MANAGER_BASE -#define ALP222_CONTROL_BASE ALP_CLK_MANAGER_BASE -#define ALP222_AMPLI_IN_BASE 0x79000 -#define ALP222_AMPLI_OUT_BASE 0x7c000 -#define ALP222_CODEC_CTRL_BASE 0x71000 -#define ALP222_GPIO_BASE 0x45000 -#define ALP222_MIXER_BASE 0x73000 - -#define ALP222_DAW_PLAYBACK_AMPLI_BASE ALP222_AMPLI_IN_BASE + ALPX_GAIN_REG(0) -#define ALP222_ANALOG_CAPTURE_AMPLI_BASE ALP222_AMPLI_IN_BASE + ALPX_GAIN_REG(ALP222_DAW_QTY) -#define ALP222_AES3_CAPTURE_AMPLI_BASE ALP222_AMPLI_IN_BASE + ALPX_GAIN_REG(ALP222_DAW_QTY + ALP222_ANALOG_QTY) - -#define ALP222_ANALOG_PLAYBACK_AMPLI_BASE ALP222_AMPLI_OUT_BASE + ALPX_GAIN_REG(0) -#define ALP222_AES3_PLAYBACK_AMPLI_BASE ALP222_AMPLI_OUT_BASE + ALPX_GAIN_REG(ALP222_ANALOG_QTY) -#define ALP222_DAW_CAPTURE_AMPLI_BASE ALP222_AMPLI_OUT_BASE + ALPX_GAIN_REG(ALP222_ANALOG_QTY + ALP222_AES3_QTY) - - -/* Alp222 GPIO */ -#define ALP222_GPIO_INPUT_REG 0x00 -#define ALP222_GPIO_INPUT_QTY 2 -#define ALP222_GPIO_OUTPUT_REG 0x08 -#define ALP222_GPIO_OUTPUT_QTY 2 - -/* Alp222 CODEC*/ -#define ALP222_CODEC_PGA_REGS 0x08 - -/* Alp MADI */ -#define ALP222_MADI_QTY 0x40 - -#define ALPMADI_CHANNEL_QTY ALP222_MADI_QTY - -//MADI Unit & DAW Unit -#define ALPMADI_AUDIO_UNIT_QTY 2 - -#define ALPMADI_CLK_MANAGER_BASE ALP_CLK_MANAGER_BASE -#define ALPMADI_CONTROL_BASE ALP_CLK_MANAGER_BASE -#define ALPMADI_ROUTER_IN_BASE 0x71000 -#define ALPMADI_MIXER_BASE 0x72000 -#define ALPMADI_ROUTER_OUT_BASE 0x73000 -#define ALPMADI_MEAS_DAW_IN_BASE 0x74000 -#define ALPMADI_GAIN_DAW_IN_BASE 0x75000 -#define ALPMADI_MEAS_DAW_OUT_BASE 0x76000 -#define ALPMADI_GAIN_DAW_OUT_BASE 0x77000 -#define ALPMADI_MEAS_MADI_IN_BASE 0x78000 -#define ALPMADI_GAIN_MADI_IN_BASE 0x79000 -#define ALPMADI_MEAS_MADI_OUT_BASE 0x7A000 -#define ALPMADI_GAIN_MADI_OUT_BASE 0x7B000 -#define ALPMADI_GPIO_BASE ALPUNKNOWN_GPIO_BASE - -#define ALPMADI_GPIO_INPUT_REG 0xFF -#define ALPMADI_GPIO_OUTPUT_REG 0xFF - -/* Common */ - -#define ALPX_COMMON_ID_REG 0x0 - - -#define ALPX_COMMON_VERSION_REG 0x4 -#define ALPX_COMMON_VERSION_VERSION(v) ((v) >> 16) -#define ALPX_COMMON_VERSION_REVISION(v) ((v) & GENMASK(15, 0)) - -#define ALPX_DANTE_VERSION_VERSION(v) ((v) >> 8) -#define ALPX_DANTE_VERSION_REVISION(v) ((v) & GENMASK(7, 0)) - - -/* Common Clock 222/882 models*/ - -#define ALPxxx_CLK_MANAGER_CLK_VALUES_QTY 14 - -/* Values below use the full 5 bits of clock definitions : factor | base */ -#define ALPxxx_CLK_MANAGER_CLK_VALUE_8K (0) -#define ALPxxx_CLK_MANAGER_CLK_VALUE_11_025K (1) -#define ALPxxx_CLK_MANAGER_CLK_VALUE_16K (2) -#define ALPxxx_CLK_MANAGER_CLK_VALUE_22_05K (3) -#define ALPxxx_CLK_MANAGER_CLK_VALUE_24K (4) -#define ALPxxx_CLK_MANAGER_CLK_VALUE_32K (5) -#define ALPxxx_CLK_MANAGER_CLK_VALUE_44_1K (6) -#define ALPxxx_CLK_MANAGER_CLK_VALUE_48K (7) -#define ALPxxx_CLK_MANAGER_CLK_VALUE_64K (0xD) -#define ALPxxx_CLK_MANAGER_CLK_VALUE_128K (0x15) -#define ALPxxx_CLK_MANAGER_CLK_VALUE_88_2K (0xE) -#define ALPxxx_CLK_MANAGER_CLK_VALUE_176_4K (0x16) -#define ALPxxx_CLK_MANAGER_CLK_VALUE_96K (0xF) -#define ALPxxx_CLK_MANAGER_CLK_VALUE_192K (0x17) - -/* ALP222 Clock Manager */ - -#define ALP222_CLK_MANAGER_CONFIG_REG 0x28 -#define ALP222_CLK_MANAGER_CONFIG_FS_MASK GENMASK(4, 0) -#define ALP222_CLK_MANAGER_CONFIG_CLK_CURRENT_VALUE_MASK GENMASK(20, 16) -#define ALP222_CLK_MANAGER_CONFIG_CLK_CURRENT_VALUE_POS 16 - - -#define ALP222_CLK_MANAGER_CLK_SRC_MASK GENMASK(23, 21) -#define ALP222_CLK_MANAGER_CLK_SRC_POS 21 -#define ALP222_CLK_MANAGER_CLK_SRC_QTY 5 -#define ALP222_CLK_MANAGER_CLK_SRC_INTERNAL (0) -#define ALP222_CLK_MANAGER_CLK_SRC_SIC (1) -#define ALP222_CLK_MANAGER_CLK_SRC_WCLK (2) -#define ALP222_CLK_MANAGER_CLK_SRC_AES_SYNC (3) -#define ALP222_CLK_MANAGER_CLK_SRC_AES_AUDIO (4) -#define ALP222_CLK_MANAGER_CLK_SRC_MAX ALP222_CLK_MANAGER_CLK_SRC_AES_AUDIO - -/* Pre FW 283 clock sources definitions */ -#define ALP222_APPS_PREFW283_CLK_MANAGER_CLK_SRC_QTY 4 -#define ALP222_CLK_MANAGER_APPSPREFW283_CLK_SRC_WCLK 0 -#define ALP222_CLK_MANAGER_APPSPREFW283_CLK_SRC_AES_SYNC 1 -#define ALP222_CLK_MANAGER_APPSPREFW283_CLK_SRC_AES_AUDIO 2 -#define ALP222_CLK_MANAGER_APPSPREFW283_CLK_SRC_INTERNAL 3 - -/* ALPMADI Clock Manager */ - -#define ALPMADI_CLK_MANAGER_CONFIG_REG 0x1C -#define ALPMADI_CLK_MANAGER_CONFIG_FS_MASK GENMASK(10, 8) -#define ALPMADI_CLK_MANAGER_CONFIG_FS_44_1K (0 << 8) -#define ALPMADI_CLK_MANAGER_CONFIG_FS_48K (1 << 8) -#define ALPMADI_CLK_MANAGER_CONFIG_FS_88_2K (2 << 8) -#define ALPMADI_CLK_MANAGER_CONFIG_FS_96K (3 << 8) -#define ALPMADI_CLK_MANAGER_CONFIG_FS_176_4K (4 << 8) -#define ALPMADI_CLK_MANAGER_CONFIG_FS_192K (5 << 8) - -/* AlpDANTE Clock Manager clock registervalues*/ -#define ALPDANTE_CLK_MANAGER_CLK_VALUE_44_1K 0x01 -#define ALPDANTE_CLK_MANAGER_CLK_VALUE_48K 0x00 -#define ALPDANTE_CLK_MANAGER_CLK_VALUE_88_2K 0x03 -#define ALPDANTE_CLK_MANAGER_CLK_VALUE_96K 0x02 -#define ALPDANTE_CLK_MANAGER_CLK_VALUE_176_4K 0x05 -#define ALPDANTE_CLK_MANAGER_CLK_VALUE_192K 0x04 - -/* ALPX PROC */ -/* Embedded processor dedicated area length (in bytes) */ -#define ALP_PROC_AREA_LENGTH 0x800U - -#define ALP_PROC_VERSION_REG 0x00 - -#define ALP_PROC_STATUS_REG 0x04 -#define ALP_PROC_STATUS_FAIL BIT(0) -#define ALP_PROC_STATUS_PENDING BIT(1) - -#define ALP_PROC_FAILS_REG 0x08 -#define ALP_PROC_FAILS_FAIL_NONE 0 - -#define ALP_PROC_COMMAND_REG 0x0C - -#define ALP_PROC_COMMAND_MAKE_P16(_cmd, _p16) ((((_p16) & 0x0FFFF) << 8) | \ - (_cmd)) -#define ALP_PROC_CMD_READ_FLASH_SECTOR 0x10 -#define ALP_PROC_CMD_WRITE_FLASH_SECTOR 0x0A - -#define ALP_PROC_FWCONFIG_REG 0x10 -#define ALP_PROC_FWCONFIG_CLKSRC_UP_MASK GENMASK(0,0) -#define ALP_PROC_FWCONFIG_CLKSRC_UP_POS 0 - -#define ALP_PROC_FWCONFIG_CLKSRC_DOWN_MASK GENMASK(1,1) -#define ALP_PROC_FWCONFIG_CLKSRC_DOWN_POS 1 - - -/* PROC Logs base register */ -#define ALP_PROC_LOG_OFFSET 0x40U -#define ALP_PROC_LOG_BASE ALP_PROC_BASE + ALP_PROC_LOG_OFFSET - -/* Log length, -8 ?? but done in the reference application from Easii-IC (log.c) */ -#define ALP_PROC_LOG_LENGTH ALP_PROC_AREA_LENGTH - ALP_PROC_LOG_OFFSET - 8U - -/* Clock source priority def */ -#define ALP_PROC_CLK_SOURCE_PRIO_REG 0x14 - -#define ALP_PROC_CLK_SOURCE_PRIO0_MASK GENMASK(3,0) -#define ALP_PROC_CLK_SOURCE_PRIO0_POS 0 - -#define ALP_PROC_CLK_SOURCE_PRIO1_MASK GENMASK(7,4) -#define ALP_PROC_CLK_SOURCE_PRIO1_POS 4 - -#define ALP_PROC_CLK_SOURCE_PRIO2_MASK GENMASK(11,8) -#define ALP_PROC_CLK_SOURCE_PRIO2_POS 8 - -#define ALP_PROC_CLK_SOURCE_PRIO3_MASK GENMASK(15,12) -#define ALP_PROC_CLK_SOURCE_PRIO3_POS 12 - -/* ALPX GPIO */ -#define ALPX_GPIO_MASK(i) BIT(i) -#define ALPX_GPIO_SEL(i, v) (((v) << (i)) & ALPX_GPIO_MASK(i)) -#define ALPX_GPIO_VALUE(i, v) (((v) & ALPX_GPIO_MASK(i)) >> (i)) - -/* Control */ -#define ALP_CONTROL_PCIE_SUBSYS_ID_REG 0x8 -#define ALP_CONTROL_SAMPLES_CNT_REG 0x18 -#define ALP_CLK_MANAGER_SAMPLES_COUNT_REG 0x18 - -#define ALP222_CONTROL_PCIE_MASK_IT_REG 0xc -#define ALP222_CONTROL_WC_RTERM_REG 0x1c -#define ALP222_CONTROL_PCIE_WARM_RESET_REG 0x10 -#define ALP222_CONTROL_PCIE_WARM_RESET_VALUE 0xc07d8e51 -#define ALP222_CONTROL_PCIE_COLD_RESET_REG 0x14 -#define ALP222_CONTROL_PCIE_COLD_RESET_VALUE 0x8e5ef96a -#define ALP222_CONTROL_FS_REG 0x28 -#define ALP222_CODEC_CTRL_ASRC_REG 0x10 -#define ALP222_MIC_CONTROL_REG 0x24 - -#define ALPMADI_CONTROL_WARM_REBOOT_FPGA_REG 0x10 -#define ALPMADI_CONTROL_COLD_REBOOT_FPGA_REG 0x14 -#define ALPMADI_CONTROL_BLINK_LED_REG 0x20 -#define ALPMADI_CONTROL_EXT_ITF_CONFIG_REG 0x24 -#define ALPMADI_CONTROL_FS_SEL_REG 0x28 - -#define ALPMADI_CONTROL_EXT0_STATUS_CTRL_REG 0x2c -#define ALPMADI_CONTROL_EXT1_STATUS_CTRL_REG 0x30 -#define ALPMADI_CONTROL_EXT2_STATUS_CTRL_REG 0x34 -#define ALPMADI_CONTROL_EXT3_STATUS_CTRL_REG 0x38 -#define ALPMADI_CONTROL_PI_PARAMS_REG 0x3c - - -#define ALPMADI_CONTROL_BLINK_LED_EN BIT(0) -#define ALPMADI_CONTROL_PI_PARAMS_KI(v) ((v) & GENMASK(15, 0)) -#define ALPMADI_CONTROL_PI_PARAMS_KP(v) (((v) << 16) & GENMASK(31, 16)) -#define ALPMADI_CONTROL_EXT_ITF_CONFIG_MADI_LINK(v) ((v) & GENMASK(1, 0)) -#define ALPMADI_CONTROL_EXT_ITF_CONFIG_BNC_SIGNAL(v) (((v<<8)) & GENMASK(8, 8)) - -/* Codec */ -#define ALPX_CODEC_CTRL_GAIN_REG(i) ((i) * 0x4) - -/* Gains */ -#define ALPX_GAIN_VALUE_BITS 10 -#define ALPX_GAIN_REG_ENTRIES_OFFSET 0xC -#define ALPX_GAIN_REG(i) (ALPX_GAIN_REG_ENTRIES_OFFSET + (i) * 0x4) - -/* Router */ -#define ALPMADI_ROUTER_SIZE 128 - -#define ALPX_ROUTER_REG_ENTRIES_OFFSET 0x8 - -/* RAW ACCESS to router register i*/ -#define ALPX_ROUTER_REG(i) (0x8 + ((i) / 4) * 0x4) - -#define ALPX_ROUTER_SHIFT(i) (((i) % 4) * 8) -#define ALPX_ROUTER_MASK(i) (GENMASK(7, 0) << \ - ALPX_ROUTER_SHIFT(i)) -#define ALPX_ROUTER_SEL(i, v) (((v) & GENMASK(7, 0)) << \ - ALPX_ROUTER_SHIFT(i)) -#define ALPX_ROUTER_VALUE(i, v) (((v) >> \ - ALPX_ROUTER_SHIFT(i)) & \ - GENMASK(7, 0)) - -#define ALPMADI_ROUTER_PORT(i) (ALPX_ROUTER_REG_ENTRIES_OFFSET + ((i) * 0x4)) - -#define ALPMADI_ROUTER_IN_PORT(i) ALPMADI_ROUTER_PORT(i) - -#define ALPMADI_ROUTER_OUT_PORT(i) ALPMADI_ROUTER_PORT(i) - -/* Mixer */ -#define ALPX_MIXER_GAIN_BITS 10 -#define ALPX_GAIN_0dB 0x385 -#define ALPX_GAIN_MUTE 0x000 - -/** Mixer 222 **/ - -/* Mixer Input i, output j & j+1*/ -#define ALP222_MIXER_SIZE 8 -#define ALPMADI_MIXER_SIZE 16 - -//2 gains per register -#define ALPMADI_MIXER_BANK_SIZE 2 - -#define ALP222_MIXER_ENTRIES_IN_REG 2 - -//#define ALPX_GAIN_REG_VALUE_STEP_PER_DB 10 -#define ALPX_GAIN_dB_TO_10ofdB (dB) ((db) * 10) - - -#define ALPX_GAIN_REG_VALUE_FROM_10ofDB(val10ofdb) (ALPX_GAIN_0dB + (val10ofdb)) - -#define ALPX_MIXER_REG_ENTRIES_OFFSET 0x8 - -/* Return the @reg for the given (input/output) in the mixer. MIND the register structure !! */ -//MADI structured as In into Outs -//EDF MADI formula TO BE CHECKED -//#define ALPMADI_MIXER_GAIN_REG(mixerSize, inputId, outputId) (0x8 + ((((mixerSize) * (inputId) + (outputId)) * 4 / ALPX_MIXER_ENTRIES_IN_REG))) - -// Structured as : Out from Ins -#define ALP222_MIXER_GAIN_REG(size, in, out) (ALPX_MIXER_REG_ENTRIES_OFFSET + (out) * ((size) * 4 / ALP222_MIXER_ENTRIES_IN_REG) + ((in) / ALP222_MIXER_ENTRIES_IN_REG) * 4) - -//Odd entry is in higher bits -#define ALP222_MIXER_GAIN_SHIFT_STEP(i) (((i) & 1) ? ALPX_MIXER_GAIN_BITS : 0) - -#define ALP222_MIXER_GAIN_MASK(i) (GENMASK(ALPX_MIXER_GAIN_BITS-1, 0) << \ - ALP222_MIXER_GAIN_SHIFT_STEP(i)) - -#define ALP222_MIXER_GAIN_SEL(i, v) (((v) & GENMASK(ALPX_MIXER_GAIN_BITS-1, 0)) << \ - ALP222_MIXER_GAIN_SHIFT_STEP(i)) - -#define ALP222_MIXER_GAIN_VALUE(i, v) (((v) >> \ - ALP222_MIXER_GAIN_SHIFT_STEP(i)) & \ - GENMASK(ALPX_MIXER_GAIN_BITS-1, 0)) - - -//Build the mixer register -//#define ALP222_MIXER_REG_VALUE(left, right) ((left)<< ALP_GAIN_VALUE_BITS | (right)) - -// Flags access -#define ALP222_CODEC_CTRL_ASRC_MASK GENMASK(0, 0) -#define ALP222_CODEC_CTRL_ASRC_POS 0 - -// MIC Options defs -#define ALP222_MIC_GAIN_L_MASK GENMASK(7,0) -#define ALP222_MIC_GAIN_L_POS 0 -#define ALP222_MIC_GAIN_WIDTH 8 - -#define ALP222_MIC_GAIN_R_MASK GENMASK(15,8) -#define ALP222_MIC_GAIN_R_POS 8 - - -#define ALP222_MIC_DC_L_MASK GENMASK(16,16) -#define ALP222_MIC_DC_L_POS 16 -#define ALP222_MIC_CM_L_MASK GENMASK(17,17) -#define ALP222_MIC_CM_L_POS 17 -#define ALP222_MIC_PH_L_MASK GENMASK(18,18) -#define ALP222_MIC_PH_L_POS 18 - -#define ALP222_MIC_DC_R_MASK GENMASK(19,19) -#define ALP222_MIC_DC_R_POS 19 -#define ALP222_MIC_CM_R_MASK GENMASK(20,20) -#define ALP222_MIC_CM_R_POS 20 -#define ALP222_MIC_PH_R_MASK GENMASK(21,21) -#define ALP222_MIC_PH_R_POS 21 - -#define ALP222_MIC_EN_L_MASK GENMASK(22,22) -#define ALP222_MIC_EN_R_MASK GENMASK(23,23) -#define ALP222_MIC_EN_L_POS 22 -#define ALP222_MIC_EN_R_POS 23 - - -#define ALP222_MIC_HERE_POS 31 - -#endif |