Lines Matching full:macro

182 static int lan966x_sd6g40_reg_cfg(struct serdes_macro *macro,  in lan966x_sd6g40_reg_cfg()  argument
205 macro->ctrl->regs, HSIO_SD_CFG(idx)); in lan966x_sd6g40_reg_cfg()
211 macro->ctrl->regs, HSIO_MPLL_CFG(idx)); in lan966x_sd6g40_reg_cfg()
215 macro->ctrl->regs, HSIO_SD_CFG(idx)); in lan966x_sd6g40_reg_cfg()
219 macro->ctrl->regs, HSIO_MPLL_CFG(idx)); in lan966x_sd6g40_reg_cfg()
225 macro->ctrl->regs, HSIO_SD_CFG(idx)); in lan966x_sd6g40_reg_cfg()
231 macro->ctrl->regs, HSIO_MPLL_CFG(idx)); in lan966x_sd6g40_reg_cfg()
235 value = readl(macro->ctrl->regs + lan_offset(HSIO_SD_STAT(idx))); in lan966x_sd6g40_reg_cfg()
238 dev_err(macro->ctrl->dev, in lan966x_sd6g40_reg_cfg()
246 macro->ctrl->regs, HSIO_SD_CFG(idx)); in lan966x_sd6g40_reg_cfg()
250 value = readl(macro->ctrl->regs + lan_offset(HSIO_SD_STAT(idx))); in lan966x_sd6g40_reg_cfg()
253 dev_err(macro->ctrl->dev, in lan966x_sd6g40_reg_cfg()
263 macro->ctrl->regs, HSIO_SD_CFG(idx)); in lan966x_sd6g40_reg_cfg()
268 value = readl(macro->ctrl->regs + lan_offset(HSIO_SD_STAT(idx))); in lan966x_sd6g40_reg_cfg()
271 dev_err(macro->ctrl->dev, in lan966x_sd6g40_reg_cfg()
278 value = readl(macro->ctrl->regs + lan_offset(HSIO_SD_STAT(idx))); in lan966x_sd6g40_reg_cfg()
281 dev_err(macro->ctrl->dev, in lan966x_sd6g40_reg_cfg()
291 macro->ctrl->regs, HSIO_SD_CFG(idx)); in lan966x_sd6g40_reg_cfg()
296 static int lan966x_sd6g40_get_conf_from_mode(struct serdes_macro *macro, in lan966x_sd6g40_get_conf_from_mode() argument
320 ret_val->mpll_multiplier = macro->speed == SPEED_2500 ? 50 : 40; in lan966x_sd6g40_get_conf_from_mode()
322 ret_val->tx_rate = macro->speed == SPEED_2500 ? 0x1 : 0x2; in lan966x_sd6g40_get_conf_from_mode()
323 ret_val->rx_rate = macro->speed == SPEED_2500 ? 0x1 : 0x2; in lan966x_sd6g40_get_conf_from_mode()
325 ret_val->mpll_multiplier = macro->speed == SPEED_2500 ? 125 : 100; in lan966x_sd6g40_get_conf_from_mode()
327 ret_val->tx_rate = macro->speed == SPEED_2500 ? 0x1 : 0x2; in lan966x_sd6g40_get_conf_from_mode()
328 ret_val->rx_rate = macro->speed == SPEED_2500 ? 0x1 : 0x2; in lan966x_sd6g40_get_conf_from_mode()
339 static int lan966x_calc_sd6g40_setup_lane(struct serdes_macro *macro, in lan966x_calc_sd6g40_setup_lane() argument
347 ret = lan966x_sd6g40_get_conf_from_mode(macro, config.mode, in lan966x_calc_sd6g40_setup_lane()
370 static int lan966x_sd6g40_setup_lane(struct serdes_macro *macro, in lan966x_sd6g40_setup_lane() argument
377 ret = lan966x_calc_sd6g40_setup_lane(macro, config, &calc_results); in lan966x_sd6g40_setup_lane()
381 return lan966x_sd6g40_reg_cfg(macro, &calc_results, idx); in lan966x_sd6g40_setup_lane()
384 static int lan966x_sd6g40_setup(struct serdes_macro *macro, u32 idx, int mode) in lan966x_sd6g40_setup() argument
388 conf.refclk125M = macro->ctrl->ref125; in lan966x_sd6g40_setup()
395 return lan966x_sd6g40_setup_lane(macro, conf, idx); in lan966x_sd6g40_setup()
398 static int lan966x_rgmii_setup(struct serdes_macro *macro, u32 idx, int mode) in lan966x_rgmii_setup() argument
406 HSIO_RGMII_CFG_TX_CLK_CFG_SET(macro->speed == SPEED_1000 ? 1 : in lan966x_rgmii_setup()
407 macro->speed == SPEED_100 ? 2 : in lan966x_rgmii_setup()
408 macro->speed == SPEED_10 ? 3 : 0), in lan966x_rgmii_setup()
412 macro->ctrl->regs, HSIO_RGMII_CFG(idx)); in lan966x_rgmii_setup()
427 macro->ctrl->regs, HSIO_DLL_CFG(idx == 0 ? 0x0 : 0x2)); in lan966x_rgmii_setup()
431 macro->ctrl->regs, HSIO_DLL_CFG(idx == 0 ? 0x0 : 0x2)); in lan966x_rgmii_setup()
437 macro->ctrl->regs, HSIO_DLL_CFG(idx == 0 ? 0x1 : 0x3)); in lan966x_rgmii_setup()
441 macro->ctrl->regs, HSIO_DLL_CFG(idx == 0 ? 0x1 : 0x3)); in lan966x_rgmii_setup()
448 struct serdes_macro *macro = phy_get_drvdata(phy); in serdes_set_speed() local
450 if (!phy_interface_mode_is_rgmii(macro->mode)) in serdes_set_speed()
453 macro->speed = speed; in serdes_set_speed()
454 lan966x_rgmii_setup(macro, macro->idx - (SERDES6G_MAX + 1), macro->mode); in serdes_set_speed()
461 struct serdes_macro *macro = phy_get_drvdata(phy); in serdes_set_mode() local
470 macro->speed = SPEED_2500; in serdes_set_mode()
472 macro->speed = SPEED_1000; in serdes_set_mode()
482 if (macro->idx != lan966x_serdes_muxes[i].idx || in serdes_set_mode()
485 macro->port != lan966x_serdes_muxes[i].port) in serdes_set_mode()
488 val = readl(macro->ctrl->regs + lan_offset(HSIO_HW_CFG)); in serdes_set_mode()
491 macro->ctrl->regs, HSIO_HW_CFG); in serdes_set_mode()
493 macro->mode = lan966x_serdes_muxes[i].submode; in serdes_set_mode()
495 if (macro->idx < CU_MAX) in serdes_set_mode()
498 if (macro->idx < SERDES6G_MAX) in serdes_set_mode()
499 return lan966x_sd6g40_setup(macro, in serdes_set_mode()
500 macro->idx - (CU_MAX + 1), in serdes_set_mode()
501 macro->mode); in serdes_set_mode()
503 if (macro->idx < RGMII_MAX) in serdes_set_mode()
504 return lan966x_rgmii_setup(macro, in serdes_set_mode()
505 macro->idx - (SERDES6G_MAX + 1), in serdes_set_mode()
506 macro->mode); in serdes_set_mode()
533 struct serdes_macro *macro = phy_get_drvdata(ctrl->phys[i]); in serdes_simple_xlate() local
535 if (idx != macro->idx) in serdes_simple_xlate()
538 macro->port = port; in serdes_simple_xlate()
547 struct serdes_macro *macro; in serdes_phy_create() local
553 macro = devm_kzalloc(ctrl->dev, sizeof(*macro), GFP_KERNEL); in serdes_phy_create()
554 if (!macro) in serdes_phy_create()
557 macro->idx = idx; in serdes_phy_create()
558 macro->ctrl = ctrl; in serdes_phy_create()
559 macro->port = -1; in serdes_phy_create()
561 phy_set_drvdata(*phy, macro); in serdes_phy_create()