Lines Matching +full:ps +full:- +full:speed
8 * Copyright (c) 2010-2013 Micrel, Inc.
162 const struct kszphy_type *type = phydev->drv->driver_data; in kszphy_config_intr()
166 if (type && type->interrupt_level_mask) in kszphy_config_intr()
167 mask = type->interrupt_level_mask; in kszphy_config_intr()
179 if (phydev->interrupts == PHY_INTERRUPT_ENABLED) in kszphy_config_intr()
215 return -EINVAL; in kszphy_setup_led()
235 * unique (non-broadcast) address on a shared bus.
276 struct kszphy_priv *priv = phydev->priv; in kszphy_config_reset()
279 if (priv->rmii_ref_clk_sel) { in kszphy_config_reset()
280 ret = kszphy_rmii_clk_sel(phydev, priv->rmii_ref_clk_sel_val); in kszphy_config_reset()
288 if (priv->led_mode >= 0) in kszphy_config_reset()
289 kszphy_setup_led(phydev, priv->type->led_mode_reg, priv->led_mode); in kszphy_config_reset()
296 struct kszphy_priv *priv = phydev->priv; in kszphy_config_init()
302 type = priv->type; in kszphy_config_init()
304 if (type->has_broadcast_disable) in kszphy_config_init()
307 if (type->has_nand_tree_disable) in kszphy_config_init()
315 struct device_node *of_node = phydev->mdio.dev.of_node; in ksz8041_config_init()
318 if (of_property_read_bool(of_node, "micrel,fiber-mode")) { in ksz8041_config_init()
319 phydev->dev_flags |= MICREL_PHY_FXEN; in ksz8041_config_init()
320 phydev->supported &= SUPPORTED_100baseT_Full | in ksz8041_config_init()
322 phydev->supported |= SUPPORTED_FIBRE; in ksz8041_config_init()
323 phydev->advertising &= ADVERTISED_100baseT_Full | in ksz8041_config_init()
325 phydev->advertising |= ADVERTISED_FIBRE; in ksz8041_config_init()
326 phydev->autoneg = AUTONEG_DISABLE; in ksz8041_config_init()
334 /* Skip auto-negotiation in fiber mode */ in ksz8041_config_aneg()
335 if (phydev->dev_flags & MICREL_PHY_FXEN) { in ksz8041_config_aneg()
336 phydev->speed = SPEED_100; in ksz8041_config_aneg()
360 int val1 = -1; in ksz9021_load_values_from_of()
361 int val2 = -2; in ksz9021_load_values_from_of()
362 int val3 = -3; in ksz9021_load_values_from_of()
363 int val4 = -4; in ksz9021_load_values_from_of()
387 if (val1 != -1) in ksz9021_load_values_from_of()
390 if (val2 != -2) in ksz9021_load_values_from_of()
393 if (val3 != -3) in ksz9021_load_values_from_of()
396 if (val4 != -4) in ksz9021_load_values_from_of()
404 const struct device *dev = &phydev->mdio.dev; in ksz9021_config_init()
405 const struct device_node *of_node = dev->of_node; in ksz9021_config_init()
412 dev_walker = &phydev->mdio.dev; in ksz9021_config_init()
414 of_node = dev_walker->of_node; in ksz9021_config_init()
415 dev_walker = dev_walker->parent; in ksz9021_config_init()
422 "txen-skew-ps", "txc-skew-ps", in ksz9021_config_init()
423 "rxdv-skew-ps", "rxc-skew-ps"); in ksz9021_config_init()
426 "rxd0-skew-ps", "rxd1-skew-ps", in ksz9021_config_init()
427 "rxd2-skew-ps", "rxd3-skew-ps"); in ksz9021_config_init()
430 "txd0-skew-ps", "txd1-skew-ps", in ksz9021_config_init()
431 "txd2-skew-ps", "txd3-skew-ps"); in ksz9021_config_init()
479 int val[4] = {-1, -2, -3, -4}; in ksz9031_of_load_skew_values()
500 if (val[i] != -(i + 1)) { in ksz9031_of_load_skew_values()
529 /* Enable energy-detect power-down mode */
543 const struct device *dev = &phydev->mdio.dev; in ksz9031_config_init()
544 const struct device_node *of_node = dev->of_node; in ksz9031_config_init()
545 static const char *clk_skews[2] = {"rxc-skew-ps", "txc-skew-ps"}; in ksz9031_config_init()
547 "rxd0-skew-ps", "rxd1-skew-ps", in ksz9031_config_init()
548 "rxd2-skew-ps", "rxd3-skew-ps" in ksz9031_config_init()
551 "txd0-skew-ps", "txd1-skew-ps", in ksz9031_config_init()
552 "txd2-skew-ps", "txd3-skew-ps" in ksz9031_config_init()
554 static const char *control_skews[2] = {"txen-skew-ps", "rxdv-skew-ps"}; in ksz9031_config_init()
566 dev_walker = &phydev->mdio.dev; in ksz9031_config_init()
568 of_node = dev_walker->of_node; in ksz9031_config_init()
569 dev_walker = dev_walker->parent; in ksz9031_config_init()
590 * When the device links in the 1000BASE-T slave mode only, in ksz9031_config_init()
604 if (of_property_read_bool(of_node, "micrel,force-master")) { in ksz9031_config_init()
637 phydev->duplex = DUPLEX_HALF; in ksz8873mll_read_status()
639 phydev->duplex = DUPLEX_FULL; in ksz8873mll_read_status()
642 phydev->speed = SPEED_10; in ksz8873mll_read_status()
644 phydev->speed = SPEED_100; in ksz8873mll_read_status()
646 phydev->link = 1; in ksz8873mll_read_status()
647 phydev->pause = phydev->asym_pause = 0; in ksz8873mll_read_status()
667 phydev->link = 0; in ksz9031_read_status()
668 if (phydev->drv->config_intr && phy_interrupt_is_valid(phydev)) in ksz9031_read_status()
669 phydev->drv->config_intr(phydev); in ksz9031_read_status()
699 struct kszphy_priv *priv = phydev->priv; in kszphy_get_stat()
707 val = val & ((1 << stat.bits) - 1); in kszphy_get_stat()
708 priv->stats[i] += val; in kszphy_get_stat()
709 ret = priv->stats[i]; in kszphy_get_stat()
728 phydev->interrupts = PHY_INTERRUPT_DISABLED; in kszphy_suspend()
729 if (phydev->drv->config_intr) in kszphy_suspend()
730 phydev->drv->config_intr(phydev); in kszphy_suspend()
742 /* After switching from power-down to normal mode, an internal global in kszphy_resume()
754 phydev->interrupts = PHY_INTERRUPT_ENABLED; in kszphy_resume()
755 if (phydev->drv->config_intr) in kszphy_resume()
756 phydev->drv->config_intr(phydev); in kszphy_resume()
764 const struct kszphy_type *type = phydev->drv->driver_data; in kszphy_probe()
765 const struct device_node *np = phydev->mdio.dev.of_node; in kszphy_probe()
770 priv = devm_kzalloc(&phydev->mdio.dev, sizeof(*priv), GFP_KERNEL); in kszphy_probe()
772 return -ENOMEM; in kszphy_probe()
774 phydev->priv = priv; in kszphy_probe()
776 priv->type = type; in kszphy_probe()
778 if (type->led_mode_reg) { in kszphy_probe()
779 ret = of_property_read_u32(np, "micrel,led-mode", in kszphy_probe()
780 &priv->led_mode); in kszphy_probe()
782 priv->led_mode = -1; in kszphy_probe()
784 if (priv->led_mode > 3) { in kszphy_probe()
786 priv->led_mode); in kszphy_probe()
787 priv->led_mode = -1; in kszphy_probe()
790 priv->led_mode = -1; in kszphy_probe()
793 clk = devm_clk_get(&phydev->mdio.dev, "rmii-ref"); in kszphy_probe()
799 priv->rmii_ref_clk_sel = type->has_rmii_ref_clk_sel; in kszphy_probe()
801 "micrel,rmii-reference-clock-select-25-mhz"); in kszphy_probe()
804 priv->rmii_ref_clk_sel_val = rmii_ref_clk_sel_25_mhz; in kszphy_probe()
806 priv->rmii_ref_clk_sel_val = !rmii_ref_clk_sel_25_mhz; in kszphy_probe()
810 return -EINVAL; in kszphy_probe()
814 /* Support legacy board-file configuration */ in kszphy_probe()
815 if (phydev->dev_flags & MICREL_PHY_50MHZ_CLK) { in kszphy_probe()
816 priv->rmii_ref_clk_sel = true; in kszphy_probe()
817 priv->rmii_ref_clk_sel_val = true; in kszphy_probe()