Files
SDK_SG200x_V2/linux_5.10/sound/soc/codecs/cv1835dac.h
carbon 0545e9dc6d init version 2024-05-07
commit d1edce71135cc6d98c0a4b5729774542b676e769
Author: sophgo-forum-service <forum_service@sophgo.com>
Date:   Fri Mar 15 16:07:33 2024 +0800

    [fix] recommend using ssh method to clone repo.
    [fix] fix sensor driver repo branch name.
2024-05-07 19:36:36 +08:00

74 lines
2.0 KiB
C

/* SPDX-License-Identifier: GPL-2.0-or-later
* CV1835 DAC driver on CVITEK CV1835
*
* Copyright 2019 CVITEK
*
* Author: EthanChen
*
*/
#ifndef __CV1835DAC_H__
#define __CV1835DAC_H__
#include <linux/clk.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <linux/miscdevice.h>
#define CVI_DAC_FS_REG 0x00
#define CVI_DAC_FS_16_32 0x0
#define CVI_DAC_FS_32_64 0x1
#define CVI_DAC_FS_64_128 0x2
#define CVI_DAC_FS_128_192 0x3
#define CVI_DAC_CTRL_REG 0x04
#define CVI_DAC_PWDAR_MASK 0x00000001
#define CVI_DAC_PWDAR_NORMAL 0xFFFFFFFE
#define CVI_DAC_PWDAR_DOWN (1 << 0)
#define CVI_DAC_PWDAL_MASK 0x00000002
#define CVI_DAC_PWDAL_NORMAL 0xFFFFFFFD
#define CVI_DAC_PWDAL_DOWN (1 << 1)
#define CVI_DAC_EN_REF_DISABLE 0xFFFFFFFB
#define CVI_DAC_EN_REF_ENABLE (1 << 2)
#define CVI_DAC_DEN_ENABLE 0xFFFFFFF7
#define CVI_DAC_DEN_DISABLE (1 << 3)
#define CVI_DAC_AEN_ENABLE 0xFFFFFFEF
#define CVI_DAC_AEN_DISABLE (1 << 4)
#define CVI_DAC_STR_DISABLE 0xFFFFFFDF
#define CVI_DAC_STR_ENABLE (1 << 5)
#define CVI_DAC_DISTHER_DISABLE 0xFFFFFFBF
#define CVI_DAC_DISTHER_ENABLE (1 << 6)
#define CVI_DAC_MUTE_MODE 0xFFFFFCFF
#define CVI_DAC_DEMUTE_MODE (0x3 << 8)
#define CVI_DAC_CKINV_NODELAY 0xFFFFFBFF
#define CVI_DAC_CKINV_DELAY (1 << 10)
#define CVI_DAC_S_MASK 0xFFFF0FFF
#define CVI_DAC_S(v) (v << 12)
#define CVI_DAC_ZCD_DISABLE 0xFFFEFFFF
#define CVI_DAC_ZCD_ENABLE (1 << 16)
#define CVI_DAC_TEST_MODE_REG 0x08
#define CVI_DAC_TM_NORMAL 0x0
#define CVI_DAC_TM_DF 0x1 /* DAC digital filter test mode */
#define CVI_DAC_TM_SDM 0x2 /* DAC delta sigma modulator */
#define CVI_DAC_AIO_DA_REG 0x0C
#define CVI_DAV_AIO_ALL_GPIO 0x0
#define CVI_DAV_AIO_2CH 0x1
#define CVI_DAC_AS_LEVEL_REG 0x10
struct cvi1835dac {
void __iomem *dac_base;
struct clk *clk;
struct device *dev;
struct miscdevice miscdev;
};
extern bool cv1835dac_is_mute(struct snd_pcm_substream *substream);
extern struct proc_dir_entry *proc_audio_dir;
#endif /* __CV1835DAC_H__ */