summaryrefslogtreecommitdiff
path: root/snd-alpx/alpx.h
diff options
context:
space:
mode:
authorChristian Pointner <equinox@helsinki.at>2024-05-10 18:52:23 (GMT)
committerChristian Pointner <equinox@helsinki.at>2024-05-10 18:52:23 (GMT)
commita641800acf13b5fb1463d4280c3ee7fc267143fb (patch)
tree248b647a682f71d9eb90d14d24081368ea905a42 /snd-alpx/alpx.h
parentcc4badffe0e02d159c21eb90ea080a6a2f90cb4b (diff)
import whole driver package
Diffstat (limited to 'snd-alpx/alpx.h')
-rw-r--r--snd-alpx/alpx.h268
1 files changed, 0 insertions, 268 deletions
diff --git a/snd-alpx/alpx.h b/snd-alpx/alpx.h
deleted file mode 100644
index 2cad9b9..0000000
--- a/snd-alpx/alpx.h
+++ /dev/null
@@ -1,268 +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_H_
-#define _ALPX_H_
-
-
-#include "alpx_reg.h"
-#include "alpx_streams.h"
-
-#include <linux/version.h>
-
-#if !defined (CONFIG_WITHOUT_GPIO)
-#define ALPX_WITH_GPIO
-#include <linux/gpio.h>
-#include <linux/gpio/driver.h>
-#endif
-
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/mutex.h>
-#include <sound/pcm.h>
-
-/* Values */
-
-#define CARD_NAME "Digigram AlpX"
-
-#define ALPX_VARIANT_FEATURE_GPIOS BIT(0)
-
-/* Structures */
-
-enum alpx_variant_model {
- ALPX_VARIANT_DEAD,
- ALPX_VARIANT_MODEL_MADI,
- ALPX_VARIANT_MODEL_MADI_LOOPBACK,
- ALPX_VARIANT_MODEL_ALP222,
- ALPX_VARIANT_MODEL_ALP222_MIC,
- ALPX_VARIANT_MODEL_ALP882,
- ALPX_VARIANT_MODEL_ALP882_MIC,
- ALPX_VARIANT_MODEL_ALP442,
- ALPX_VARIANT_MODEL_ALP442_MIC,
- ALPX_VARIANT_MODEL_ALPDANTE,
-};
-
-/* Flash partitions IDs */
-enum ALPX_FLASH_PARTITION_ID {
- ALPX_FLASH_PARTITION_GOLDEN_ID = 0,
- ALPX_FLASH_PARTITION_FW_ID,
- ALPX_FLASH_PARTITION_INIT_CFG_ID,
- ALPX_FLASH_PARTITION_USER_CFG_ID,
- ALPX_FLASH_PARTITION_PRODUCTION_ID,
- ALPX_FLASH_PARTITION_QTY
-};
-
-/* Flash partitions IDs in DEAD mode ! only production */
-enum ALPX_DEAD_FLASH_PARTITION_ID {
- ALPX_DEAD_FLASH_PARTITION_GOLDEN_PROD_ID = 0,
- ALPX_DEAD_FLASH_PARTITION_PRODUCTION_ID,
- ALPX_DEAD_FLASH_PARTITION_QTY
-};
-
-/* Structures */
-
-
-struct alpx_variant_gpios {
- unsigned int base;
- unsigned int inputs_reg_offset;
- unsigned int inputs_qty;
- unsigned int outputs_reg_offset;
- unsigned int outputs_qty;
-};
-
-struct alpx_flash_partitions {
- struct mtd_partition* partitions;
- uint32_t qty;
- uint32_t qty_for_fw_update;
-};
-
-struct alpx_variant {
- enum alpx_variant_model model;
- const char *shortname;
- const char *longname;
- const char *mixername;
- u64 features;
-
- struct alpx_control_descriptor *control_descriptors;
- unsigned int control_descriptors_count;
-
- struct snd_pcm_hardware* playback_hw;
- struct snd_pcm_hardware* capture_hw;
- struct alpx_variant_gpios gpios;
- uint32_t flash_golden_production_base;
- struct alpx_flash_partitions flash_partitions;
-};
-
-
-struct alpx_config {
- spinlock_t lock;
- unsigned int users;
-
- unsigned int rate;
-};
-
-struct alpx_identity {
- uint16_t sub_system_id; /* PCIe sub-system Id as read out of Production area*/
- uint32_t ver_fpga; /* FPGA version */
- uint32_t ver_mcu; /* MCU version.revision !! */
- uint64_t serial_number; /* Card full identifier tag */
-};
-
-struct alpx_device {
- struct device *dev;
- struct pci_dev *pci_dev;
-#if defined(ALPX_WITH_GPIO)
- struct gpio_chip gpio_chip;
-#endif
- void *base;
-
- struct platform_device *xdma_pdev;
- struct alpx_config config;
-
- struct alpx_control *controls;
- unsigned int controls_index;
- unsigned int controls_count;
-
- struct alpx_pipe capture;
- struct alpx_pipe playback;
-
- const struct alpx_variant *variant;
-
- struct mutex proc_mutex;
-
- struct mtd_info mtd_info;
-#ifdef WITH_REG_DEBUG
- uint32_t dbg_reg_offset;
-#endif
- struct alpx_identity identity;
-};
-
-/* Constants */
-
-// The flash chip size (in bytes).
-#define ALPX_FLASH_CHIP_SIZE 0x800000
-
-// Sector size conversions
-#define ALPX_FLASH_SECTOR_SHIFT 12
-#define ALPX_FLASH_SECTOR_SIZE (1 << ALPX_FLASH_SECTOR_SHIFT)
-
-/* Amplifiers gains */
-#define ALP_AMPLIFIER_GAIN_MIN_cdB -9010
-#define ALP_AMPLIFIER_GAIN_MAX_cdB 1200
-
-#define ALP_AMPLIFIER_GAIN_MIN_REG 0
-#define ALP_AMPLIFIER_GAIN_MAX_REG 1021
-
-/* MIC Gains tange in dB */
-#define ALP222_MIC_GAINS_MIN_REG_VAL 10
-#define ALP222_MIC_GAINS_MAX_REG_VAL 65
-#define ALP222_MIC_REG_GAIN_SHIFT 9
-#define ALP222_MIC_GAIN_MIN_cdB 1000
-#define ALP222_MIC_GAIN_MAX_cdB 6500
-
-
-/* ALP222 ANALOG Equalization amplifiers */
-#define ALP222_ANALOG_EQ_GAIN_MIN_cdB -8800
-#define ALP222_ANALOG_EQ_GAIN_MAX_cdB 3900
-
-#define ALP222_ANALOG_EQ_GAIN_MIN_REG 0
-#define ALP222_ANALOG_EQ_GAIN_MAX_REG 255
-
-/* Registers offset range : from 0x60000 up to 0x7C200*/
-#define ALP222_MIN_REG_OFFSET 0x60000
-#define ALP222_MAX_REG_OFFSET 0x7C200
-
-/* Special revisions */
-/* -The design version is 1.5- */
-#define ALP222_1_5_DESIGN_VERSION ((1<<16)|(5))
-
-/* BUILD version register appears in version :... */
-#define ALP222_DESIGN_WITH_BUILD_REGISTER_VERSION ALP222_1_5_DESIGN_VERSION
-
-
-/* Range of the LINE/MIC gains (in register domain)*/
-#define ALPMC_LINE_ANALOG_GAIN_MIN_REG 0
-#define ALPMC_LINE_ANALOG_GAIN_MIN_cdB -2400
-
-#define ALPMC_MIC_ANALOG_GAIN_MIN_REG ALPMC_LINE_ANALOG_GAIN_MIN_REG
-#define ALPMC_MIC_ANALOG_GAIN_MIN_cdB ALPMC_LINE_ANALOG_GAIN_MIN_cdB
-
-
-/* Gain formula : G = (0.5*(N-1)-24), N : register value */
-/* 161 => +56dB */
-#define ALPMC_MIC_ANALOG_GAIN_MAX_REG 162
-#define ALPMC_MIC_ANALOG_GAIN_MAX_cdB 5600
-
-/* 82 => +16dB */
-#define ALPMC_LINE_ANALOG_GAIN_MAX_REG 82
-#define ALPMC_LINE_ANALOG_GAIN_MAX_cdB 1600
-
-static bool inline alpx_is_madi(struct alpx_device *alpx_dev)
-{
- return alpx_dev->variant->model == ALPX_VARIANT_MODEL_MADI ||
- alpx_dev->variant->model == ALPX_VARIANT_MODEL_MADI_LOOPBACK;
-}
-
-static bool inline alpx_is_222_line(struct alpx_device *alpx_dev)
-{
- return alpx_dev->variant->model == ALPX_VARIANT_MODEL_ALP222;
-}
-
-static bool inline alpx_is_222_mic(struct alpx_device *alpx_dev)
-{
- return alpx_dev->variant->model == ALPX_VARIANT_MODEL_ALP222_MIC;
-}
-
-static bool inline alpx_is_222(struct alpx_device *alpx_dev)
-{
- return alpx_is_222_line(alpx_dev) || alpx_is_222_mic(alpx_dev);
-}
-
-static bool inline alpx_is_882_line(struct alpx_device *alpx_dev)
-{
- return alpx_dev->variant->model == ALPX_VARIANT_MODEL_ALP882;
-}
-
-static bool inline alpx_is_882_mic(struct alpx_device *alpx_dev)
-{
- return alpx_dev->variant->model == ALPX_VARIANT_MODEL_ALP882_MIC;
-}
-
-static bool inline alpx_is_882(struct alpx_device *alpx_dev)
-{
- return alpx_is_882_line(alpx_dev) || alpx_is_882_line(alpx_dev);
-}
-
-static bool inline alpx_is_442_line(struct alpx_device *alpx_dev)
-{
- return alpx_dev->variant->model == ALPX_VARIANT_MODEL_ALP442;
-}
-
-static bool inline alpx_is_442_mic(struct alpx_device *alpx_dev)
-{
- return alpx_dev->variant->model == ALPX_VARIANT_MODEL_ALP442_MIC;
-}
-
-static bool inline alpx_is_442(struct alpx_device *alpx_dev)
-{
- return alpx_is_442_line(alpx_dev) || alpx_is_442_line(alpx_dev);
-}
-
-static bool inline alpx_is_multichannel(struct alpx_device *alpx_dev)
-{
- return alpx_is_882(alpx_dev) || alpx_is_442(alpx_dev);
-}
-
-static bool inline alpx_is_dante (struct alpx_device *alpx_dev)
-{
- return alpx_dev->variant->model == ALPX_VARIANT_MODEL_ALPDANTE;
-}
-
-unsigned int
-alpx_get_samples_counter(struct alpx_device *alpx_dev);
-
-#endif