1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * PCM3168A codec driver header
4 *
5 * Copyright (C) 2015 Imagination Technologies Ltd.
6 *
7 * Author: Damien Horsley <Damien.Horsley@imgtec.com>
8 */
9
10#ifndef __PCM3168A_H__
11#define __PCM3168A_H__
12
13extern const struct dev_pm_ops pcm3168a_pm_ops;
14extern const struct regmap_config pcm3168a_regmap;
15
16extern int pcm3168a_probe(struct device *dev, struct regmap *regmap);
17extern void pcm3168a_remove(struct device *dev);
18
19#define PCM3168A_RST_SMODE			0x40
20#define PCM3168A_MRST_MASK			0x80
21#define PCM3168A_SRST_MASK			0x40
22#define PCM3168A_DAC_SRDA_SHIFT			0
23#define PCM3168A_DAC_SRDA_MASK			0x3
24
25#define PCM3168A_DAC_PWR_MST_FMT		0x41
26#define PCM3168A_DAC_PSMDA_SHIFT		7
27#define PCM3168A_DAC_PSMDA_MASK			0x80
28#define PCM3168A_DAC_MSDA_SHIFT			4
29#define PCM3168A_DAC_MSDA_MASK			0x70
30#define PCM3168A_DAC_FMT_SHIFT			0
31#define PCM3168A_DAC_FMT_MASK			0xf
32
33#define PCM3168A_DAC_OP_FLT			0x42
34#define PCM3168A_DAC_OPEDA_SHIFT		4
35#define PCM3168A_DAC_OPEDA_MASK			0xf0
36#define PCM3168A_DAC_FLT_SHIFT			0
37#define PCM3168A_DAC_FLT_MASK			0xf
38
39#define PCM3168A_DAC_INV			0x43
40
41#define PCM3168A_DAC_MUTE			0x44
42
43#define PCM3168A_DAC_ZERO			0x45
44
45#define PCM3168A_DAC_ATT_DEMP_ZF		0x46
46#define PCM3168A_DAC_ATMDDA_MASK		0x80
47#define PCM3168A_DAC_ATMDDA_SHIFT		7
48#define PCM3168A_DAC_ATSPDA_MASK		0x40
49#define PCM3168A_DAC_ATSPDA_SHIFT		6
50#define PCM3168A_DAC_DEMP_SHIFT			4
51#define PCM3168A_DAC_DEMP_MASK			0x30
52#define PCM3168A_DAC_AZRO_SHIFT			1
53#define PCM3168A_DAC_AZRO_MASK			0xe
54#define PCM3168A_DAC_ZREV_MASK			0x1
55#define PCM3168A_DAC_ZREV_SHIFT			0
56
57#define PCM3168A_DAC_VOL_MASTER			0x47
58
59#define PCM3168A_DAC_VOL_CHAN_START		0x48
60
61#define PCM3168A_ADC_SMODE			0x50
62#define PCM3168A_ADC_SRAD_SHIFT			0
63#define PCM3168A_ADC_SRAD_MASK			0x3
64
65#define PCM3168A_ADC_MST_FMT			0x51
66#define PCM3168A_ADC_MSAD_SHIFT			4
67#define PCM3168A_ADC_MSAD_MASK			0x70
68#define PCM3168A_ADC_FMTAD_SHIFT		0
69#define PCM3168A_ADC_FMTAD_MASK			0x7
70
71#define PCM3168A_ADC_PWR_HPFB			0x52
72#define PCM3168A_ADC_PSVAD_SHIFT		4
73#define PCM3168A_ADC_PSVAD_MASK			0x70
74#define PCM3168A_ADC_BYP_SHIFT			0
75#define PCM3168A_ADC_BYP_MASK			0x7
76
77#define PCM3168A_ADC_SEAD			0x53
78
79#define PCM3168A_ADC_INV			0x54
80
81#define PCM3168A_ADC_MUTE			0x55
82
83#define PCM3168A_ADC_OV				0x56
84
85#define PCM3168A_ADC_ATT_OVF			0x57
86#define PCM3168A_ADC_ATMDAD_MASK		0x80
87#define PCM3168A_ADC_ATMDAD_SHIFT		7
88#define PCM3168A_ADC_ATSPAD_MASK		0x40
89#define PCM3168A_ADC_ATSPAD_SHIFT		6
90#define PCM3168A_ADC_OVFP_MASK			0x1
91#define PCM3168A_ADC_OVFP_SHIFT			0
92
93#define PCM3168A_ADC_VOL_MASTER			0x58
94
95#define PCM3168A_ADC_VOL_CHAN_START		0x59
96
97#endif
98