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