phy: marvell: add IGNORE COMPHY type

This type tells u-boot to preserve the COMPHY settings as is
it is usefull in situations where the COMPHY was initialized by
earlier firmware.
Note that IGNORE is different from UNCONNECTED since setting
UNCONNECTED type will disconnect the COMPHY in the COMPHY MUX
which is a desired behaviour

Signed-off-by: Yehuda Yitschak <yehuday@marvell.com>
Signed-off-by: Stefan Roese <sr@denx.de>
Signed-off-by: Igal Liberman <igall@marvell.com>
Reviewed-by: Stefan Roese <sr@denx.de>
This commit is contained in:
Stefan Roese 2017-04-24 18:45:24 +03:00
parent e89acc4bf1
commit 6ecc0b1cdf
4 changed files with 11 additions and 2 deletions

View file

@ -37,7 +37,7 @@ static char *get_type_string(u32 type)
"SGMII1", "SGMII2", "SGMII3", "QSGMII", "SGMII1", "SGMII2", "SGMII3", "QSGMII",
"USB3_HOST0", "USB3_HOST1", "USB3_DEVICE", "USB3_HOST0", "USB3_HOST1", "USB3_DEVICE",
"XAUI0", "XAUI1", "XAUI2", "XAUI3", "XAUI0", "XAUI1", "XAUI2", "XAUI3",
"RXAUI0", "RXAUI1", "SFI"}; "RXAUI0", "RXAUI1", "SFI", "IGNORE"};
if (type < 0 || type > PHY_TYPE_MAX) if (type < 0 || type > PHY_TYPE_MAX)
return "invalid"; return "invalid";

View file

@ -1663,6 +1663,7 @@ int comphy_cp110_init(struct chip_serdes_phy_config *ptr_chip_cfg,
} }
switch (ptr_comphy_map->type) { switch (ptr_comphy_map->type) {
case PHY_TYPE_UNCONNECTED: case PHY_TYPE_UNCONNECTED:
case PHY_TYPE_IGNORE:
continue; continue;
break; break;
case PHY_TYPE_PEX0: case PHY_TYPE_PEX0:

View file

@ -27,6 +27,10 @@ static void comphy_mux_check_config(struct comphy_mux_data *mux_data,
for (lane = 0; lane < comphy_max_lanes; for (lane = 0; lane < comphy_max_lanes;
lane++, comphy_map_data++, mux_data++) { lane++, comphy_map_data++, mux_data++) {
/* Don't check ignored COMPHYs */
if (comphy_map_data->type == PHY_TYPE_IGNORE)
continue;
mux_opt = mux_data->mux_values; mux_opt = mux_data->mux_values;
for (opt = 0, valid = 0; opt < mux_data->max_lane_values; for (opt = 0, valid = 0; opt < mux_data->max_lane_values;
opt++, mux_opt++) { opt++, mux_opt++) {
@ -83,6 +87,9 @@ static void comphy_mux_reg_write(struct comphy_mux_data *mux_data,
for (lane = 0; lane < comphy_max_lanes; for (lane = 0; lane < comphy_max_lanes;
lane++, comphy_map_data++, mux_data++) { lane++, comphy_map_data++, mux_data++) {
if (comphy_map_data->type == PHY_TYPE_IGNORE)
continue;
offset = lane * bitcount; offset = lane * bitcount;
mask = (((1 << bitcount) - 1) << offset); mask = (((1 << bitcount) - 1) << offset);
value = (comphy_mux_get_mux_value(mux_data, value = (comphy_mux_get_mux_value(mux_data,

View file

@ -43,7 +43,8 @@
#define PHY_TYPE_RXAUI0 21 #define PHY_TYPE_RXAUI0 21
#define PHY_TYPE_RXAUI1 22 #define PHY_TYPE_RXAUI1 22
#define PHY_TYPE_SFI 23 #define PHY_TYPE_SFI 23
#define PHY_TYPE_MAX 24 #define PHY_TYPE_IGNORE 24
#define PHY_TYPE_MAX 25
#define PHY_TYPE_INVALID 0xff #define PHY_TYPE_INVALID 0xff
#define PHY_POLARITY_NO_INVERT 0 #define PHY_POLARITY_NO_INVERT 0