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