hc
2025-02-14 bbb9540dc49f70f6b703d1c8d1b85fa5f602d86e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Audio driver for AK4458
 *
 * Copyright (C) 2016 Asahi Kasei Microdevices Corporation
 * Copyright 2018 NXP
 */
 
#ifndef _AK4458_H
#define _AK4458_H
 
#include <linux/regmap.h>
 
/* Settings */
 
#define AK4458_00_CONTROL1            0x00
#define AK4458_01_CONTROL2            0x01
#define AK4458_02_CONTROL3            0x02
#define AK4458_03_LCHATT            0x03
#define AK4458_04_RCHATT            0x04
#define AK4458_05_CONTROL4            0x05
#define AK4458_06_DSD1                0x06
#define AK4458_07_CONTROL5            0x07
#define AK4458_08_SOUND_CONTROL            0x08
#define AK4458_09_DSD2                0x09
#define AK4458_0A_CONTROL6            0x0A
#define AK4458_0B_CONTROL7            0x0B
#define AK4458_0C_CONTROL8            0x0C
#define AK4458_0D_CONTROL9            0x0D
#define AK4458_0E_CONTROL10            0x0E
#define AK4458_0F_L2CHATT            0x0F
#define AK4458_10_R2CHATT            0x10
#define AK4458_11_L3CHATT            0x11
#define AK4458_12_R3CHATT            0x12
#define AK4458_13_L4CHATT            0x13
#define AK4458_14_R4CHATT            0x14
 
/* Bitfield Definitions */
 
/* AK4458_00_CONTROL1 (0x00) Fields
 * Addr Register Name  D7     D6    D5    D4    D3    D2    D1    D0
 * 00H  Control 1      ACKS   0     0     0     DIF2  DIF1  DIF0  RSTN
 */
 
/* Digital Filter (SD, SLOW, SSLOW) */
#define AK4458_SD_MASK        GENMASK(5, 5)
#define AK4458_SLOW_MASK    GENMASK(0, 0)
#define AK4458_SSLOW_MASK    GENMASK(0, 0)
 
/* DIF2    1 0
 *  x    1 0 MSB justified  Figure 3 (default)
 *  x    1 1 I2S Compliment  Figure 4
 */
#define AK4458_DIF_SHIFT    1
#define AK4458_DIF_MASK        GENMASK(3, 1)
 
#define AK4458_DIF_16BIT_LSB    (0 << 1)
#define AK4458_DIF_24BIT_I2S    (3 << 1)
#define AK4458_DIF_32BIT_LSB    (5 << 1)
#define AK4458_DIF_32BIT_MSB    (6 << 1)
#define AK4458_DIF_32BIT_I2S    (7 << 1)
 
/* AK4458_00_CONTROL1 (0x00) D0 bit */
#define AK4458_RSTN_MASK    GENMASK(0, 0)
#define AK4458_RSTN        (0x1 << 0)
 
/* AK4458_0A_CONTROL6 Mode bits */
#define AK4458_MODE_SHIFT    6
#define AK4458_MODE_MASK    GENMASK(7, 6)
#define AK4458_MODE_NORMAL    (0 << AK4458_MODE_SHIFT)
#define AK4458_MODE_TDM128    (1 << AK4458_MODE_SHIFT)
#define AK4458_MODE_TDM256    (2 << AK4458_MODE_SHIFT)
#define AK4458_MODE_TDM512    (3 << AK4458_MODE_SHIFT)
 
/* DAC Digital attenuator transition time setting
 * Table 19
 * Mode    ATS1    ATS2    ATT speed
 * 0    0    0    4080/fs
 * 1    0    1    2040/fs
 * 2    1    0    510/fs
 * 3    1    1    255/fs
 * */
#define AK4458_ATS_SHIFT    6
#define AK4458_ATS_MASK        GENMASK(7, 6)
 
#define AK4458_DSDSEL_MASK        (0x1 << 0)
#define AK4458_DP_MASK            (0x1 << 7)
 
#endif