xref: /rk3399_ARM-atf/drivers/marvell/comphy/phy-comphy-cp110.h (revision 2939f68add3269bf0e67f7a25c4a1b404a25c616)
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 
842a29337SGrzegorz Jaszczyk /* Those are parameters for xfi mode, which need to be tune for each board type.
942a29337SGrzegorz Jaszczyk  * For known DB boards the parameters was already calibrated and placed under
10a2847172SGrzegorz Jaszczyk  * the plat/marvell/armada/a8k/<board_type>/board/phy-porting-layer.h
1142a29337SGrzegorz Jaszczyk  */
1242a29337SGrzegorz Jaszczyk struct xfi_params {
1342a29337SGrzegorz Jaszczyk 	uint8_t g1_ffe_res_sel;
1442a29337SGrzegorz Jaszczyk 	uint8_t g1_ffe_cap_sel;
1542a29337SGrzegorz Jaszczyk 	uint8_t align90;
1642a29337SGrzegorz Jaszczyk 	uint8_t g1_dfe_res;
1742a29337SGrzegorz Jaszczyk 	uint8_t g1_amp;
1842a29337SGrzegorz Jaszczyk 	uint8_t g1_emph;
1942a29337SGrzegorz Jaszczyk 	uint8_t g1_emph_en;
2042a29337SGrzegorz Jaszczyk 	uint8_t g1_tx_amp_adj;
2142a29337SGrzegorz Jaszczyk 	uint8_t g1_tx_emph_en;
2242a29337SGrzegorz Jaszczyk 	uint8_t g1_tx_emph;
2342a29337SGrzegorz Jaszczyk 	uint8_t g1_rx_selmuff;
2442a29337SGrzegorz Jaszczyk 	uint8_t g1_rx_selmufi;
2542a29337SGrzegorz Jaszczyk 	uint8_t g1_rx_selmupf;
2642a29337SGrzegorz Jaszczyk 	uint8_t g1_rx_selmupi;
2742a29337SGrzegorz Jaszczyk 	_Bool valid;
2842a29337SGrzegorz Jaszczyk };
2942a29337SGrzegorz Jaszczyk 
3042a29337SGrzegorz Jaszczyk struct sata_params {
3142a29337SGrzegorz Jaszczyk 	uint8_t g1_amp;
3242a29337SGrzegorz Jaszczyk 	uint8_t g2_amp;
3342a29337SGrzegorz Jaszczyk 	uint8_t g3_amp;
3442a29337SGrzegorz Jaszczyk 
3542a29337SGrzegorz Jaszczyk 	uint8_t g1_emph;
3642a29337SGrzegorz Jaszczyk 	uint8_t g2_emph;
3742a29337SGrzegorz Jaszczyk 	uint8_t g3_emph;
3842a29337SGrzegorz Jaszczyk 
3942a29337SGrzegorz Jaszczyk 	uint8_t g1_emph_en;
4042a29337SGrzegorz Jaszczyk 	uint8_t g2_emph_en;
4142a29337SGrzegorz Jaszczyk 	uint8_t g3_emph_en;
4242a29337SGrzegorz Jaszczyk 
4342a29337SGrzegorz Jaszczyk 	uint8_t g1_tx_amp_adj;
4442a29337SGrzegorz Jaszczyk 	uint8_t g2_tx_amp_adj;
4542a29337SGrzegorz Jaszczyk 	uint8_t g3_tx_amp_adj;
4642a29337SGrzegorz Jaszczyk 
4742a29337SGrzegorz Jaszczyk 	uint8_t g1_tx_emph_en;
4842a29337SGrzegorz Jaszczyk 	uint8_t g2_tx_emph_en;
4942a29337SGrzegorz Jaszczyk 	uint8_t g3_tx_emph_en;
5042a29337SGrzegorz Jaszczyk 
5142a29337SGrzegorz Jaszczyk 	uint8_t g1_tx_emph;
5242a29337SGrzegorz Jaszczyk 	uint8_t g2_tx_emph;
5342a29337SGrzegorz Jaszczyk 	uint8_t g3_tx_emph;
5442a29337SGrzegorz Jaszczyk 
5542a29337SGrzegorz Jaszczyk 	uint8_t g3_dfe_res;
5642a29337SGrzegorz Jaszczyk 
5742a29337SGrzegorz Jaszczyk 	uint8_t g3_ffe_res_sel;
5842a29337SGrzegorz Jaszczyk 
5942a29337SGrzegorz Jaszczyk 	uint8_t g3_ffe_cap_sel;
6042a29337SGrzegorz Jaszczyk 
6142a29337SGrzegorz Jaszczyk 	uint8_t align90;
6242a29337SGrzegorz Jaszczyk 
6342a29337SGrzegorz Jaszczyk 	uint8_t g1_rx_selmuff;
6442a29337SGrzegorz Jaszczyk 	uint8_t g2_rx_selmuff;
6542a29337SGrzegorz Jaszczyk 	uint8_t g3_rx_selmuff;
6642a29337SGrzegorz Jaszczyk 
6742a29337SGrzegorz Jaszczyk 	uint8_t g1_rx_selmufi;
6842a29337SGrzegorz Jaszczyk 	uint8_t g2_rx_selmufi;
6942a29337SGrzegorz Jaszczyk 	uint8_t g3_rx_selmufi;
7042a29337SGrzegorz Jaszczyk 
7142a29337SGrzegorz Jaszczyk 	uint8_t g1_rx_selmupf;
7242a29337SGrzegorz Jaszczyk 	uint8_t g2_rx_selmupf;
7342a29337SGrzegorz Jaszczyk 	uint8_t g3_rx_selmupf;
7442a29337SGrzegorz Jaszczyk 
7542a29337SGrzegorz Jaszczyk 	uint8_t g1_rx_selmupi;
7642a29337SGrzegorz Jaszczyk 	uint8_t g2_rx_selmupi;
7742a29337SGrzegorz Jaszczyk 	uint8_t g3_rx_selmupi;
7842a29337SGrzegorz Jaszczyk 
7938f6dacaSGrzegorz Jaszczyk 	uint8_t polarity_invert;
8038f6dacaSGrzegorz Jaszczyk 
8142a29337SGrzegorz Jaszczyk 	_Bool valid;
8242a29337SGrzegorz Jaszczyk };
830ade8cd8SKonstantin Porotchkin 
84ff9cfdc0SGrzegorz Jaszczyk struct usb_params {
85ff9cfdc0SGrzegorz Jaszczyk 	uint8_t polarity_invert;
86ff9cfdc0SGrzegorz Jaszczyk };
87ff9cfdc0SGrzegorz Jaszczyk 
880ade8cd8SKonstantin Porotchkin int mvebu_cp110_comphy_is_pll_locked(uint64_t comphy_base,
89f858e989SGrzegorz Jaszczyk 				     uint8_t comphy_index);
900ade8cd8SKonstantin Porotchkin int mvebu_cp110_comphy_power_off(uint64_t comphy_base,
9155df84f9SIgal Liberman 				 uint8_t comphy_index, uint64_t comphy_mode);
92*550a06dfSAlex Evraev int mvebu_cp110_comphy_power_on(uint64_t comphy_base, uint8_t comphy_index,
93*550a06dfSAlex Evraev 				uint64_t comphy_mode,
94*550a06dfSAlex Evraev 				uint64_t comphy_train_base);
950ade8cd8SKonstantin Porotchkin int mvebu_cp110_comphy_xfi_rx_training(uint64_t comphy_base,
960ade8cd8SKonstantin Porotchkin 				       uint8_t comphy_index);
970ade8cd8SKonstantin Porotchkin int mvebu_cp110_comphy_digital_reset(uint64_t comphy_base, uint8_t comphy_index,
980ade8cd8SKonstantin Porotchkin 				     uint32_t comphy_mode, uint32_t command);
9938f6dacaSGrzegorz Jaszczyk 
10038f6dacaSGrzegorz Jaszczyk #define COMPHY_POLARITY_NO_INVERT	0
10138f6dacaSGrzegorz Jaszczyk #define COMPHY_POLARITY_TXD_INVERT	1
10238f6dacaSGrzegorz Jaszczyk #define COMPHY_POLARITY_RXD_INVERT	2
103