Lines Matching +full:0 +full:x4040

14 #define PHY_ID_YT8511		0x0000010a
15 #define PHY_ID_YT8512 0x00000118
16 #define PHY_ID_YT8512B 0x00000128
17 #define PHY_ID_YT8531S 0x4f51e91a
18 #define PHY_ID_YT8531 0x4f51e91b
20 #define YT8511_PAGE_SELECT 0x1e
21 #define YT8511_PAGE 0x1f
22 #define YT8511_EXT_CLK_GATE 0x0c
23 #define YT8511_EXT_DELAY_DRIVE 0x0d
24 #define YT8511_EXT_SLEEP_CTRL 0x27
35 #define YT8511_DELAY_RX BIT(0)
37 /* TX Gig-E Delay is bits 7:4, default 0x5
38 * TX Fast-E Delay is bits 15:12, default 0xf
42 #define YT8511_DELAY_GE_TX_EN (0xf << 4)
43 #define YT8511_DELAY_GE_TX_DIS (0x2 << 4)
44 #define YT8511_DELAY_FE_TX_EN (0xf << 12)
45 #define YT8511_DELAY_FE_TX_DIS (0x2 << 12)
47 #define YT8512_EXTREG_AFE_PLL 0x50
48 #define YT8512_EXTREG_EXTEND_COMBO 0x4000
49 #define YT8512_EXTREG_LED0 0x40c0
50 #define YT8512_EXTREG_LED1 0x40c3
52 #define YT8512_EXTREG_SLEEP_CONTROL1 0x2027
54 #define YT_SOFTWARE_RESET 0x8000
56 #define YT8512_CONFIG_PLL_REFCLK_SEL_EN 0x0040
57 #define YT8512_CONTROL1_RMII_EN 0x0001
58 #define YT8512_LED0_ACT_BLK_IND 0x1000
59 #define YT8512_LED0_DIS_LED_AN_TRY 0x0001
60 #define YT8512_LED0_BT_BLK_EN 0x0002
61 #define YT8512_LED0_HT_BLK_EN 0x0004
62 #define YT8512_LED0_COL_BLK_EN 0x0008
63 #define YT8512_LED0_BT_ON_EN 0x0010
64 #define YT8512_LED1_BT_ON_EN 0x0010
65 #define YT8512_LED1_TXACT_BLK_EN 0x0100
66 #define YT8512_LED1_RXACT_BLK_EN 0x0200
67 #define YT8512_SPEED_MODE 0xc000
68 #define YT8512_DUPLEX 0x2000
75 * please define this macro to 1 otherwise, define it to 0.
80 * otherwise, define it to 0.
82 #define YTPHY_WOL_FEATURE_ENABLE 0
90 #define YTPHY8531A_XTAL_INIT 0
92 #define REG_PHY_SPEC_STATUS 0x11
93 #define REG_DEBUG_ADDR_OFFSET 0x1e
94 #define REG_DEBUG_DATA 0x1f
96 #define YT8521_EXTREG_SLEEP_CONTROL1 0x27
99 #define YT8521_SPEED_MODE 0xc000
100 #define YT8521_DUPLEX 0x2000
125 int oldpage, ret = 0; in yt8511_config_init()
129 if (oldpage < 0) in yt8511_config_init()
156 if (ret < 0) in yt8511_config_init()
160 ret = __phy_modify(phydev, YT8511_PAGE, 0, YT8511_CLK_125M); in yt8511_config_init()
161 if (ret < 0) in yt8511_config_init()
166 if (ret < 0) in yt8511_config_init()
170 if (ret < 0) in yt8511_config_init()
175 if (ret < 0) in yt8511_config_init()
178 ret = __phy_modify(phydev, YT8511_PAGE, 0, YT8511_PLLON_SLP); in yt8511_config_init()
179 if (ret < 0) in yt8511_config_init()
192 if (ret < 0) in ytphy_read_ext()
196 if (ret < 0) in ytphy_read_ext()
210 if (ret < 0) in ytphy_write_ext()
214 if (ret < 0) in ytphy_write_ext()
224 int ret = 0, val = 0; in ytphy_soft_reset()
227 if (val < 0) in ytphy_soft_reset()
231 if (ret < 0) in ytphy_soft_reset()
249 return 0; in yt8512_clk_init()
254 if (val < 0) in yt8512_clk_init()
260 if (ret < 0) in yt8512_clk_init()
264 if (val < 0) in yt8512_clk_init()
270 if (ret < 0) in yt8512_clk_init()
274 if (val < 0) in yt8512_clk_init()
290 if (val < 0) in yt8512_led_init()
301 if (ret < 0) in yt8512_led_init()
305 if (val < 0) in yt8512_led_init()
324 if (ret < 0) in yt8512_config_init()
328 if (ret < 0) in yt8512_config_init()
333 if (val < 0) in yt8512_config_init()
339 if (ret < 0) in yt8512_config_init()
356 if (val < 0) in yt8512_read_status()
362 case 0: in yt8512_read_status()
378 return 0; in yt8512_read_status()
383 int ret = 0, val; in yt8521_soft_reset()
386 ytphy_write_ext(phydev, 0xa000, 0); in yt8521_soft_reset()
388 if (ret < 0) in yt8521_soft_reset()
393 ytphy_write_ext(phydev, 0xa000, 2); in yt8521_soft_reset()
395 if (ret < 0) in yt8521_soft_reset()
398 ytphy_write_ext(phydev, 0xa000, 0); in yt8521_soft_reset()
402 val = ytphy_read_ext(phydev, 0xa001); in yt8521_soft_reset()
403 ytphy_write_ext(phydev, 0xa001, (val & ~0x8000)); in yt8521_soft_reset()
405 ytphy_write_ext(phydev, 0xa000, 0); in yt8521_soft_reset()
407 if (ret < 0) in yt8521_soft_reset()
411 return 0; in yt8521_soft_reset()
416 int val = 0; in yt8521_hw_strap_polling()
418 val = ytphy_read_ext(phydev, 0xa001) & 0x7; in yt8521_hw_strap_polling()
429 case 0: in yt8521_hw_strap_polling()
444 memset(&wol, 0x0, sizeof(struct ethtool_wolinfo)); in yt8521_config_init()
451 hw_strap_mode = ytphy_read_ext(phydev, 0xa001) & 0x7; in yt8521_config_init()
453 ytphy_write_ext(phydev, 0xa000, 0); in yt8521_config_init()
457 if (val < 0) in yt8521_config_init()
462 if (ret < 0) in yt8521_config_init()
466 val = ytphy_read_ext(phydev, 0xc); in yt8521_config_init()
467 if (val < 0) in yt8521_config_init()
470 ret = ytphy_write_ext(phydev, 0xc, val); in yt8521_config_init()
471 if (ret < 0) in yt8521_config_init()
494 case 0: in yt8521_adjust_status()
514 return 0; in yt8521_adjust_status()
523 int link_fiber = 0, link_utp = 0; in yt8521_aneg_done()
526 ytphy_write_ext(phydev, 0xa000, 2); in yt8521_aneg_done()
530 ytphy_write_ext(phydev, 0xa000, 0); in yt8521_aneg_done()
541 int link_utp = 0, link_fiber = 0; in yt8521_read_status()
549 ret = ytphy_write_ext(phydev, 0xa000, 0); in yt8521_read_status()
550 if (ret < 0) in yt8521_read_status()
554 if (val < 0) in yt8521_read_status()
562 link_utp = 0; in yt8521_read_status()
568 ret = ytphy_write_ext(phydev, 0xa000, 2); in yt8521_read_status()
569 if (ret < 0) in yt8521_read_status()
573 if (val < 0) in yt8521_read_status()
578 /* for fiber, from 1000m to 100m, there is not link down from 0x11, in yt8521_read_status()
586 link = 0; in yt8521_read_status()
594 yt8521_adjust_status(phydev, val, 0); in yt8521_read_status()
596 link_fiber = 0; in yt8521_read_status()
601 if (phydev->link == 0) in yt8521_read_status()
602 netdev_info(phydev->attached_dev, "%s, phy addr: %d, link up, media: %s, mii reg 0x11 = 0x%x\n", in yt8521_read_status()
611 phydev->link = 0; in yt8521_read_status()
617 ytphy_write_ext(phydev, 0xa000, 2); in yt8521_read_status()
619 ytphy_write_ext(phydev, 0xa000, 0); in yt8521_read_status()
622 return 0; in yt8521_read_status()
630 ytphy_write_ext(phydev, 0xa000, 0); in yt8521_suspend()
634 ytphy_write_ext(phydev, 0xa000, 2); in yt8521_suspend()
638 ytphy_write_ext(phydev, 0xa000, 0); in yt8521_suspend()
641 return 0; in yt8521_suspend()
650 if (value < 0) in yt8521_resume()
656 if (ret < 0) in yt8521_resume()
661 ytphy_write_ext(phydev, 0xa000, 0); in yt8521_resume()
667 ytphy_write_ext(phydev, 0xa000, 2); in yt8521_resume()
671 ytphy_write_ext(phydev, 0xa000, 0); in yt8521_resume()
675 return 0; in yt8521_resume()
680 unsigned int value = 0x9696; in yt8531_rxclk_duty_init()
681 int ret = 0; in yt8531_rxclk_duty_init()
683 ret = ytphy_write_ext(phydev, 0xa040, 0xffff); in yt8531_rxclk_duty_init()
684 if (ret < 0) in yt8531_rxclk_duty_init()
687 ret = ytphy_write_ext(phydev, 0xa041, 0xff); in yt8531_rxclk_duty_init()
688 if (ret < 0) in yt8531_rxclk_duty_init()
691 ret = ytphy_write_ext(phydev, 0xa039, 0xbf00); in yt8531_rxclk_duty_init()
692 if (ret < 0) in yt8531_rxclk_duty_init()
695 /* nodelay duty = 0x9696 (default) in yt8531_rxclk_duty_init()
696 * fixed delay duty = 0x4040 in yt8531_rxclk_duty_init()
697 * step delay 0xf duty = 0x4041 in yt8531_rxclk_duty_init()
701 value = 0x4040; in yt8531_rxclk_duty_init()
703 ret = ytphy_write_ext(phydev, 0xa03a, value); in yt8531_rxclk_duty_init()
704 if (ret < 0) in yt8531_rxclk_duty_init()
706 ret = ytphy_write_ext(phydev, 0xa03b, value); in yt8531_rxclk_duty_init()
707 if (ret < 0) in yt8531_rxclk_duty_init()
709 ret = ytphy_write_ext(phydev, 0xa03c, value); in yt8531_rxclk_duty_init()
710 if (ret < 0) in yt8531_rxclk_duty_init()
712 ret = ytphy_write_ext(phydev, 0xa03d, value); in yt8531_rxclk_duty_init()
713 if (ret < 0) in yt8531_rxclk_duty_init()
715 ret = ytphy_write_ext(phydev, 0xa03e, value); in yt8531_rxclk_duty_init()
716 if (ret < 0) in yt8531_rxclk_duty_init()
718 ret = ytphy_write_ext(phydev, 0xa03f, value); in yt8531_rxclk_duty_init()
719 if (ret < 0) in yt8531_rxclk_duty_init()
728 int ret = 0; in yt8531S_config_init()
731 if (ret < 0) in yt8531S_config_init()
740 int ret = 0, val; in yt8531_config_init()
744 if (ret < 0) in yt8531_config_init()
749 ret = ytphy_write_ext(phydev, 0xa012, 0xd0); in yt8531_config_init()
750 if (ret < 0) in yt8531_config_init()
754 if (ret < 0) in yt8531_config_init()
759 * If the io voltage is 3.3v, PHY_CLK_OUT = 2, set 0xa010 = 0xdacf in yt8531_config_init()
761 ret = ytphy_write_ext(phydev, 0xa010, 0xdbcf); in yt8531_config_init()
762 if (ret < 0) in yt8531_config_init()
765 /* Change 100M default BGS voltage from 0x294c to 0x274c */ in yt8531_config_init()
766 val = ytphy_read_ext(phydev, 0x57); in yt8531_config_init()
767 val = (val & ~(0xf << 8)) | (7 << 8); in yt8531_config_init()
768 ret = ytphy_write_ext(phydev, 0x57, val); in yt8531_config_init()
769 if (ret < 0) in yt8531_config_init()