/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef __EXYNOS_AUDIOPROXY_PCM_H__
#define __EXYNOS_AUDIOPROXY_PCM_H__

#include <tinyalsa/asoundlib.h>
#include <tinycompress/tinycompress.h>
#include <compress_params.h>


/* Actual HW DMA mapped Sound Card & Device Definition */
#define SOUND_CARD0                     0

// Sound Devices mapped for A-Box RDMA
#define SOUND_DEVICE_ABOX_RDMA0         0       // A-Box RDMA0
#define SOUND_DEVICE_ABOX_RDMA1         1       // A-Box RDMA1
#define SOUND_DEVICE_ABOX_RDMA2         2       // A-Box RDMA2
#define SOUND_DEVICE_ABOX_RDMA3         3       // A-Box RDMA3
#define SOUND_DEVICE_ABOX_RDMA4         4       // A-Box RDMA4
#define SOUND_DEVICE_ABOX_RDMA5         5       // A-Box RDMA5
#define SOUND_DEVICE_ABOX_RDMA6         6       // A-Box RDMA6
#define SOUND_DEVICE_ABOX_RDMA7         7       // A-Box RDMA7
#define SOUND_DEVICE_ABOX_RDMA8         8       // A-Box RDMA8
#define SOUND_DEVICE_ABOX_RDMA9         9       // A-Box RDMA9
#define SOUND_DEVICE_ABOX_RDMA10        10      // A-Box RDMA10
#define SOUND_DEVICE_ABOX_RDMA11        11      // A-Box RDMA11

// Sound Devices mapped for A-Box WDMA
#define SOUND_DEVICE_ABOX_WDMA0         12      // A-Box WDMA0
#define SOUND_DEVICE_ABOX_WDMA1         13      // A-Box WDMA1
#define SOUND_DEVICE_ABOX_WDMA2         14      // A-Box WDMA2
#define SOUND_DEVICE_ABOX_WDMA3         15      // A-Box WDMA3
#define SOUND_DEVICE_ABOX_WDMA4         16      // A-Box WDMA4
#define SOUND_DEVICE_ABOX_WDMA5         17      // A-Box WDMA5
#define SOUND_DEVICE_ABOX_WDMA6         18      // A-Box WDMA6
#define SOUND_DEVICE_ABOX_WDMA7         19      // A-Box WDMA7

// Sound Devices mapped for other DMA
// Devices 20 & 21 are used by VTS driver
#define SOUND_DEVICE_AUX                22      // Aux Digital Device for DP Audio

/* Vitural PCM DAI Sound Card & Device Definition */
#define SOUND_CARD1                     1

// Sound Devices using Virtual PCM DAIs with sound-card1
// Playback devices
#define SOUND_DEVICE_VIRT_PRIMARY_PLAYBACK       0       // primary playback virtual device
// Capture devices
#define SOUND_DEVICE_VIRT_PRIMARY_CAPTURE        20      // primary capture virtual device
#define SOUND_DEVICE_VIRT_FM_RECORD              21      // WDMA for FM Radio Recording

/* Virtual DMA mapped Sound Card & Device Definition */
#define SOUND_CARD2                     2

// Device  0 ~ 12 : used for A-Box DMA Dump
// Device 13 ~ 15 : used for Compress Offload Dump
// Device 16 ~ 18 : used for OEM Analysis Dump
// From Device 19
#define SOUND_DEVICE_CALL_RECORD        21      // WDMA for Call Recording
#define SOUND_DEVICE_TELEPHONYRX_RECORD 34      // TelephonyRx Recording virtual pcm

#define SOUND_DEVICE_UNDEFINE           99

/* Default values for Media PCM Configuration */
#define DEFAULT_CAPTURE_CHANNELS                1                   // Mono
#define DEFAULT_MEDIA_CHANNELS                  2                   // Stereo
#define DEFAULT_MEDIA_SAMPLING_RATE             48000               // 48KHz
#define DEFAULT_MEDIA_FORMAT                    PCM_FORMAT_S16_LE   // 16bit PCM
#define DEFAULT_MEDIA_24_ZEROPAD_FORMAT         PCM_FORMAT_S24_LE   // 24bit PCM
#define DEFAULT_MEDIA_32_FORMAT                 PCM_FORMAT_S32_LE   // 32bit PCM

// Definition for MMAP Stream
#define MMAP_PERIOD_SIZE (DEFAULT_MEDIA_SAMPLING_RATE/1000)
#define MMAP_PERIOD_COUNT_MIN 32
#define MMAP_PERIOD_COUNT_MAX 512
#define MMAP_PERIOD_COUNT_DEFAULT (MMAP_PERIOD_COUNT_MAX)

// Channel count definitions
#define MEDIA_1_CHANNEL                         1
/* 4Channels is required for SPK AMP/Quad Mic TDM */
#define MEDIA_4_CHANNELS                        4
/* 8Channels is required for Direct output stream */
#define MEDIA_8_CHANNELS                        8

/* Default values for Voice PCM Configuration */
#define SAMPLING_RATE_NB                8000                // 8KHz(Narrow Band)
#define SAMPLING_RATE_WB                16000               // 16KHz(Wide Band)
#define SAMPLING_RATE_SWB               32000               // 32KHz(Wide Band)
#define SAMPLING_RATE_FB                48000               // 48KHz(Full Band)

#define DEFAULT_VOICE_CHANNELS          2                   // Stereo
#define DEFAULT_VOICE_SAMPLING_RATE     SAMPLING_RATE_FB
#define DEFAULT_VOICE_FORMAT            PCM_FORMAT_S16_LE   // 16bit PCM

/* Default values for CP Voice Recording PCM Configuration */
#define DEFAULT_VOICE_REC_CHANNELS      2                   // Stereo
#define DEFAULT_VOICE_REC_SAMPLINGRATE  SAMPLING_RATE_SWB   // 32KHz
#define DEFAULT_VOICE_REC_PERIODSIZE    2048                // Sync with A-Box Firmware
#define DEFAULT_VOICE_REC_PERIODCOUNT   2
#define DEFAULT_VOICE_REC_FORMAT        PCM_FORMAT_S16_LE   // 16bit PCM

/* Default values for FM Recording PCM Configuration */
#define DEFAULT_FM_REC_CHANNELS         2                   // Stereo
#define DEFAULT_FM_REC_SAMPLINGRATE     48000               // 48KHz
#define DEFAULT_FM_REC_PERIODSIZE       480                // Sync with WDMA7 config
#define DEFAULT_FM_REC_PERIODCOUNT      4
#define DEFAULT_FM_REC_FORMAT           PCM_FORMAT_S16_LE   // 16bit PCM

#define UHQA_MEDIA_FORMAT               PCM_FORMAT_S24_LE   // 24bit PCM
#define UHQA_MEDIA_SAMPLING_RATE        192000

#define SUHQA_MEDIA_FORMAT              PCM_FORMAT_S32_LE   // 32bit PCM
#define SUHQA_MEDIA_SAMPLING_RATE       384000

/* Default values for USB Playback or Capture PCM Configuration */
#define DEFAULT_MEDIA_BITWIDTH              24   // 24bit PCM
#define ABOX_UNSUPPORTED_CHANNELS           6
#define ABOX_SUPPORTED_MAX_CHANNELS         8
//----------------------------------------------------------------------------------------------//
// For Playback (Speaker) Path

/* PCM Configurations */
// PCM Configurations for Primary Playback Stream
#define PRIMARY_PLAYBACK_CARD           SOUND_CARD0
#define PRIMARY_PLAYBACK_DEVICE         SOUND_DEVICE_ABOX_RDMA0

#define PRIMARY_PLAYBACK_CHANNELS       DEFAULT_MEDIA_CHANNELS
#define PRIMARY_PLAYBACK_SAMPLING_RATE  DEFAULT_MEDIA_SAMPLING_RATE
#define PRIMARY_PLAYBACK_PERIOD_SIZE    960
#define PRIMARY_PLAYBACK_PERIOD_COUNT   4
#define PRIMARY_PLAYBACK_FORMAT         DEFAULT_MEDIA_FORMAT
#define PRIMARY_PLAYBACK_START          PRIMARY_PLAYBACK_PERIOD_SIZE
#define PRIMARY_PLAYBACK_STOP           UINT_MAX

struct pcm_config pcm_config_primary_playback = {
    .channels        = PRIMARY_PLAYBACK_CHANNELS,
    .rate            = PRIMARY_PLAYBACK_SAMPLING_RATE,
    .period_size     = PRIMARY_PLAYBACK_PERIOD_SIZE,
    .period_count    = PRIMARY_PLAYBACK_PERIOD_COUNT,
    .format          = PRIMARY_PLAYBACK_FORMAT,
    .start_threshold = PRIMARY_PLAYBACK_START,
    .stop_threshold  = PRIMARY_PLAYBACK_STOP,
};

// PCM Configurations for Virtual Primary playback Stream
#define VIRTUAL_PRIMARY_PLAYBACK_CARD           SOUND_CARD1
#define VIRTUAL_PRIMARY_PLAYBACK_DEVICE         SOUND_DEVICE_VIRT_PRIMARY_PLAYBACK

// PCM Configurations for Fast Playback Stream
#define FAST_PLAYBACK_CARD              SOUND_CARD0
#define FAST_PLAYBACK_DEVICE            SOUND_DEVICE_ABOX_RDMA2

#define FAST_PLAYBACK_CHANNELS          DEFAULT_MEDIA_CHANNELS
#define FAST_PLAYBACK_SAMPLING_RATE     DEFAULT_MEDIA_SAMPLING_RATE
#define FAST_PLAYBACK_PERIOD_SIZE       192
#define FAST_PLAYBACK_PERIOD_COUNT      2
#define FAST_PLAYBACK_FORMAT            DEFAULT_MEDIA_FORMAT
#define FAST_PLAYBACK_START             (FAST_PLAYBACK_PERIOD_SIZE * FAST_PLAYBACK_PERIOD_COUNT)
#define FAST_PLAYBACK_STOP              UINT_MAX

struct pcm_config pcm_config_fast_playback = {
    .channels        = FAST_PLAYBACK_CHANNELS,
    .rate            = FAST_PLAYBACK_SAMPLING_RATE,
    .period_size     = FAST_PLAYBACK_PERIOD_SIZE,
    .period_count    = FAST_PLAYBACK_PERIOD_COUNT,
    .format          = FAST_PLAYBACK_FORMAT,
    .start_threshold = FAST_PLAYBACK_START,
    .stop_threshold  = FAST_PLAYBACK_STOP,
};

// PCM Configurations for Low Latency Playback Stream
#define LOW_PLAYBACK_CARD               SOUND_CARD0
#define LOW_PLAYBACK_DEVICE             SOUND_DEVICE_ABOX_RDMA2

#define LOW_PLAYBACK_CHANNELS           DEFAULT_MEDIA_CHANNELS
#define LOW_PLAYBACK_SAMPLING_RATE      DEFAULT_MEDIA_SAMPLING_RATE
#define LOW_PLAYBACK_PERIOD_SIZE        96
#define LOW_PLAYBACK_PERIOD_COUNT       4
#define LOW_PLAYBACK_FORMAT             DEFAULT_MEDIA_FORMAT
#define LOW_PLAYBACK_START              LOW_PLAYBACK_PERIOD_SIZE
#define LOW_PLAYBACK_STOP               UINT_MAX

struct pcm_config pcm_config_low_playback = {
    .channels        = LOW_PLAYBACK_CHANNELS,
    .rate            = LOW_PLAYBACK_SAMPLING_RATE,
    .period_size     = LOW_PLAYBACK_PERIOD_SIZE,
    .period_count    = LOW_PLAYBACK_PERIOD_COUNT,
    .format          = LOW_PLAYBACK_FORMAT,
    .start_threshold = LOW_PLAYBACK_START,
    .stop_threshold  = LOW_PLAYBACK_STOP,
};

// PCM Configurations for MMAP Playback Stream
#define MMAP_PLAYBACK_CARD               SOUND_CARD0
#define MMAP_PLAYBACK_DEVICE             SOUND_DEVICE_ABOX_RDMA3

#define MMAP_PLAYBACK_CHANNELS           DEFAULT_MEDIA_CHANNELS
#define MMAP_PLAYBACK_SAMPLING_RATE      DEFAULT_MEDIA_SAMPLING_RATE
#define MMAP_PLAYBACK_PERIOD_SIZE        MMAP_PERIOD_SIZE
#define MMAP_PLAYBACK_PERIOD_COUNT       MMAP_PERIOD_COUNT_DEFAULT
#define MMAP_PLAYBACK_FORMAT             DEFAULT_MEDIA_FORMAT
#define MMAP_PLAYBACK_START              (MMAP_PLAYBACK_PERIOD_SIZE * 8)
#define MMAP_PLAYBACK_STOP               UINT_MAX

struct pcm_config pcm_config_mmap_playback = {
    .channels        = MMAP_PLAYBACK_CHANNELS,
    .rate            = MMAP_PLAYBACK_SAMPLING_RATE,
    .period_size     = MMAP_PLAYBACK_PERIOD_SIZE,
    .period_count    = MMAP_PLAYBACK_PERIOD_COUNT,
    .format          = MMAP_PLAYBACK_FORMAT,
    .start_threshold = MMAP_PLAYBACK_START,
    .stop_threshold  = MMAP_PLAYBACK_STOP,
};

// PCM Configurations for DeepBuffer Playback Stream
#define DEEP_PLAYBACK_CARD              SOUND_CARD0
#define DEEP_PLAYBACK_DEVICE            SOUND_DEVICE_ABOX_RDMA1

#define DEEP_PLAYBACK_CHANNELS          DEFAULT_MEDIA_CHANNELS
#define DEEP_PLAYBACK_SAMPLING_RATE     DEFAULT_MEDIA_SAMPLING_RATE
#define DEEP_PLAYBACK_PERIOD_SIZE       960
#define DEEP_PLAYBACK_PERIOD_COUNT      4
#define DEEP_PLAYBACK_FORMAT            DEFAULT_MEDIA_24_ZEROPAD_FORMAT
#define DEEP_PLAYBACK_START             DEEP_PLAYBACK_PERIOD_SIZE
#define DEEP_PLAYBACK_STOP              (DEEP_PLAYBACK_PERIOD_SIZE * DEEP_PLAYBACK_PERIOD_COUNT)

struct pcm_config pcm_config_deep_playback = {
    .channels        = DEEP_PLAYBACK_CHANNELS,
    .rate            = DEEP_PLAYBACK_SAMPLING_RATE,
    .period_size     = DEEP_PLAYBACK_PERIOD_SIZE,
    .period_count    = DEEP_PLAYBACK_PERIOD_COUNT,
    .format          = DEEP_PLAYBACK_FORMAT,
    .start_threshold = DEEP_PLAYBACK_START,
    .stop_threshold  = DEEP_PLAYBACK_STOP,
};

// PCM Configurations for Deep UHQA Playback Stream
#define DEEP_PLAYBACK_UHQA_FORMAT            UHQA_MEDIA_FORMAT
#define DEEP_PLAYBACK_UHQA_SAMPLING_RATE     UHQA_MEDIA_SAMPLING_RATE

#define DEEP_PLAYBACK_SUHQA_FORMAT           SUHQA_MEDIA_FORMAT
#define DEEP_PLAYBACK_SUHQA_SAMPLING_RATE    SUHQA_MEDIA_SAMPLING_RATE

struct pcm_config pcm_config_deep_playback_wide_res = {
    .channels        = DEEP_PLAYBACK_CHANNELS,
    .rate            = DEEP_PLAYBACK_SAMPLING_RATE,
    .period_size     = DEEP_PLAYBACK_PERIOD_SIZE,
    .period_count    = DEEP_PLAYBACK_PERIOD_COUNT,
    .format          = DEEP_PLAYBACK_UHQA_FORMAT,
};

struct pcm_config pcm_config_deep_playback_uhqa = {
    .channels        = DEEP_PLAYBACK_CHANNELS,
    .rate            = DEEP_PLAYBACK_UHQA_SAMPLING_RATE,
    .period_size     = DEEP_PLAYBACK_PERIOD_SIZE * 4,
    .period_count    = DEEP_PLAYBACK_PERIOD_COUNT,
    .format          = DEEP_PLAYBACK_UHQA_FORMAT,
};

struct pcm_config pcm_config_deep_playback_suhqa = {
    .channels        = DEEP_PLAYBACK_CHANNELS,
    .rate            = DEEP_PLAYBACK_SUHQA_SAMPLING_RATE,
    .period_size     = DEEP_PLAYBACK_PERIOD_SIZE * 8,
    .period_count    = DEEP_PLAYBACK_PERIOD_COUNT,
    .format          = DEEP_PLAYBACK_SUHQA_FORMAT,
};

// PCM Configurations for Voice RX Playback Stream
#define VRX_PLAYBACK_CARD               SOUND_CARD0
#define VRX_PLAYBACK_DEVICE             SOUND_DEVICE_ABOX_RDMA4

#define VRX_PLAYBACK_CHANNELS           DEFAULT_VOICE_CHANNELS
#define VRX_PLAYBACK_SAMPLING_RATE      DEFAULT_VOICE_SAMPLING_RATE
#define VRX_PLAYBACK_PERIOD_SIZE        480
#define VRX_PLAYBACK_PERIOD_COUNT       4
#define VRX_PLAYBACK_FORMAT             DEFAULT_VOICE_FORMAT
#define VRX_PLAYBACK_START              VRX_PLAYBACK_PERIOD_SIZE
#define VRX_PLAYBACK_STOP               UINT_MAX

struct pcm_config pcm_config_voicerx_playback = {
    .channels        = VRX_PLAYBACK_CHANNELS,
    .rate            = VRX_PLAYBACK_SAMPLING_RATE,
    .period_size     = VRX_PLAYBACK_PERIOD_SIZE,
    .period_count    = VRX_PLAYBACK_PERIOD_COUNT,
    .format          = VRX_PLAYBACK_FORMAT,
    .start_threshold = VRX_PLAYBACK_START,
    .stop_threshold  = VRX_PLAYBACK_STOP,
};

// PCM Configurations for Compress Offload Playback Stream
#define OFFLOAD_PLAYBACK_CARD           SOUND_CARD0
#define OFFLOAD_PLAYBACK_DEVICE         SOUND_DEVICE_ABOX_RDMA5

/*
 * These values are based on HW Decoder: Max Buffer Size = FRAGMENT_SIZE * NUM_FRAGMENTS
 * 0 means that we will use the predefined value by device driver
 */
// Offload Buffer Size is set to Maximum possible buffer size,
// as offload Pause issue after Drain notification is resolved from kernel side
#define OFFLOAD_PLAYBACK_BUFFER_SIZE  (1024 * 64)  // fragment_size is fixed 64KBytes = 64 * 1024
#define OFFLOAD_PLAYBACK_BUFFER_COUNT 5            // fragment is fixed 5

#define OFFLOAD_OFFLOAD_FRAGMENT_SIZE OFFLOAD_PLAYBACK_BUFFER_SIZE
#define OFFLOAD_OFFLOAD_NUM_FRAGMENTS OFFLOAD_PLAYBACK_BUFFER_COUNT

struct compr_config compr_config_offload_playback = {
    .fragment_size  = OFFLOAD_OFFLOAD_FRAGMENT_SIZE,
    .fragments      = OFFLOAD_OFFLOAD_NUM_FRAGMENTS,
    .codec          = NULL,
};

// Internal loopback related PCM node configurations
// PCM Configurations for BT-SCO Playback Stream
#define BTSCO_ERAP_CARD                 SOUND_CARD0
#define BTSCO_PLAYBACK_ERAP_DEVICE      SOUND_DEVICE_ABOX_RDMA8
#define BTSCO_CAPTURE_ERAP_DEVICE       SOUND_DEVICE_ABOX_RDMA6

#define BTSCO_ERAP_CHANNELS         DEFAULT_VOICE_CHANNELS
#define BTSCO_ERAP_SAMPLING_RATE    SAMPLING_RATE_FB
#define BTSCO_ERAP_PERIOD_SIZE      80
#define BTSCO_ERAP_PERIOD_COUNT     2
#define BTSCO_ERAP_FORMAT           DEFAULT_MEDIA_FORMAT
#define BTSCO_ERAP_START            BTSCO_ERAP_PERIOD_SIZE
#define BTSCO_ERAP_STOP             UINT_MAX

struct pcm_config pcm_config_btsco = {
    .channels        = BTSCO_ERAP_CHANNELS,
    .rate            = BTSCO_ERAP_SAMPLING_RATE,
    .period_size     = BTSCO_ERAP_PERIOD_SIZE,
    .period_count    = BTSCO_ERAP_PERIOD_COUNT,
    .format          = BTSCO_ERAP_FORMAT,
    .start_threshold = BTSCO_ERAP_START,
    .stop_threshold  = BTSCO_ERAP_STOP,
};

// BT SCO ERAP PCM node index
typedef enum {
    BTSCO_SPK_ERAP_IDX = 0,
    BTSCO_MIC_ERAP_IDX = 1,
    BTSCO_MAX_ERAP_IDX = 2,
} btsco_erap_idx_type_t;

// BT SCO fixed PCM nodes for ERAP path
unsigned int btsco_erap_device[BTSCO_MAX_ERAP_IDX][2] = {
    [0] = {BTSCO_ERAP_CARD, BTSCO_PLAYBACK_ERAP_DEVICE},
    [1] = {BTSCO_ERAP_CARD, BTSCO_CAPTURE_ERAP_DEVICE},
};
unsigned int btsco_erap_flag[BTSCO_MAX_ERAP_IDX] = {
    [BTSCO_SPK_ERAP_IDX] = (PCM_IN | PCM_MONOTONIC),
    [BTSCO_MIC_ERAP_IDX] = (PCM_OUT | PCM_MONOTONIC),
};

// Internal loopback related PCM node configurations
// PCM Configurations for BT-A2DP Playback Stream
#define BTA2DP_PLAYBACK_CARD             SOUND_CARD0
#define BTA2DP_PLAYBACK_DEVICE           SOUND_DEVICE_ABOX_RDMA6

#define BTA2DP_PLAYBACK_CHANNELS         DEFAULT_MEDIA_CHANNELS
#define BTA2DP_PLAYBACK_SAMPLING_RATE    DEFAULT_MEDIA_SAMPLING_RATE
#define BTA2DP_PLAYBACK_PERIOD_SIZE      480
#define BTA2DP_PLAYBACK_PERIOD_COUNT     4
#define BTA2DP_PLAYBACK_FORMAT           DEFAULT_MEDIA_FORMAT
#define BTA2DP_PLAYBACK_START            BTA2DP_PLAYBACK_PERIOD_SIZE
#define BTA2DP_PLAYBACK_STOP             UINT_MAX

struct pcm_config pcm_config_bta2dp_playback = {
    .channels        = BTA2DP_PLAYBACK_CHANNELS,
    .rate            = BTA2DP_PLAYBACK_SAMPLING_RATE,
    .period_size     = BTA2DP_PLAYBACK_PERIOD_SIZE,
    .period_count    = BTA2DP_PLAYBACK_PERIOD_COUNT,
    .format          = BTA2DP_PLAYBACK_FORMAT,
    .start_threshold = BTA2DP_PLAYBACK_START,
    .stop_threshold  = BTA2DP_PLAYBACK_STOP,
};

// PCM Configurations for A2DP Mute Playback Stream
#define A2DPMUTE_PLAYBACK_CARD          SOUND_CARD0
#define A2DPMUTE_PLAYBACK_DEVICE        SOUND_DEVICE_ABOX_RDMA11

#define A2DPMUTE_PLAYBACK_CHANNELS      DEFAULT_MEDIA_CHANNELS
#define A2DPMUTE_PLAYBACK_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE
#define A2DPMUTE_PLAYBACK_PERIOD_SIZE   480
#define A2DPMUTE_PLAYBACK_PERIOD_COUNT  4
#define A2DPMUTE_PLAYBACK_FORMAT        DEFAULT_MEDIA_FORMAT
#define A2DPMUTE_PLAYBACK_START         A2DPMUTE_PLAYBACK_PERIOD_SIZE
#define A2DPMUTE_PLAYBACK_STOP          UINT_MAX

struct pcm_config pcm_config_a2dp_mute_playback = {
    .channels        = A2DPMUTE_PLAYBACK_CHANNELS,
    .rate            = A2DPMUTE_PLAYBACK_SAMPLING_RATE,
    .period_size     = A2DPMUTE_PLAYBACK_PERIOD_SIZE,
    .period_count    = A2DPMUTE_PLAYBACK_PERIOD_COUNT,
    .format          = A2DPMUTE_PLAYBACK_FORMAT,
    .start_threshold = A2DPMUTE_PLAYBACK_START,
    .stop_threshold  = A2DPMUTE_PLAYBACK_STOP,
};

// PCM Configurations for SpeakerAMP Playback Stream
#define SPKAMP_PLAYBACK_CARD            SOUND_CARD0
#define SPKAMP_PLAYBACK_DEVICE          SOUND_DEVICE_ABOX_RDMA7

#define SPKAMP_PLAYBACK_CHANNELS        MEDIA_4_CHANNELS
#define SPKAMP_PLAYBACK_SAMPLING_RATE   DEFAULT_MEDIA_SAMPLING_RATE
#define SPKAMP_PLAYBACK_PERIOD_SIZE     480
#define SPKAMP_PLAYBACK_PERIOD_COUNT    4
#define SPKAMP_PLAYBACK_FORMAT          DEFAULT_MEDIA_FORMAT
#define SPKAMP_PLAYBACK_START           SPKAMP_PLAYBACK_PERIOD_SIZE
#define SPKAMP_PLAYBACK_STOP            UINT_MAX

struct pcm_config pcm_config_spkamp_playback = {
    .channels        = SPKAMP_PLAYBACK_CHANNELS,
    .rate            = SPKAMP_PLAYBACK_SAMPLING_RATE,
    .period_size     = SPKAMP_PLAYBACK_PERIOD_SIZE,
    .period_count    = SPKAMP_PLAYBACK_PERIOD_COUNT,
    .format          = SPKAMP_PLAYBACK_FORMAT,
    .start_threshold = SPKAMP_PLAYBACK_START,
    .stop_threshold  = SPKAMP_PLAYBACK_STOP,
};

// PCM Configurations for FM Radio Playback Stream
#define FMRADIO_PLAYBACK_CARD           SOUND_CARD0
#define FMRADIO_PLAYBACK_DEVICE         SOUND_DEVICE_ABOX_RDMA3

#define FMRADIO_PLAYBACK_CHANNELS       DEFAULT_MEDIA_CHANNELS
#define FMRADIO_PLAYBACK_SAMPLING_RATE  DEFAULT_MEDIA_SAMPLING_RATE
#define FMRADIO_PLAYBACK_PERIOD_SIZE    480
#define FMRADIO_PLAYBACK_PERIOD_COUNT   4
#define FMRADIO_PLAYBACK_FORMAT         DEFAULT_MEDIA_FORMAT
#define FMRADIO_PLAYBACK_START          FMRADIO_PLAYBACK_PERIOD_SIZE
#define FMRADIO_PLAYBACK_STOP           UINT_MAX

struct pcm_config pcm_config_fmradio_playback = {
    .channels        = FMRADIO_PLAYBACK_CHANNELS,
    .rate            = FMRADIO_PLAYBACK_SAMPLING_RATE,
    .period_size     = FMRADIO_PLAYBACK_PERIOD_SIZE,
    .period_count    = FMRADIO_PLAYBACK_PERIOD_COUNT,
    .format          = FMRADIO_PLAYBACK_FORMAT,
    .start_threshold = FMRADIO_PLAYBACK_START,
    .stop_threshold  = FMRADIO_PLAYBACK_STOP,
};

// PCM Configurations for Direct Playback Stream
#define DIRECT_PLAYBACK_CARD            SOUND_CARD0
#define DIRECT_PLAYBACK_DEVICE          SOUND_DEVICE_ABOX_RDMA9

#define DIRECT_PLAYBACK_CHANNELS        MEDIA_8_CHANNELS
#define DIRECT_PLAYBACK_SAMPLING_RATE   DEFAULT_MEDIA_SAMPLING_RATE
#define DIRECT_PLAYBACK_PERIOD_SIZE     480
#define DIRECT_PLAYBACK_PERIOD_COUNT    4
#define DIRECT_PLAYBACK_FORMAT          DEFAULT_MEDIA_24_ZEROPAD_FORMAT
#define DIRECT_PLAYBACK_START           DIRECT_PLAYBACK_PERIOD_SIZE
#define DIRECT_PLAYBACK_STOP            (DIRECT_PLAYBACK_PERIOD_SIZE * DIRECT_PLAYBACK_PERIOD_COUNT)

struct pcm_config pcm_config_direct_playback = {
    .channels        = DIRECT_PLAYBACK_CHANNELS,
    .rate            = DIRECT_PLAYBACK_SAMPLING_RATE,
    .period_size     = DIRECT_PLAYBACK_PERIOD_SIZE,
    .period_count    = DIRECT_PLAYBACK_PERIOD_COUNT,
    .format          = DIRECT_PLAYBACK_FORMAT,
};

// PCM Configurations for USB Output Loopback Stream
#define USBOUT_LOOPBACK_CARD             SOUND_CARD0
#define USBOUT_LOOPBACK_DEVICE           SOUND_DEVICE_ABOX_WDMA6

#define USBOUT_LOOPBACK_CHANNELS         DEFAULT_MEDIA_CHANNELS
#define USBOUT_LOOPBACK_SAMPLING_RATE    DEFAULT_MEDIA_SAMPLING_RATE
#define USBOUT_LOOPBACK_PERIOD_SIZE      480
#define USBOUT_LOOPBACK_PERIOD_COUNT     2
#define USBOUT_LOOPBACK_FORMAT           DEFAULT_MEDIA_FORMAT
#define USBOUT_LOOPBACK_START            USBOUT_LOOPBACK_PERIOD_SIZE
#define USBOUT_LOOPBACK_STOP             UINT_MAX

struct pcm_config pcm_config_usb_out_loopback = {
    .channels        = USBOUT_LOOPBACK_CHANNELS,
    .rate            = USBOUT_LOOPBACK_SAMPLING_RATE,
    .period_size     = USBOUT_LOOPBACK_PERIOD_SIZE,
    .period_count    = USBOUT_LOOPBACK_PERIOD_COUNT,
    .format          = USBOUT_LOOPBACK_FORMAT,
    .start_threshold = USBOUT_LOOPBACK_START,
    .stop_threshold  = USBOUT_LOOPBACK_STOP,
};

// PCM Configurations for USB Input Loopback Stream
#define USBIN_LOOPBACK_CARD             SOUND_CARD0
#define USBIN_LOOPBACK_DEVICE           SOUND_DEVICE_ABOX_RDMA10

#define USBIN_LOOPBACK_CHANNELS         DEFAULT_MEDIA_CHANNELS
#define USBIN_LOOPBACK_SAMPLING_RATE    DEFAULT_MEDIA_SAMPLING_RATE
#define USBIN_LOOPBACK_PERIOD_SIZE      480
#define USBIN_LOOPBACK_PERIOD_COUNT     4
#define USBIN_LOOPBACK_FORMAT           DEFAULT_MEDIA_FORMAT
#define USBIN_LOOPBACK_START            USBIN_LOOPBACK_PERIOD_SIZE
#define USBIN_LOOPBACK_STOP             UINT_MAX

struct pcm_config pcm_config_usb_in_loopback = {
    .channels        = USBIN_LOOPBACK_CHANNELS,
    .rate            = USBIN_LOOPBACK_SAMPLING_RATE,
    .period_size     = USBIN_LOOPBACK_PERIOD_SIZE,
    .period_count    = USBIN_LOOPBACK_PERIOD_COUNT,
    .format          = USBIN_LOOPBACK_FORMAT,
    .start_threshold = USBIN_LOOPBACK_START,
    .stop_threshold  = USBIN_LOOPBACK_STOP,
};

// AUX doesn't use A-Box pcm node
// PCM Configurations for AUX Digital(HDMI / DisplayPort) Playback Stream
#define AUX_PLAYBACK_CARD               SOUND_CARD0
#define AUX_PLAYBACK_DEVICE             SOUND_DEVICE_AUX

#define AUX_PLAYBACK_CHANNELS           DEFAULT_MEDIA_CHANNELS
#define AUX_PLAYBACK_SAMPLING_RATE      DEFAULT_MEDIA_SAMPLING_RATE
#define AUX_PLAYBACK_PERIOD_SIZE        960
#define AUX_PLAYBACK_PERIOD_COUNT       2
#define AUX_PLAYBACK_FORMAT             DEFAULT_MEDIA_FORMAT
#define AUX_PLAYBACK_START              AUX_PLAYBACK_PERIOD_SIZE
#define AUX_PLAYBACK_STOP               UINT_MAX

struct pcm_config pcm_config_aux_playback = {
    .channels        = AUX_PLAYBACK_CHANNELS,
    .rate            = AUX_PLAYBACK_SAMPLING_RATE,
    .period_size     = AUX_PLAYBACK_PERIOD_SIZE,
    .period_count    = AUX_PLAYBACK_PERIOD_COUNT,
    .format          = AUX_PLAYBACK_FORMAT,
    .start_threshold = AUX_PLAYBACK_START,
    .stop_threshold  = AUX_PLAYBACK_STOP,
};

//----------------------------------------------------------------------------------------------//
// For Capture (MIC) Path

// FIXME: Currently unused configuration
// PCM Configurations for Mixed Capture Stream
#define MIXED_CAPTURE_CARD              SOUND_CARD0
#define MIXED_CAPTURE_DEVICE            SOUND_DEVICE_ABOX_WDMA0

#define MIXED_CAPTURE_CHANNELS          DEFAULT_MEDIA_CHANNELS
#define MIXED_CAPTURE_SAMPLING_RATE     DEFAULT_MEDIA_SAMPLING_RATE
#define MIXED_CAPTURE_PERIOD_SIZE       480
#define MIXED_CAPTURE_PERIOD_COUNT      4
#define MIXED_CAPTURE_FORMAT            DEFAULT_MEDIA_FORMAT
#define MIXED_CAPTURE_START             MIXED_CAPTURE_PERIOD_SIZE
#define MIXED_CAPTURE_STOP              UINT_MAX

struct pcm_config pcm_config_mixed_capture = {
    .channels        = MIXED_CAPTURE_CHANNELS,
    .rate            = MIXED_CAPTURE_SAMPLING_RATE,
    .period_size     = MIXED_CAPTURE_PERIOD_SIZE,
    .period_count    = MIXED_CAPTURE_PERIOD_COUNT,
    .format          = MIXED_CAPTURE_FORMAT,
    .start_threshold = MIXED_CAPTURE_START,
    .stop_threshold  = MIXED_CAPTURE_STOP,
};

// PCM Configurations for Primary Capture Stream
#define PRIMARY_CAPTURE_CARD            SOUND_CARD0
#define PRIMARY_CAPTURE_DEVICE          SOUND_DEVICE_ABOX_RDMA9

#define PRIMARY_CAPTURE_CHANNELS        DEFAULT_MEDIA_CHANNELS
#define PRIMARY_CAPTURE_SAMPLING_RATE   DEFAULT_MEDIA_SAMPLING_RATE
#define PRIMARY_CAPTURE_PERIOD_SIZE     960
#define PRIMARY_CAPTURE_PERIOD_COUNT    4
#define PRIMARY_CAPTURE_FORMAT          DEFAULT_MEDIA_FORMAT
#define PRIMARY_CAPTURE_START           PRIMARY_CAPTURE_PERIOD_SIZE
#define PRIMARY_CAPTURE_STOP            UINT_MAX

struct pcm_config pcm_config_primary_capture = {
    .channels        = PRIMARY_CAPTURE_CHANNELS,
    .rate            = PRIMARY_CAPTURE_SAMPLING_RATE,
    .period_size     = PRIMARY_CAPTURE_PERIOD_SIZE,
    .period_count    = PRIMARY_CAPTURE_PERIOD_COUNT,
    .format          = PRIMARY_CAPTURE_FORMAT,
    .start_threshold = PRIMARY_CAPTURE_START,
    .stop_threshold  = PRIMARY_CAPTURE_STOP,
};

#ifdef SUPPORT_QUAD_MIC
// PCM Configurations for Primary Quad-Mic 4 channel Capture Stream
#define PRIMARY_QUAD_CAPTURE_CHANNELS       MEDIA_4_CHANNELS
#define PRIMARY_QUAD_CAPTURE_SAMPLING_RATE  DEFAULT_MEDIA_SAMPLING_RATE
#define PRIMARY_QUAD_CAPTURE_PERIOD_SIZE    960
#define PRIMARY_QUAD_CAPTURE_PERIOD_COUNT   4
#define PRIMARY_QUAD_CAPTURE_FORMAT         DEFAULT_MEDIA_FORMAT
#define PRIMARY_QUAD_CAPTURE_START          PRIMARY_QUAD_CAPTURE_PERIOD_SIZE
#define PRIMARY_QUAD_CAPTURE_STOP           UINT_MAX

struct pcm_config pcm_config_primary_quad_mic_capture = {
    .channels        = PRIMARY_QUAD_CAPTURE_CHANNELS,
    .rate            = PRIMARY_QUAD_CAPTURE_SAMPLING_RATE,
    .period_size     = PRIMARY_QUAD_CAPTURE_PERIOD_SIZE,
    .period_count    = PRIMARY_QUAD_CAPTURE_PERIOD_COUNT,
    .format          = PRIMARY_QUAD_CAPTURE_FORMAT,
    .start_threshold = PRIMARY_QUAD_CAPTURE_START,
    .stop_threshold  = PRIMARY_QUAD_CAPTURE_STOP,
};
#endif

// PCM Configurations for Virtual Primary Capture Stream
#define VIRTUAL_PRIMARY_CAPTURE_CARD            SOUND_CARD1
#define VIRTUAL_PRIMARY_CAPTURE_DEVICE          SOUND_DEVICE_VIRT_PRIMARY_CAPTURE

// PCM Configurations for Low Latency Capture Stream
#define LOW_CAPTURE_CARD                SOUND_CARD0
#define LOW_CAPTURE_DEVICE              SOUND_DEVICE_ABOX_RDMA9

#define LOW_CAPTURE_CHANNELS            DEFAULT_MEDIA_CHANNELS
#define LOW_CAPTURE_SAMPLING_RATE       DEFAULT_MEDIA_SAMPLING_RATE
#define LOW_CAPTURE_PERIOD_SIZE         FAST_PLAYBACK_PERIOD_SIZE
#define LOW_CAPTURE_PERIOD_COUNT        FAST_PLAYBACK_PERIOD_COUNT
#define LOW_CAPTURE_FORMAT              DEFAULT_MEDIA_FORMAT
#define LOW_CAPTURE_START               LOW_CAPTURE_PERIOD_SIZE
#define LOW_CAPTURE_STOP                UINT_MAX

struct pcm_config pcm_config_low_capture = {
    .channels        = LOW_CAPTURE_CHANNELS,
    .rate            = LOW_CAPTURE_SAMPLING_RATE,
    .period_size     = LOW_CAPTURE_PERIOD_SIZE,
    .period_count    = LOW_CAPTURE_PERIOD_COUNT,
    .format          = LOW_CAPTURE_FORMAT,
    .start_threshold = LOW_CAPTURE_START,
    .stop_threshold  = LOW_CAPTURE_STOP,
};

// PCM Configurations for MMAP Capture Stream
#define MMAP_CAPTURE_CARD               SOUND_CARD0
#define MMAP_CAPTURE_DEVICE             SOUND_DEVICE_ABOX_RDMA9

#define MMAP_CAPTURE_CHANNELS           DEFAULT_MEDIA_CHANNELS
#define MMAP_CAPTURE_SAMPLING_RATE      DEFAULT_MEDIA_SAMPLING_RATE
#define MMAP_CAPTURE_PERIOD_SIZE        MMAP_PERIOD_SIZE
#define MMAP_CAPTURE_PERIOD_COUNT       MMAP_PERIOD_COUNT_DEFAULT
#define MMAP_CAPTURE_FORMAT             DEFAULT_MEDIA_FORMAT
#define MMAP_CAPTURE_START              MMAP_CAPTURE_PERIOD_SIZE
#define MMAP_CAPTURE_STOP               UINT_MAX

struct pcm_config pcm_config_mmap_capture = {
    .channels        = MMAP_CAPTURE_CHANNELS,
    .rate            = MMAP_CAPTURE_SAMPLING_RATE,
    .period_size     = MMAP_CAPTURE_PERIOD_SIZE,
    .period_count    = MMAP_CAPTURE_PERIOD_COUNT,
    .format          = MMAP_CAPTURE_FORMAT,
    .start_threshold = MMAP_CAPTURE_START,
    .stop_threshold  = MMAP_CAPTURE_STOP,
};

// PCM Configurations for Voice TX Capture Stream
#define VTX_CAPTURE_CARD                SOUND_CARD0
#define VTX_CAPTURE_DEVICE              SOUND_DEVICE_ABOX_RDMA10

#define VTX_CAPTURE_CHANNELS            DEFAULT_VOICE_CHANNELS
#define VTX_CAPTURE_SAMPLING_RATE       DEFAULT_VOICE_SAMPLING_RATE
#define VTX_CAPTURE_PERIOD_SIZE         480
#define VTX_CAPTURE_PERIOD_COUNT        4
#define VTX_CAPTURE_FORMAT              DEFAULT_VOICE_FORMAT
#define VTX_CAPTURE_START               VTX_CAPTURE_PERIOD_SIZE
#define VTX_CAPTURE_STOP                UINT_MAX

struct pcm_config pcm_config_voicetx_capture = {
    .channels        = VTX_CAPTURE_CHANNELS,
    .rate            = VTX_CAPTURE_SAMPLING_RATE,
    .period_size     = VTX_CAPTURE_PERIOD_SIZE,
    .period_count    = VTX_CAPTURE_PERIOD_COUNT,
    .format          = VTX_CAPTURE_FORMAT,
    .start_threshold = VTX_CAPTURE_START,
    .stop_threshold  = VTX_CAPTURE_STOP,
};

#ifdef SUPPORT_QUAD_MIC
// PCM Configurations for Quad-mic Voice TX Capture Stream
#define VTX_QUAD_MIC_CAPTURE_CHANNELS           MEDIA_4_CHANNELS
#define VTX_QUAD_MIC_CAPTURE_SAMPLING_RATE      DEFAULT_VOICE_SAMPLING_RATE
#define VTX_QUAD_MIC_CAPTURE_PERIOD_SIZE        480
#define VTX_QUAD_MIC_CAPTURE_PERIOD_COUNT       4
#define VTX_QUAD_MIC_CAPTURE_FORMAT             DEFAULT_VOICE_FORMAT
#define VTX_QUAD_MIC_CAPTURE_START              VTX_QUAD_MIC_CAPTURE_PERIOD_SIZE
#define VTX_QUAD_MIC_CAPTURE_STOP               UINT_MAX

struct pcm_config pcm_config_quad_mic_voicetx_capture = {
    .channels        = VTX_QUAD_MIC_CAPTURE_CHANNELS,
    .rate            = VTX_QUAD_MIC_CAPTURE_SAMPLING_RATE,
    .period_size     = VTX_QUAD_MIC_CAPTURE_PERIOD_SIZE,
    .period_count    = VTX_QUAD_MIC_CAPTURE_PERIOD_COUNT,
    .format          = VTX_QUAD_MIC_CAPTURE_FORMAT,
    .start_threshold = VTX_QUAD_MIC_CAPTURE_START,
    .stop_threshold  = VTX_QUAD_MIC_CAPTURE_STOP,
};
#endif

// PCM Configurations for FM Radio/Voice Call Capture Stream
#define VC_FMRADIO_CAPTURE_CARD            SOUND_CARD0
#define VC_FMRADIO_CAPTURE_DEVICE          SOUND_DEVICE_ABOX_RDMA10

#define VC_FMRADIO_CAPTURE_CHANNELS        DEFAULT_MEDIA_CHANNELS
#define VC_FMRADIO_CAPTURE_SAMPLING_RATE   DEFAULT_MEDIA_SAMPLING_RATE
#define VC_FMRADIO_CAPTURE_PERIOD_SIZE     480
#define VC_FMRADIO_CAPTURE_PERIOD_COUNT    4
#define VC_FMRADIO_CAPTURE_FORMAT          DEFAULT_MEDIA_FORMAT
#define VC_FMRADIO_CAPTURE_START           VC_FMRADIO_CAPTURE_PERIOD_SIZE
#define VC_FMRADIO_CAPTURE_STOP            UINT_MAX

struct pcm_config pcm_config_vc_fmradio_capture = {
    .channels        = VC_FMRADIO_CAPTURE_CHANNELS,
    .rate            = VC_FMRADIO_CAPTURE_SAMPLING_RATE,
    .period_size     = VC_FMRADIO_CAPTURE_PERIOD_SIZE,
    .period_count    = VC_FMRADIO_CAPTURE_PERIOD_COUNT,
    .format          = VC_FMRADIO_CAPTURE_FORMAT,
    .start_threshold = VC_FMRADIO_CAPTURE_START,
    .stop_threshold  = VC_FMRADIO_CAPTURE_STOP,
};

#ifdef SUPPORT_QUAD_MIC
// PCM Configuration for Quad-Mic direct Capture Stream
#define QUAD_MIC_CAPTURE_CHANNELS        MEDIA_4_CHANNELS
#define QUAD_MIC_CAPTURE_SAMPLING_RATE   DEFAULT_MEDIA_SAMPLING_RATE
#define QUAD_MIC_CAPTURE_PERIOD_SIZE     480
#define QUAD_MIC_CAPTURE_PERIOD_COUNT    4
#define QUAD_MIC_CAPTURE_FORMAT          DEFAULT_MEDIA_FORMAT
#define QUAD_MIC_CAPTURE_START           QUAD_MIC_CAPTURE_PERIOD_SIZE
#define QUAD_MIC_CAPTURE_STOP            UINT_MAX

struct pcm_config pcm_config_vc_quad_mic_capture = {
    .channels        = QUAD_MIC_CAPTURE_CHANNELS,
    .rate            = QUAD_MIC_CAPTURE_SAMPLING_RATE,
    .period_size     = QUAD_MIC_CAPTURE_PERIOD_SIZE,
    .period_count    = QUAD_MIC_CAPTURE_PERIOD_COUNT,
    .format          = QUAD_MIC_CAPTURE_FORMAT,
    .start_threshold = QUAD_MIC_CAPTURE_START,
    .stop_threshold  = QUAD_MIC_CAPTURE_STOP,
};
#endif

// PCM Configurations for ERAP In Stream
#define ERAP_IN_CARD                    SOUND_CARD0
#define ERAP_IN_DEVICE                  SOUND_DEVICE_ABOX_RDMA11

#define ERAP_IN_CHANNELS                DEFAULT_MEDIA_CHANNELS
#define ERAP_IN_SAMPLING_RATE           DEFAULT_MEDIA_SAMPLING_RATE
#define ERAP_IN_PERIOD_SIZE             480
#define ERAP_IN_PERIOD_COUNT            4
#define ERAP_IN_FORMAT                  DEFAULT_MEDIA_FORMAT
#define ERAP_IN_START                   ERAP_IN_PERIOD_SIZE
#define ERAP_IN_STOP                    UINT_MAX

struct pcm_config pcm_config_erap_in = {
    .channels        = ERAP_IN_CHANNELS,
    .rate            = ERAP_IN_SAMPLING_RATE,
    .period_size     = ERAP_IN_PERIOD_SIZE,
    .period_count    = ERAP_IN_PERIOD_COUNT,
    .format          = ERAP_IN_FORMAT,
    .start_threshold = ERAP_IN_START,
    .stop_threshold  = ERAP_IN_STOP,
};

// PCM Configurations for Speaker AMP Reference Stream
#define SPKAMP_REFERENCE_CARD           SOUND_CARD0
#define SPKAMP_REFERENCE_DEVICE         SOUND_DEVICE_ABOX_WDMA0

#define SPKAMP_REFERENCE_CHANNELS       MEDIA_4_CHANNELS
#define SPKAMP_REFERENCE_SAMPLING_RATE  DEFAULT_MEDIA_SAMPLING_RATE
#define SPKAMP_REFERENCE_PERIOD_SIZE    480
#define SPKAMP_REFERENCE_PERIOD_COUNT   4
#define SPKAMP_REFERENCE_FORMAT         DEFAULT_MEDIA_FORMAT
#define SPKAMP_REFERENCE_START          SPKAMP_REFERENCE_PERIOD_SIZE
#define SPKAMP_REFERENCE_STOP           UINT_MAX

struct pcm_config pcm_config_spkamp_reference = {
    .channels        = SPKAMP_REFERENCE_CHANNELS,
    .rate            = SPKAMP_REFERENCE_SAMPLING_RATE,
    .period_size     = SPKAMP_REFERENCE_PERIOD_SIZE,
    .period_count    = SPKAMP_REFERENCE_PERIOD_COUNT,
    .format          = SPKAMP_REFERENCE_FORMAT,
    .start_threshold = SPKAMP_REFERENCE_START,
    .stop_threshold  = SPKAMP_REFERENCE_STOP,
};

// PCM Configurations for BT A2DP Output Loopback Stream
#define BTA2DP_OUT_LOOPBACK_CARD             SOUND_CARD0
#define BTA2DP_OUT_LOOPBACK_DEVICE           SOUND_DEVICE_ABOX_WDMA5

#define BTA2DP_OUT_LOOPBACK_CHANNELS         DEFAULT_MEDIA_CHANNELS
#define BTA2DP_OUT_LOOPBACK_SAMPLING_RATE    DEFAULT_MEDIA_SAMPLING_RATE
#define BTA2DP_OUT_LOOPBACK_PERIOD_SIZE      480
#define BTA2DP_OUT_LOOPBACK_PERIOD_COUNT     4
#define BTA2DP_OUT_LOOPBACK_FORMAT           DEFAULT_MEDIA_FORMAT
#define BTA2DP_OUT_LOOPBACK_START            BTA2DP_OUT_LOOPBACK_PERIOD_SIZE
#define BTA2DP_OUT_LOOPBACK_STOP             UINT_MAX

struct pcm_config pcm_config_bta2dp_out_loopback = {
    .channels        = BTA2DP_OUT_LOOPBACK_CHANNELS,
    .rate            = BTA2DP_OUT_LOOPBACK_SAMPLING_RATE,
    .period_size     = BTA2DP_OUT_LOOPBACK_PERIOD_SIZE,
    .period_count    = BTA2DP_OUT_LOOPBACK_PERIOD_COUNT,
    .format          = BTA2DP_OUT_LOOPBACK_FORMAT,
    .start_threshold = BTA2DP_OUT_LOOPBACK_START,
    .stop_threshold  = BTA2DP_OUT_LOOPBACK_STOP,
};

// PCM Configurations for Voice Call/TelephonyRx Recording Stream
#define TELERX_RECORD_CARD              SOUND_CARD2
#define TELERX_RECORD_DEVICE            SOUND_DEVICE_TELEPHONYRX_RECORD

#define CALL_RECORD_CARD                SOUND_CARD2
#define CALL_RECORD_DEVICE              SOUND_DEVICE_CALL_RECORD

#define CALL_RECORD_CHANNELS            DEFAULT_VOICE_REC_CHANNELS
#define CALL_RECORD_SAMPLING_RATE       DEFAULT_VOICE_REC_SAMPLINGRATE
#define CALL_RECORD_PERIOD_SIZE         DEFAULT_VOICE_REC_PERIODSIZE
#define CALL_RECORD_PERIOD_COUNT        DEFAULT_VOICE_REC_PERIODCOUNT
#define CALL_RECORD_FORMAT              DEFAULT_VOICE_REC_FORMAT
#define CALL_RECORD_START               CALL_RECORD_PERIOD_SIZE
#define CALL_RECORD_STOP                UINT_MAX

struct pcm_config pcm_config_call_record = {
    .channels        = CALL_RECORD_CHANNELS,
    .rate            = CALL_RECORD_SAMPLING_RATE,
    .period_size     = CALL_RECORD_PERIOD_SIZE,
    .period_count    = CALL_RECORD_PERIOD_COUNT,
    .format          = CALL_RECORD_FORMAT,
    .start_threshold = CALL_RECORD_START,
    .stop_threshold  = CALL_RECORD_STOP,
};

// PCM Configurations for FM Radio Recording Stream
#define FM_RECORD_CARD                  SOUND_CARD1
#define FM_RECORD_DEVICE                SOUND_DEVICE_VIRT_FM_RECORD

#define FM_RECORD_CHANNELS              DEFAULT_FM_REC_CHANNELS
#define FM_RECORD_SAMPLING_RATE         DEFAULT_FM_REC_SAMPLINGRATE
#define FM_RECORD_PERIOD_SIZE           DEFAULT_FM_REC_PERIODSIZE
#define FM_RECORD_PERIOD_COUNT          DEFAULT_FM_REC_PERIODCOUNT
#define FM_RECORD_FORMAT                DEFAULT_FM_REC_FORMAT
#define FM_RECORD_START                 FM_RECORD_PERIOD_SIZE
#define FM_RECORD_STOP                  FM_RECORD_PERIOD_SIZE * FM_RECORD_PERIOD_COUNT

struct pcm_config pcm_config_fm_record = {
    .channels        = FM_RECORD_CHANNELS,
    .rate            = FM_RECORD_SAMPLING_RATE,
    .period_size     = FM_RECORD_PERIOD_SIZE,
    .period_count    = FM_RECORD_PERIOD_COUNT,
    .format          = FM_RECORD_FORMAT,
    .start_threshold = FM_RECORD_START,
    .stop_threshold  = FM_RECORD_STOP,
};


#ifdef SUPPORT_STHAL_INTERFACE
// PCM Configurations for hotword capture Stream
// Note: Should be matching with STHAL pcm configuration
#define DEFAULT_HOTWORD_CHANNELS                1       // Mono
#define DEFAULT_HOTWORD_SAMPLING_RATE           16000
#define HOTWORD_PERIOD_SIZE                     480     // 480 frames, 30ms in case of 16KHz Stream
#define HOTWORD_PERIOD_COUNT                    128     // Buffer count => Total  122880 Bytes = 480 * 1(Mono) * 2(16bit PCM) * 128(Buffer count)

struct pcm_config pcm_config_hotword_capture = {
    .channels = DEFAULT_HOTWORD_CHANNELS,
    .rate = DEFAULT_HOTWORD_SAMPLING_RATE,
    .period_size = HOTWORD_PERIOD_SIZE,
    .period_count = HOTWORD_PERIOD_COUNT,
    .format = PCM_FORMAT_S16_LE,
};
#endif

#define MAX_PCM_PATH_LEN 256

// Duration for DP Playback
#define PREDEFINED_DP_PLAYBACK_DURATION     20  // 20ms

// Duration for MMAP pcm configurations
#define PREDEFINED_MMAP_CAPTURE_DURATION    1   // 1ms

// Duration for Remote-Mic Playback/Capture loopback node configuration
#define PREDEFINED_REMOTE_MIC_DURATION      20  // 20ms

// Duration for USB Playback
#define PREDEFINED_USB_PLAYBACK_DURATION    10  // 10ms

#endif  // __EXYNOS_AUDIOPROXY_PCM_H__
