xref: /rk3399_ARM-atf/drivers/marvell/comphy/phy-comphy-cp110.h (revision 42a293379e808f2300519db937c6dc9a7685a4b2)
10ade8cd8SKonstantin Porotchkin /*
20ade8cd8SKonstantin Porotchkin  * Copyright (C) 2018 Marvell International Ltd.
30ade8cd8SKonstantin Porotchkin  *
40ade8cd8SKonstantin Porotchkin  * SPDX-License-Identifier:     BSD-3-Clause
50ade8cd8SKonstantin Porotchkin  * https://spdx.org/licenses
60ade8cd8SKonstantin Porotchkin  */
70ade8cd8SKonstantin Porotchkin 
8*42a29337SGrzegorz Jaszczyk /* Those are parameters for xfi mode, which need to be tune for each board type.
9*42a29337SGrzegorz Jaszczyk  * For known DB boards the parameters was already calibrated and placed under
10*42a29337SGrzegorz Jaszczyk  * the plat/marvell/a8k/<board_type>/board/phy-porting-layer.h
11*42a29337SGrzegorz Jaszczyk  */
12*42a29337SGrzegorz Jaszczyk struct xfi_params {
13*42a29337SGrzegorz Jaszczyk 	uint8_t g1_ffe_res_sel;
14*42a29337SGrzegorz Jaszczyk 	uint8_t g1_ffe_cap_sel;
15*42a29337SGrzegorz Jaszczyk 	uint8_t align90;
16*42a29337SGrzegorz Jaszczyk 	uint8_t g1_dfe_res;
17*42a29337SGrzegorz Jaszczyk 	uint8_t g1_amp;
18*42a29337SGrzegorz Jaszczyk 	uint8_t g1_emph;
19*42a29337SGrzegorz Jaszczyk 	uint8_t g1_emph_en;
20*42a29337SGrzegorz Jaszczyk 	uint8_t g1_tx_amp_adj;
21*42a29337SGrzegorz Jaszczyk 	uint8_t g1_tx_emph_en;
22*42a29337SGrzegorz Jaszczyk 	uint8_t g1_tx_emph;
23*42a29337SGrzegorz Jaszczyk 	uint8_t g1_rx_selmuff;
24*42a29337SGrzegorz Jaszczyk 	uint8_t g1_rx_selmufi;
25*42a29337SGrzegorz Jaszczyk 	uint8_t g1_rx_selmupf;
26*42a29337SGrzegorz Jaszczyk 	uint8_t g1_rx_selmupi;
27*42a29337SGrzegorz Jaszczyk 	_Bool valid;
28*42a29337SGrzegorz Jaszczyk };
29*42a29337SGrzegorz Jaszczyk 
30*42a29337SGrzegorz Jaszczyk struct sata_params {
31*42a29337SGrzegorz Jaszczyk 	uint8_t g1_amp;
32*42a29337SGrzegorz Jaszczyk 	uint8_t g2_amp;
33*42a29337SGrzegorz Jaszczyk 	uint8_t g3_amp;
34*42a29337SGrzegorz Jaszczyk 
35*42a29337SGrzegorz Jaszczyk 	uint8_t g1_emph;
36*42a29337SGrzegorz Jaszczyk 	uint8_t g2_emph;
37*42a29337SGrzegorz Jaszczyk 	uint8_t g3_emph;
38*42a29337SGrzegorz Jaszczyk 
39*42a29337SGrzegorz Jaszczyk 	uint8_t g1_emph_en;
40*42a29337SGrzegorz Jaszczyk 	uint8_t g2_emph_en;
41*42a29337SGrzegorz Jaszczyk 	uint8_t g3_emph_en;
42*42a29337SGrzegorz Jaszczyk 
43*42a29337SGrzegorz Jaszczyk 	uint8_t g1_tx_amp_adj;
44*42a29337SGrzegorz Jaszczyk 	uint8_t g2_tx_amp_adj;
45*42a29337SGrzegorz Jaszczyk 	uint8_t g3_tx_amp_adj;
46*42a29337SGrzegorz Jaszczyk 
47*42a29337SGrzegorz Jaszczyk 	uint8_t g1_tx_emph_en;
48*42a29337SGrzegorz Jaszczyk 	uint8_t g2_tx_emph_en;
49*42a29337SGrzegorz Jaszczyk 	uint8_t g3_tx_emph_en;
50*42a29337SGrzegorz Jaszczyk 
51*42a29337SGrzegorz Jaszczyk 	uint8_t g1_tx_emph;
52*42a29337SGrzegorz Jaszczyk 	uint8_t g2_tx_emph;
53*42a29337SGrzegorz Jaszczyk 	uint8_t g3_tx_emph;
54*42a29337SGrzegorz Jaszczyk 
55*42a29337SGrzegorz Jaszczyk 	uint8_t g3_dfe_res;
56*42a29337SGrzegorz Jaszczyk 
57*42a29337SGrzegorz Jaszczyk 	uint8_t g3_ffe_res_sel;
58*42a29337SGrzegorz Jaszczyk 
59*42a29337SGrzegorz Jaszczyk 	uint8_t g3_ffe_cap_sel;
60*42a29337SGrzegorz Jaszczyk 
61*42a29337SGrzegorz Jaszczyk 	uint8_t align90;
62*42a29337SGrzegorz Jaszczyk 
63*42a29337SGrzegorz Jaszczyk 	uint8_t g1_rx_selmuff;
64*42a29337SGrzegorz Jaszczyk 	uint8_t g2_rx_selmuff;
65*42a29337SGrzegorz Jaszczyk 	uint8_t g3_rx_selmuff;
66*42a29337SGrzegorz Jaszczyk 
67*42a29337SGrzegorz Jaszczyk 	uint8_t g1_rx_selmufi;
68*42a29337SGrzegorz Jaszczyk 	uint8_t g2_rx_selmufi;
69*42a29337SGrzegorz Jaszczyk 	uint8_t g3_rx_selmufi;
70*42a29337SGrzegorz Jaszczyk 
71*42a29337SGrzegorz Jaszczyk 	uint8_t g1_rx_selmupf;
72*42a29337SGrzegorz Jaszczyk 	uint8_t g2_rx_selmupf;
73*42a29337SGrzegorz Jaszczyk 	uint8_t g3_rx_selmupf;
74*42a29337SGrzegorz Jaszczyk 
75*42a29337SGrzegorz Jaszczyk 	uint8_t g1_rx_selmupi;
76*42a29337SGrzegorz Jaszczyk 	uint8_t g2_rx_selmupi;
77*42a29337SGrzegorz Jaszczyk 	uint8_t g3_rx_selmupi;
78*42a29337SGrzegorz Jaszczyk 
79*42a29337SGrzegorz Jaszczyk 	_Bool valid;
80*42a29337SGrzegorz Jaszczyk };
810ade8cd8SKonstantin Porotchkin 
820ade8cd8SKonstantin Porotchkin int mvebu_cp110_comphy_is_pll_locked(uint64_t comphy_base,
83f858e989SGrzegorz Jaszczyk 				     uint8_t comphy_index);
840ade8cd8SKonstantin Porotchkin int mvebu_cp110_comphy_power_off(uint64_t comphy_base,
85f858e989SGrzegorz Jaszczyk 				 uint8_t comphy_index);
860ade8cd8SKonstantin Porotchkin int mvebu_cp110_comphy_power_on(uint64_t comphy_base,
87f858e989SGrzegorz Jaszczyk 				uint8_t comphy_index, uint64_t comphy_mode);
880ade8cd8SKonstantin Porotchkin int mvebu_cp110_comphy_xfi_rx_training(uint64_t comphy_base,
890ade8cd8SKonstantin Porotchkin 				       uint8_t comphy_index);
900ade8cd8SKonstantin Porotchkin int mvebu_cp110_comphy_digital_reset(uint64_t comphy_base, uint8_t comphy_index,
910ade8cd8SKonstantin Porotchkin 				     uint32_t comphy_mode, uint32_t command);
92