summaryrefslogtreecommitdiff
path: root/driver/retimer/pi3hdx1204.h
blob: 637accaf5639659c947e3000e2b028b0d5384572 (plain)
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
/* Copyright 2020 The ChromiumOS Authors
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 *
 * PI3HDX1204 retimer.
 */

#ifndef __CROS_EC_USB_RETIMER_PI3HDX1204_H
#define __CROS_EC_USB_RETIMER_PI3HDX1204_H

#define PI3HDX1204_I2C_ADDR_FLAGS 0x60

/* Register Offset 0 - Activity */
#define PI3HDX1204_ACTIVITY_OFFSET 0

/* Register Offset 1 - Not Used */
#define PI3HDX1204_NOT_USED_OFFSET 1

/* Register Offset 2 - Enable */
#define PI3HDX1204_ENABLE_OFFSET 2
#define PI3HDX1204_ENABLE_ALL_CHANNELS 0xF0

/* Register Offset 3 - EQ setting BIT7-4:CH1, BIT3-0:CH0 */
#define PI3HDX1204_EQ_CH0_CH1_OFFSET 3

/* Register Offset 4 - EQ setting BIT7-4:CH3, BIT3-0:CH2 */
#define PI3HDX1204_EQ_CH2_CH3_OFFSET 4

/* EQ setting for two channel */
#define PI3HDX1204_EQ_DB25 0x00
#define PI3HDX1204_EQ_DB80 0x11
#define PI3HDX1204_EQ_DB110 0x22
#define PI3HDX1204_EQ_DB220 0x33
#define PI3HDX1204_EQ_DB410 0x44
#define PI3HDX1204_EQ_DB710 0x55
#define PI3HDX1204_EQ_DB900 0x66
#define PI3HDX1204_EQ_DB1030 0x77
#define PI3HDX1204_EQ_DB1180 0x88
#define PI3HDX1204_EQ_DB1390 0x99
#define PI3HDX1204_EQ_DB1530 0xAA
#define PI3HDX1204_EQ_DB1690 0xBB
#define PI3HDX1204_EQ_DB1790 0xCC
#define PI3HDX1204_EQ_DB1920 0xDD
#define PI3HDX1204_EQ_DB2050 0xEE
#define PI3HDX1204_EQ_DB2220 0xFF

/* Register Offset 5 - Output Voltage Swing Setting */
#define PI3HDX1204_VOD_OFFSET 5
#define PI3HDX1204_VOD_80_ALL_CHANNELS 0x00
#define PI3HDX1204_VOD_95_ALL_CHANNELS 0x55
#define PI3HDX1204_VOD_115_ALL_CHANNELS 0xAA
#define PI3HDX1204_VOD_130_ALL_CHANNELS 0xFF

/* Register Offset 6 - Output De-emphasis Setting */
#define PI3HDX1204_DE_OFFSET 6
#define PI3HDX1204_DE_DB_0 0x00
#define PI3HDX1204_DE_DB_MINUS5 0x55
#define PI3HDX1204_DE_DB_MINUS7 0xAA
#define PI3HDX1204_DE_DB_MINUS10 0xFF

/* Delay for I2C to be ready after power on. */
#define PI3HDX1204_POWER_ON_DELAY_MS 13

/* Enable or disable the PI3HDX1204. */
int pi3hdx1204_enable(const int i2c_port, const uint16_t i2c_addr_flags,
		      const int enable);

struct pi3hdx1204_tuning {
	uint8_t eq_ch0_ch1_offset;
	uint8_t eq_ch2_ch3_offset;
	uint8_t vod_offset;
	uint8_t de_offset;
};
extern const struct pi3hdx1204_tuning pi3hdx1204_tuning;

#endif /* __CROS_EC_USB_RETIMER_PI3HDX1204_H */