Skip to content

Commit f16df05

Browse files
Danielmachonvinodkoul
authored andcommitted
phy: sparx5-serdes: add function for getting the CMU index
The SERDES to CMU mapping is different on Sparx5 and lan969x. Therefore create a function for getting the CMU index on Sparx5. Signed-off-by: Daniel Machon <daniel.machon@microchip.com> Reviewed-by: Steen Hegelund <Steen.Hegelund@microchip.com> Link: https://lore.kernel.org/r/20240909-sparx5-lan969x-serdes-driver-v2-5-d695bcb57b84@microchip.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
1 parent d61d42a commit f16df05

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

drivers/phy/microchip/sparx5_serdes.c

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,6 @@
2828
/* Optimal power settings from GUC */
2929
#define SPX5_SERDES_QUIET_MODE_VAL 0x01ef4e0c
3030

31-
enum sparx5_10g28cmu_mode {
32-
SPX5_SD10G28_CMU_MAIN = 0,
33-
SPX5_SD10G28_CMU_AUX1 = 1,
34-
SPX5_SD10G28_CMU_AUX2 = 3,
35-
SPX5_SD10G28_CMU_NONE = 4,
36-
SPX5_SD10G28_CMU_MAX,
37-
};
38-
3931
enum sparx5_sd25g28_mode_preset_type {
4032
SPX5_SD25G28_MODE_PRESET_25000,
4133
SPX5_SD25G28_MODE_PRESET_10000,
@@ -1648,7 +1640,7 @@ static int sparx5_sd10g28_apply_params(struct sparx5_serdes_macro *macro,
16481640
if (params->skip_cmu_cfg)
16491641
return 0;
16501642

1651-
cmu_idx = sparx5_serdes_cmu_get(params->cmu_sel, lane_index);
1643+
cmu_idx = priv->data->ops.serdes_cmu_get(params->cmu_sel, macro->sidx);
16521644
err = sparx5_cmu_cfg(priv, cmu_idx);
16531645
if (err)
16541646
return err;
@@ -2520,6 +2512,7 @@ static const struct sparx5_serdes_match_data sparx5_desc = {
25202512
},
25212513
.ops = {
25222514
.serdes_type_set = &sparx5_serdes_type_set,
2515+
.serdes_cmu_get = &sparx5_serdes_cmu_get,
25232516
},
25242517
};
25252518

drivers/phy/microchip/sparx5_serdes.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,14 @@ enum sparx5_serdes_mode {
2626
SPX5_SD_MODE_SFI,
2727
};
2828

29+
enum sparx5_10g28cmu_mode {
30+
SPX5_SD10G28_CMU_MAIN = 0,
31+
SPX5_SD10G28_CMU_AUX1 = 1,
32+
SPX5_SD10G28_CMU_AUX2 = 3,
33+
SPX5_SD10G28_CMU_NONE = 4,
34+
SPX5_SD10G28_CMU_MAX,
35+
};
36+
2937
struct sparx5_serdes_macro {
3038
struct sparx5_serdes_private *priv;
3139
u32 sidx;
@@ -44,6 +52,7 @@ struct sparx5_serdes_consts {
4452

4553
struct sparx5_serdes_ops {
4654
void (*serdes_type_set)(struct sparx5_serdes_macro *macro, int sidx);
55+
int (*serdes_cmu_get)(enum sparx5_10g28cmu_mode mode, int sd_index);
4756
};
4857

4958
struct sparx5_serdes_match_data {

0 commit comments

Comments
 (0)