/* SPDX-License-Identifier: GPL-2.0 */
/*
* PCM3060 codec driver
*
* Copyright (C) 2018 Kirill Marinushkin <k.marinushkin@gmail.com>
*/
#ifndef _SND_SOC_PCM3060_H
#define _SND_SOC_PCM3060_H
#include <linux/device.h>
#include <linux/regmap.h>
extern const struct regmap_config pcm3060_regmap;
#define PCM3060_DAI_ID_DAC 0
#define PCM3060_DAI_ID_ADC 1
#define PCM3060_DAI_IDS_NUM 2
/* ADC and DAC can be clocked from separate or same sources CLK1 and CLK2 */
#define PCM3060_CLK_DEF 0 /* default: CLK1->ADC, CLK2->DAC */
#define PCM3060_CLK1 1
#define PCM3060_CLK2 2
struct pcm3060_priv_dai {
bool is_provider;
unsigned int sclk_freq;
};
struct pcm3060_priv {
struct regmap *regmap;
struct pcm3060_priv_dai dai[PCM3060_DAI_IDS_NUM];
u8 out_se: 1 ;
};
int pcm3060_probe(struct device *dev);
int pcm3060_remove(struct device *dev);
/* registers */
#define PCM3060_REG64 0 x40
#define PCM3060_REG_MRST 0 x80
#define PCM3060_REG_SRST 0 x40
#define PCM3060_REG_ADPSV 0 x20
#define PCM3060_REG_SHIFT_ADPSV 0 x05
#define PCM3060_REG_DAPSV 0 x10
#define PCM3060_REG_SHIFT_DAPSV 0 x04
#define PCM3060_REG_SE 0 x01
#define PCM3060_REG65 0 x41
#define PCM3060_REG66 0 x42
#define PCM3060_REG_AT2_MIN 0 x36
#define PCM3060_REG_AT2_MAX 0 xFF
#define PCM3060_REG67 0 x43
#define PCM3060_REG72 0 x48
#define PCM3060_REG_CSEL 0 x80
#define PCM3060_REG_MASK_MS 0 x70
#define PCM3060_REG_MS_S 0 x00
#define PCM3060_REG_MS_M768 (0 x01 << 4 )
#define PCM3060_REG_MS_M512 (0 x02 << 4 )
#define PCM3060_REG_MS_M384 (0 x03 << 4 )
#define PCM3060_REG_MS_M256 (0 x04 << 4 )
#define PCM3060_REG_MS_M192 (0 x05 << 4 )
#define PCM3060_REG_MS_M128 (0 x06 << 4 )
#define PCM3060_REG_MASK_FMT 0 x03
#define PCM3060_REG_FMT_I2S 0 x00
#define PCM3060_REG_FMT_LJ 0 x01
#define PCM3060_REG_FMT_RJ 0 x02
#define PCM3060_REG68 0 x44
#define PCM3060_REG_OVER 0 x40
#define PCM3060_REG_DREV2 0 x04
#define PCM3060_REG_SHIFT_MUT21 0 x00
#define PCM3060_REG_SHIFT_MUT22 0 x01
#define PCM3060_REG69 0 x45
#define PCM3060_REG_FLT 0 x80
#define PCM3060_REG_MASK_DMF 0 x60
#define PCM3060_REG_DMC 0 x10
#define PCM3060_REG_ZREV 0 x02
#define PCM3060_REG_AZRO 0 x01
#define PCM3060_REG70 0 x46
#define PCM3060_REG71 0 x47
#define PCM3060_REG_AT1_MIN 0 x0E
#define PCM3060_REG_AT1_MAX 0 xFF
#define PCM3060_REG73 0 x49
#define PCM3060_REG_ZCDD 0 x10
#define PCM3060_REG_BYP 0 x08
#define PCM3060_REG_DREV1 0 x04
#define PCM3060_REG_SHIFT_MUT11 0 x00
#define PCM3060_REG_SHIFT_MUT12 0 x01
#endif /* _SND_SOC_PCM3060_H */
Messung V0.5 in Prozent C=96 H=93 G=94
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-08)
¤
*© Formatika GbR, Deutschland