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
|
/* Copyright 2022 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
* ANX7483: Active redriver with linear equilzation
*
* Public functions, definitions, and structures.
*/
#ifndef __CROS_EC_USB_RETIMER_ANX7483_PUBLIC_H
#define __CROS_EC_USB_RETIMER_ANX7483_PUBLIC_H
#include "usb_mux.h"
/* I2C interface addresses */
#define ANX7483_I2C_ADDR0_FLAGS 0x3E
#define ANX7483_I2C_ADDR1_FLAGS 0x38
#define ANX7483_I2C_ADDR2_FLAGS 0x40
#define ANX7483_I2C_ADDR3_FLAGS 0x44
/* Equalization tuning */
enum anx7483_eq_setting {
ANX7483_EQ_SETTING_3_9DB = 0,
ANX7483_EQ_SETTING_4_7DB = 1,
ANX7483_EQ_SETTING_5_5DB = 2,
ANX7483_EQ_SETTING_6_1DB = 3,
ANX7483_EQ_SETTING_6_8DB = 4,
ANX7483_EQ_SETTING_7_3DB = 5,
ANX7483_EQ_SETTING_7_8DB = 6,
ANX7483_EQ_SETTING_8_1DB = 7,
ANX7483_EQ_SETTING_8_4DB = 8,
ANX7483_EQ_SETTING_8_7DB = 9,
ANX7483_EQ_SETTING_9_2DB = 10,
ANX7483_EQ_SETTING_9_7DB = 11,
ANX7483_EQ_SETTING_10_3DB = 12,
ANX7483_EQ_SETTING_11_1DB = 13,
ANX7483_EQ_SETTING_11_8DB = 14,
ANX7483_EQ_SETTING_12_5DB = 15,
};
enum anx7483_tune_pin {
ANX7483_PIN_UTX1,
ANX7483_PIN_UTX2,
ANX7483_PIN_URX1,
ANX7483_PIN_URX2,
ANX7483_PIN_DRX1,
ANX7483_PIN_DRX2,
};
/* Adjust the equalization for a pin */
enum ec_error_list anx7483_set_eq(const struct usb_mux *me,
enum anx7483_tune_pin pin,
enum anx7483_eq_setting eq);
/*
* Configure datasheet defaults for tuning registers at this mux setting.
* Return int so function can be used directly for board_set.
*/
int anx7483_set_default_tuning(const struct usb_mux *me, mux_state_t mux_state);
extern const struct usb_mux_driver anx7483_usb_retimer_driver;
#endif /* __CROS_EC_USB_RETIMER_ANX7483_PUBLIC_H */
|