Lines Matching full:phydev
18 struct phy_device *phydev);
20 static void r8168d_modify_extpage(struct phy_device *phydev, int extpage, in r8168d_modify_extpage() argument
23 int oldpage = phy_select_page(phydev, 0x0007); in r8168d_modify_extpage()
25 __phy_write(phydev, 0x1e, extpage); in r8168d_modify_extpage()
26 __phy_modify(phydev, reg, mask, val); in r8168d_modify_extpage()
28 phy_restore_page(phydev, oldpage, 0); in r8168d_modify_extpage()
31 static void r8168d_phy_param(struct phy_device *phydev, u16 parm, in r8168d_phy_param() argument
34 int oldpage = phy_select_page(phydev, 0x0005); in r8168d_phy_param()
36 __phy_write(phydev, 0x05, parm); in r8168d_phy_param()
37 __phy_modify(phydev, 0x06, mask, val); in r8168d_phy_param()
39 phy_restore_page(phydev, oldpage, 0); in r8168d_phy_param()
42 static void r8168g_phy_param(struct phy_device *phydev, u16 parm, in r8168g_phy_param() argument
45 int oldpage = phy_select_page(phydev, 0x0a43); in r8168g_phy_param()
47 __phy_write(phydev, 0x13, parm); in r8168g_phy_param()
48 __phy_modify(phydev, 0x14, mask, val); in r8168g_phy_param()
50 phy_restore_page(phydev, oldpage, 0); in r8168g_phy_param()
58 static void __rtl_writephy_batch(struct phy_device *phydev, in __rtl_writephy_batch() argument
61 phy_lock_mdio_bus(phydev); in __rtl_writephy_batch()
64 __phy_write(phydev, regs->reg, regs->val); in __rtl_writephy_batch()
68 phy_unlock_mdio_bus(phydev); in __rtl_writephy_batch()
73 static void rtl8168f_config_eee_phy(struct phy_device *phydev) in rtl8168f_config_eee_phy() argument
75 r8168d_modify_extpage(phydev, 0x0020, 0x15, 0, BIT(8)); in rtl8168f_config_eee_phy()
76 r8168d_phy_param(phydev, 0x8b85, 0, BIT(13)); in rtl8168f_config_eee_phy()
79 static void rtl8168g_config_eee_phy(struct phy_device *phydev) in rtl8168g_config_eee_phy() argument
81 phy_modify_paged(phydev, 0x0a43, 0x11, 0, BIT(4)); in rtl8168g_config_eee_phy()
84 static void rtl8168h_config_eee_phy(struct phy_device *phydev) in rtl8168h_config_eee_phy() argument
86 rtl8168g_config_eee_phy(phydev); in rtl8168h_config_eee_phy()
88 phy_modify_paged(phydev, 0xa4a, 0x11, 0x0000, 0x0200); in rtl8168h_config_eee_phy()
89 phy_modify_paged(phydev, 0xa42, 0x14, 0x0000, 0x0080); in rtl8168h_config_eee_phy()
92 static void rtl8125_common_config_eee_phy(struct phy_device *phydev) in rtl8125_common_config_eee_phy() argument
94 phy_modify_paged(phydev, 0xa6d, 0x14, 0x0010, 0x0000); in rtl8125_common_config_eee_phy()
95 phy_modify_paged(phydev, 0xa42, 0x14, 0x0080, 0x0000); in rtl8125_common_config_eee_phy()
96 phy_modify_paged(phydev, 0xa4a, 0x11, 0x0200, 0x0000); in rtl8125_common_config_eee_phy()
99 static void rtl8125_config_eee_phy(struct phy_device *phydev) in rtl8125_config_eee_phy() argument
101 rtl8168g_config_eee_phy(phydev); in rtl8125_config_eee_phy()
102 rtl8125_common_config_eee_phy(phydev); in rtl8125_config_eee_phy()
106 struct phy_device *phydev) in rtl8169s_hw_phy_config() argument
170 rtl_writephy_batch(phydev, phy_reg_init); in rtl8169s_hw_phy_config()
174 struct phy_device *phydev) in rtl8169sb_hw_phy_config() argument
176 phy_write_paged(phydev, 0x0002, 0x01, 0x90d0); in rtl8169sb_hw_phy_config()
180 struct phy_device *phydev) in rtl8169scd_hw_phy_config() argument
222 rtl_writephy_batch(phydev, phy_reg_init); in rtl8169scd_hw_phy_config()
226 struct phy_device *phydev) in rtl8169sce_hw_phy_config() argument
276 rtl_writephy_batch(phydev, phy_reg_init); in rtl8169sce_hw_phy_config()
280 struct phy_device *phydev) in rtl8168bef_hw_phy_config() argument
282 phy_write_paged(phydev, 0x0001, 0x10, 0xf41b); in rtl8168bef_hw_phy_config()
286 struct phy_device *phydev) in rtl8168cp_1_hw_phy_config() argument
288 phy_write(phydev, 0x1d, 0x0f00); in rtl8168cp_1_hw_phy_config()
289 phy_write_paged(phydev, 0x0002, 0x0c, 0x1ec8); in rtl8168cp_1_hw_phy_config()
293 struct phy_device *phydev) in rtl8168cp_2_hw_phy_config() argument
295 phy_set_bits(phydev, 0x14, BIT(5)); in rtl8168cp_2_hw_phy_config()
296 phy_set_bits(phydev, 0x0d, BIT(5)); in rtl8168cp_2_hw_phy_config()
297 phy_write_paged(phydev, 0x0001, 0x1d, 0x3d98); in rtl8168cp_2_hw_phy_config()
301 struct phy_device *phydev) in rtl8168c_1_hw_phy_config() argument
323 rtl_writephy_batch(phydev, phy_reg_init); in rtl8168c_1_hw_phy_config()
325 phy_set_bits(phydev, 0x14, BIT(5)); in rtl8168c_1_hw_phy_config()
326 phy_set_bits(phydev, 0x0d, BIT(5)); in rtl8168c_1_hw_phy_config()
330 struct phy_device *phydev) in rtl8168c_2_hw_phy_config() argument
350 rtl_writephy_batch(phydev, phy_reg_init); in rtl8168c_2_hw_phy_config()
352 phy_set_bits(phydev, 0x16, BIT(0)); in rtl8168c_2_hw_phy_config()
353 phy_set_bits(phydev, 0x14, BIT(5)); in rtl8168c_2_hw_phy_config()
354 phy_set_bits(phydev, 0x0d, BIT(5)); in rtl8168c_2_hw_phy_config()
358 struct phy_device *phydev) in rtl8168c_3_hw_phy_config() argument
372 rtl_writephy_batch(phydev, phy_reg_init); in rtl8168c_3_hw_phy_config()
374 phy_set_bits(phydev, 0x16, BIT(0)); in rtl8168c_3_hw_phy_config()
375 phy_set_bits(phydev, 0x14, BIT(5)); in rtl8168c_3_hw_phy_config()
376 phy_set_bits(phydev, 0x0d, BIT(5)); in rtl8168c_3_hw_phy_config()
421 struct phy_device *phydev, in rtl8168d_apply_firmware_cond() argument
426 phy_write(phydev, 0x1f, 0x0005); in rtl8168d_apply_firmware_cond()
427 phy_write(phydev, 0x05, 0x001b); in rtl8168d_apply_firmware_cond()
428 reg_val = phy_read(phydev, 0x06); in rtl8168d_apply_firmware_cond()
429 phy_write(phydev, 0x1f, 0x0000); in rtl8168d_apply_firmware_cond()
432 phydev_warn(phydev, "chipset not ready for firmware\n"); in rtl8168d_apply_firmware_cond()
437 static void rtl8168d_1_common(struct phy_device *phydev) in rtl8168d_1_common() argument
441 phy_write_paged(phydev, 0x0002, 0x05, 0x669a); in rtl8168d_1_common()
442 r8168d_phy_param(phydev, 0x8330, 0xffff, 0x669a); in rtl8168d_1_common()
443 phy_write(phydev, 0x1f, 0x0002); in rtl8168d_1_common()
445 val = phy_read(phydev, 0x0d); in rtl8168d_1_common()
456 phy_write(phydev, 0x0d, val | set[i]); in rtl8168d_1_common()
461 struct phy_device *phydev) in rtl8168d_1_hw_phy_config() argument
463 rtl_writephy_batch(phydev, rtl8168d_1_phy_reg_init_0); in rtl8168d_1_hw_phy_config()
469 phy_write(phydev, 0x1f, 0x0002); in rtl8168d_1_hw_phy_config()
470 phy_modify(phydev, 0x0b, 0x00ef, 0x0010); in rtl8168d_1_hw_phy_config()
471 phy_modify(phydev, 0x0c, 0x5d00, 0xa200); in rtl8168d_1_hw_phy_config()
474 rtl8168d_1_common(phydev); in rtl8168d_1_hw_phy_config()
476 phy_write_paged(phydev, 0x0002, 0x05, 0x6662); in rtl8168d_1_hw_phy_config()
477 r8168d_phy_param(phydev, 0x8330, 0xffff, 0x6662); in rtl8168d_1_hw_phy_config()
481 phy_write(phydev, 0x1f, 0x0002); in rtl8168d_1_hw_phy_config()
482 phy_set_bits(phydev, 0x0d, 0x0300); in rtl8168d_1_hw_phy_config()
483 phy_set_bits(phydev, 0x0f, 0x0010); in rtl8168d_1_hw_phy_config()
486 phy_write(phydev, 0x1f, 0x0002); in rtl8168d_1_hw_phy_config()
487 phy_modify(phydev, 0x02, 0x0600, 0x0100); in rtl8168d_1_hw_phy_config()
488 phy_clear_bits(phydev, 0x03, 0xe000); in rtl8168d_1_hw_phy_config()
489 phy_write(phydev, 0x1f, 0x0000); in rtl8168d_1_hw_phy_config()
491 rtl8168d_apply_firmware_cond(tp, phydev, 0xbf00); in rtl8168d_1_hw_phy_config()
495 struct phy_device *phydev) in rtl8168d_2_hw_phy_config() argument
497 rtl_writephy_batch(phydev, rtl8168d_1_phy_reg_init_0); in rtl8168d_2_hw_phy_config()
500 rtl8168d_1_common(phydev); in rtl8168d_2_hw_phy_config()
502 phy_write_paged(phydev, 0x0002, 0x05, 0x2642); in rtl8168d_2_hw_phy_config()
503 r8168d_phy_param(phydev, 0x8330, 0xffff, 0x2642); in rtl8168d_2_hw_phy_config()
507 phy_write(phydev, 0x1f, 0x0002); in rtl8168d_2_hw_phy_config()
508 phy_modify(phydev, 0x02, 0x0600, 0x0100); in rtl8168d_2_hw_phy_config()
509 phy_clear_bits(phydev, 0x03, 0xe000); in rtl8168d_2_hw_phy_config()
510 phy_write(phydev, 0x1f, 0x0000); in rtl8168d_2_hw_phy_config()
513 phy_modify_paged(phydev, 0x0002, 0x0f, 0x0000, 0x0017); in rtl8168d_2_hw_phy_config()
515 rtl8168d_apply_firmware_cond(tp, phydev, 0xb300); in rtl8168d_2_hw_phy_config()
519 struct phy_device *phydev) in rtl8168d_4_hw_phy_config() argument
521 phy_write_paged(phydev, 0x0001, 0x17, 0x0cc0); in rtl8168d_4_hw_phy_config()
522 r8168d_modify_extpage(phydev, 0x002d, 0x18, 0xffff, 0x0040); in rtl8168d_4_hw_phy_config()
523 phy_set_bits(phydev, 0x0d, BIT(5)); in rtl8168d_4_hw_phy_config()
527 struct phy_device *phydev) in rtl8168e_1_hw_phy_config() argument
543 r8168d_phy_param(phydev, 0x8b80, 0xffff, 0xc896); in rtl8168e_1_hw_phy_config()
545 rtl_writephy_batch(phydev, phy_reg_init); in rtl8168e_1_hw_phy_config()
548 r8168d_modify_extpage(phydev, 0x002f, 0x15, 0xffff, 0x1919); in rtl8168e_1_hw_phy_config()
550 r8168d_modify_extpage(phydev, 0x00ac, 0x18, 0xffff, 0x0006); in rtl8168e_1_hw_phy_config()
553 r8168d_modify_extpage(phydev, 0x0023, 0x17, 0x0000, 0x0006); in rtl8168e_1_hw_phy_config()
556 phy_modify_paged(phydev, 0x0002, 0x08, 0x7f00, 0x8000); in rtl8168e_1_hw_phy_config()
559 r8168d_modify_extpage(phydev, 0x002d, 0x18, 0x0000, 0x0050); in rtl8168e_1_hw_phy_config()
560 phy_set_bits(phydev, 0x14, BIT(15)); in rtl8168e_1_hw_phy_config()
562 r8168d_phy_param(phydev, 0x8b86, 0x0000, 0x0001); in rtl8168e_1_hw_phy_config()
563 r8168d_phy_param(phydev, 0x8b85, 0x2000, 0x0000); in rtl8168e_1_hw_phy_config()
565 r8168d_modify_extpage(phydev, 0x0020, 0x15, 0x1100, 0x0000); in rtl8168e_1_hw_phy_config()
566 phy_write_paged(phydev, 0x0006, 0x00, 0x5a00); in rtl8168e_1_hw_phy_config()
568 phy_write_mmd(phydev, MDIO_MMD_AN, MDIO_AN_EEE_ADV, 0x0000); in rtl8168e_1_hw_phy_config()
572 struct phy_device *phydev) in rtl8168e_2_hw_phy_config() argument
577 r8168d_modify_extpage(phydev, 0x00ac, 0x18, 0xffff, 0x0006); in rtl8168e_2_hw_phy_config()
580 phy_write_paged(phydev, 0x0003, 0x09, 0xa20f); in rtl8168e_2_hw_phy_config()
583 r8168d_phy_param(phydev, 0x8b5b, 0xffff, 0x9222); in rtl8168e_2_hw_phy_config()
584 r8168d_phy_param(phydev, 0x8b6d, 0xffff, 0x8000); in rtl8168e_2_hw_phy_config()
585 r8168d_phy_param(phydev, 0x8b76, 0xffff, 0x8000); in rtl8168e_2_hw_phy_config()
588 phy_write(phydev, 0x1f, 0x0005); in rtl8168e_2_hw_phy_config()
589 phy_write(phydev, 0x05, 0x8b80); in rtl8168e_2_hw_phy_config()
590 phy_set_bits(phydev, 0x17, 0x0006); in rtl8168e_2_hw_phy_config()
591 phy_write(phydev, 0x1f, 0x0000); in rtl8168e_2_hw_phy_config()
594 r8168d_modify_extpage(phydev, 0x002d, 0x18, 0x0000, 0x0010); in rtl8168e_2_hw_phy_config()
595 phy_set_bits(phydev, 0x14, BIT(15)); in rtl8168e_2_hw_phy_config()
598 r8168d_phy_param(phydev, 0x8b86, 0x0000, 0x0001); in rtl8168e_2_hw_phy_config()
601 r8168d_phy_param(phydev, 0x8b85, 0x0000, 0x4000); in rtl8168e_2_hw_phy_config()
603 rtl8168f_config_eee_phy(phydev); in rtl8168e_2_hw_phy_config()
606 phy_write(phydev, 0x1f, 0x0003); in rtl8168e_2_hw_phy_config()
607 phy_set_bits(phydev, 0x19, BIT(0)); in rtl8168e_2_hw_phy_config()
608 phy_set_bits(phydev, 0x10, BIT(10)); in rtl8168e_2_hw_phy_config()
609 phy_write(phydev, 0x1f, 0x0000); in rtl8168e_2_hw_phy_config()
610 phy_modify_paged(phydev, 0x0005, 0x01, 0, BIT(8)); in rtl8168e_2_hw_phy_config()
614 struct phy_device *phydev) in rtl8168f_hw_phy_config() argument
617 r8168d_phy_param(phydev, 0x8b80, 0x0000, 0x0006); in rtl8168f_hw_phy_config()
620 r8168d_modify_extpage(phydev, 0x002d, 0x18, 0x0000, 0x0010); in rtl8168f_hw_phy_config()
621 phy_set_bits(phydev, 0x14, BIT(15)); in rtl8168f_hw_phy_config()
624 r8168d_phy_param(phydev, 0x8b86, 0x0000, 0x0001); in rtl8168f_hw_phy_config()
626 rtl8168f_config_eee_phy(phydev); in rtl8168f_hw_phy_config()
630 struct phy_device *phydev) in rtl8168f_1_hw_phy_config() argument
635 phy_write_paged(phydev, 0x0003, 0x09, 0xa20f); in rtl8168f_1_hw_phy_config()
638 r8168d_phy_param(phydev, 0x8b55, 0xffff, 0x0000); in rtl8168f_1_hw_phy_config()
639 r8168d_phy_param(phydev, 0x8b5e, 0xffff, 0x0000); in rtl8168f_1_hw_phy_config()
640 r8168d_phy_param(phydev, 0x8b67, 0xffff, 0x0000); in rtl8168f_1_hw_phy_config()
641 r8168d_phy_param(phydev, 0x8b70, 0xffff, 0x0000); in rtl8168f_1_hw_phy_config()
642 r8168d_modify_extpage(phydev, 0x0078, 0x17, 0xffff, 0x0000); in rtl8168f_1_hw_phy_config()
643 r8168d_modify_extpage(phydev, 0x0078, 0x19, 0xffff, 0x00fb); in rtl8168f_1_hw_phy_config()
646 r8168d_phy_param(phydev, 0x8b79, 0xffff, 0xaa00); in rtl8168f_1_hw_phy_config()
649 phy_write_paged(phydev, 0x0003, 0x01, 0x328a); in rtl8168f_1_hw_phy_config()
651 rtl8168f_hw_phy_config(tp, phydev); in rtl8168f_1_hw_phy_config()
654 r8168d_phy_param(phydev, 0x8b85, 0x0000, 0x4000); in rtl8168f_1_hw_phy_config()
658 struct phy_device *phydev) in rtl8168f_2_hw_phy_config() argument
662 rtl8168f_hw_phy_config(tp, phydev); in rtl8168f_2_hw_phy_config()
666 struct phy_device *phydev) in rtl8411_hw_phy_config() argument
670 rtl8168f_hw_phy_config(tp, phydev); in rtl8411_hw_phy_config()
673 r8168d_phy_param(phydev, 0x8b85, 0x0000, 0x4000); in rtl8411_hw_phy_config()
676 phy_write_paged(phydev, 0x0003, 0x09, 0xa20f); in rtl8411_hw_phy_config()
679 r8168d_phy_param(phydev, 0x8b55, 0xffff, 0x0000); in rtl8411_hw_phy_config()
680 r8168d_phy_param(phydev, 0x8b5e, 0xffff, 0x0000); in rtl8411_hw_phy_config()
681 r8168d_phy_param(phydev, 0x8b67, 0xffff, 0x0000); in rtl8411_hw_phy_config()
682 r8168d_phy_param(phydev, 0x8b70, 0xffff, 0x0000); in rtl8411_hw_phy_config()
683 r8168d_modify_extpage(phydev, 0x0078, 0x17, 0xffff, 0x0000); in rtl8411_hw_phy_config()
684 r8168d_modify_extpage(phydev, 0x0078, 0x19, 0xffff, 0x00aa); in rtl8411_hw_phy_config()
687 r8168d_phy_param(phydev, 0x8b79, 0xffff, 0xaa00); in rtl8411_hw_phy_config()
690 phy_write_paged(phydev, 0x0003, 0x01, 0x328a); in rtl8411_hw_phy_config()
693 r8168d_phy_param(phydev, 0x8b54, 0x0800, 0x0000); in rtl8411_hw_phy_config()
694 r8168d_phy_param(phydev, 0x8b5d, 0x0800, 0x0000); in rtl8411_hw_phy_config()
695 r8168d_phy_param(phydev, 0x8a7c, 0x0100, 0x0000); in rtl8411_hw_phy_config()
696 r8168d_phy_param(phydev, 0x8a7f, 0x0000, 0x0100); in rtl8411_hw_phy_config()
697 r8168d_phy_param(phydev, 0x8a82, 0x0100, 0x0000); in rtl8411_hw_phy_config()
698 r8168d_phy_param(phydev, 0x8a85, 0x0100, 0x0000); in rtl8411_hw_phy_config()
699 r8168d_phy_param(phydev, 0x8a88, 0x0100, 0x0000); in rtl8411_hw_phy_config()
702 r8168d_phy_param(phydev, 0x8b85, 0x0000, 0x8000); in rtl8411_hw_phy_config()
705 phy_write(phydev, 0x1f, 0x0003); in rtl8411_hw_phy_config()
706 phy_clear_bits(phydev, 0x19, BIT(0)); in rtl8411_hw_phy_config()
707 phy_clear_bits(phydev, 0x10, BIT(10)); in rtl8411_hw_phy_config()
708 phy_write(phydev, 0x1f, 0x0000); in rtl8411_hw_phy_config()
711 static void rtl8168g_disable_aldps(struct phy_device *phydev) in rtl8168g_disable_aldps() argument
713 phy_modify_paged(phydev, 0x0a43, 0x10, BIT(2), 0); in rtl8168g_disable_aldps()
716 static void rtl8168g_enable_gphy_10m(struct phy_device *phydev) in rtl8168g_enable_gphy_10m() argument
718 phy_modify_paged(phydev, 0x0a44, 0x11, 0, BIT(11)); in rtl8168g_enable_gphy_10m()
721 static void rtl8168g_phy_adjust_10m_aldps(struct phy_device *phydev) in rtl8168g_phy_adjust_10m_aldps() argument
723 phy_modify_paged(phydev, 0x0bcc, 0x14, BIT(8), 0); in rtl8168g_phy_adjust_10m_aldps()
724 phy_modify_paged(phydev, 0x0a44, 0x11, 0, BIT(7) | BIT(6)); in rtl8168g_phy_adjust_10m_aldps()
725 r8168g_phy_param(phydev, 0x8084, 0x6000, 0x0000); in rtl8168g_phy_adjust_10m_aldps()
726 phy_modify_paged(phydev, 0x0a43, 0x10, 0x0000, 0x1003); in rtl8168g_phy_adjust_10m_aldps()
730 struct phy_device *phydev) in rtl8168g_1_hw_phy_config() argument
736 ret = phy_read_paged(phydev, 0x0a46, 0x10); in rtl8168g_1_hw_phy_config()
738 phy_modify_paged(phydev, 0x0bcc, 0x12, BIT(15), 0); in rtl8168g_1_hw_phy_config()
740 phy_modify_paged(phydev, 0x0bcc, 0x12, 0, BIT(15)); in rtl8168g_1_hw_phy_config()
742 ret = phy_read_paged(phydev, 0x0a46, 0x13); in rtl8168g_1_hw_phy_config()
744 phy_modify_paged(phydev, 0x0c41, 0x15, 0, BIT(1)); in rtl8168g_1_hw_phy_config()
746 phy_modify_paged(phydev, 0x0c41, 0x15, BIT(1), 0); in rtl8168g_1_hw_phy_config()
749 phy_modify_paged(phydev, 0x0a44, 0x11, 0, BIT(3) | BIT(2)); in rtl8168g_1_hw_phy_config()
751 rtl8168g_phy_adjust_10m_aldps(phydev); in rtl8168g_1_hw_phy_config()
754 phy_modify_paged(phydev, 0x0a4b, 0x11, 0, BIT(2)); in rtl8168g_1_hw_phy_config()
757 r8168g_phy_param(phydev, 0x8012, 0x0000, 0x8000); in rtl8168g_1_hw_phy_config()
759 phy_modify_paged(phydev, 0x0c42, 0x11, BIT(13), BIT(14)); in rtl8168g_1_hw_phy_config()
762 phy_write(phydev, 0x1f, 0x0bcd); in rtl8168g_1_hw_phy_config()
763 phy_write(phydev, 0x14, 0x5065); in rtl8168g_1_hw_phy_config()
764 phy_write(phydev, 0x14, 0xd065); in rtl8168g_1_hw_phy_config()
765 phy_write(phydev, 0x1f, 0x0bc8); in rtl8168g_1_hw_phy_config()
766 phy_write(phydev, 0x11, 0x5655); in rtl8168g_1_hw_phy_config()
767 phy_write(phydev, 0x1f, 0x0bcd); in rtl8168g_1_hw_phy_config()
768 phy_write(phydev, 0x14, 0x1065); in rtl8168g_1_hw_phy_config()
769 phy_write(phydev, 0x14, 0x9065); in rtl8168g_1_hw_phy_config()
770 phy_write(phydev, 0x14, 0x1065); in rtl8168g_1_hw_phy_config()
771 phy_write(phydev, 0x1f, 0x0000); in rtl8168g_1_hw_phy_config()
773 rtl8168g_disable_aldps(phydev); in rtl8168g_1_hw_phy_config()
774 rtl8168g_config_eee_phy(phydev); in rtl8168g_1_hw_phy_config()
778 struct phy_device *phydev) in rtl8168g_2_hw_phy_config() argument
781 rtl8168g_config_eee_phy(phydev); in rtl8168g_2_hw_phy_config()
785 struct phy_device *phydev) in rtl8168h_2_hw_phy_config() argument
793 r8168g_phy_param(phydev, 0x808a, 0x003f, 0x000a); in rtl8168h_2_hw_phy_config()
796 r8168g_phy_param(phydev, 0x0811, 0x0000, 0x0800); in rtl8168h_2_hw_phy_config()
797 phy_modify_paged(phydev, 0x0a42, 0x16, 0x0000, 0x0002); in rtl8168h_2_hw_phy_config()
799 rtl8168g_enable_gphy_10m(phydev); in rtl8168h_2_hw_phy_config()
803 phy_write_paged(phydev, 0x0bcf, 0x16, ioffset); in rtl8168h_2_hw_phy_config()
806 data = phy_read_paged(phydev, 0x0bcd, 0x16); in rtl8168h_2_hw_phy_config()
812 phy_write_paged(phydev, 0x0bcd, 0x17, data); in rtl8168h_2_hw_phy_config()
815 phy_modify_paged(phydev, 0x0a44, 0x11, BIT(7), 0); in rtl8168h_2_hw_phy_config()
818 phy_modify_paged(phydev, 0x0a43, 0x10, BIT(0), 0); in rtl8168h_2_hw_phy_config()
820 rtl8168g_disable_aldps(phydev); in rtl8168h_2_hw_phy_config()
821 rtl8168g_config_eee_phy(phydev); in rtl8168h_2_hw_phy_config()
825 struct phy_device *phydev) in rtl8168ep_2_hw_phy_config() argument
827 rtl8168g_phy_adjust_10m_aldps(phydev); in rtl8168ep_2_hw_phy_config()
830 r8168g_phy_param(phydev, 0x8012, 0x0000, 0x8000); in rtl8168ep_2_hw_phy_config()
833 phy_modify_paged(phydev, 0x0c42, 0x11, BIT(13), BIT(14)); in rtl8168ep_2_hw_phy_config()
836 r8168g_phy_param(phydev, 0x80f3, 0xff00, 0x8b00); in rtl8168ep_2_hw_phy_config()
837 r8168g_phy_param(phydev, 0x80f0, 0xff00, 0x3a00); in rtl8168ep_2_hw_phy_config()
838 r8168g_phy_param(phydev, 0x80ef, 0xff00, 0x0500); in rtl8168ep_2_hw_phy_config()
839 r8168g_phy_param(phydev, 0x80f6, 0xff00, 0x6e00); in rtl8168ep_2_hw_phy_config()
840 r8168g_phy_param(phydev, 0x80ec, 0xff00, 0x6800); in rtl8168ep_2_hw_phy_config()
841 r8168g_phy_param(phydev, 0x80ed, 0xff00, 0x7c00); in rtl8168ep_2_hw_phy_config()
842 r8168g_phy_param(phydev, 0x80f2, 0xff00, 0xf400); in rtl8168ep_2_hw_phy_config()
843 r8168g_phy_param(phydev, 0x80f4, 0xff00, 0x8500); in rtl8168ep_2_hw_phy_config()
844 r8168g_phy_param(phydev, 0x8110, 0xff00, 0xa800); in rtl8168ep_2_hw_phy_config()
845 r8168g_phy_param(phydev, 0x810f, 0xff00, 0x1d00); in rtl8168ep_2_hw_phy_config()
846 r8168g_phy_param(phydev, 0x8111, 0xff00, 0xf500); in rtl8168ep_2_hw_phy_config()
847 r8168g_phy_param(phydev, 0x8113, 0xff00, 0x6100); in rtl8168ep_2_hw_phy_config()
848 r8168g_phy_param(phydev, 0x8115, 0xff00, 0x9200); in rtl8168ep_2_hw_phy_config()
849 r8168g_phy_param(phydev, 0x810e, 0xff00, 0x0400); in rtl8168ep_2_hw_phy_config()
850 r8168g_phy_param(phydev, 0x810c, 0xff00, 0x7c00); in rtl8168ep_2_hw_phy_config()
851 r8168g_phy_param(phydev, 0x810b, 0xff00, 0x5a00); in rtl8168ep_2_hw_phy_config()
852 r8168g_phy_param(phydev, 0x80d1, 0xff00, 0xff00); in rtl8168ep_2_hw_phy_config()
853 r8168g_phy_param(phydev, 0x80cd, 0xff00, 0x9e00); in rtl8168ep_2_hw_phy_config()
854 r8168g_phy_param(phydev, 0x80d3, 0xff00, 0x0e00); in rtl8168ep_2_hw_phy_config()
855 r8168g_phy_param(phydev, 0x80d5, 0xff00, 0xca00); in rtl8168ep_2_hw_phy_config()
856 r8168g_phy_param(phydev, 0x80d7, 0xff00, 0x8400); in rtl8168ep_2_hw_phy_config()
859 phy_write(phydev, 0x1f, 0x0bcd); in rtl8168ep_2_hw_phy_config()
860 phy_write(phydev, 0x14, 0x5065); in rtl8168ep_2_hw_phy_config()
861 phy_write(phydev, 0x14, 0xd065); in rtl8168ep_2_hw_phy_config()
862 phy_write(phydev, 0x1f, 0x0bc8); in rtl8168ep_2_hw_phy_config()
863 phy_write(phydev, 0x12, 0x00ed); in rtl8168ep_2_hw_phy_config()
864 phy_write(phydev, 0x1f, 0x0bcd); in rtl8168ep_2_hw_phy_config()
865 phy_write(phydev, 0x14, 0x1065); in rtl8168ep_2_hw_phy_config()
866 phy_write(phydev, 0x14, 0x9065); in rtl8168ep_2_hw_phy_config()
867 phy_write(phydev, 0x14, 0x1065); in rtl8168ep_2_hw_phy_config()
868 phy_write(phydev, 0x1f, 0x0000); in rtl8168ep_2_hw_phy_config()
870 rtl8168g_disable_aldps(phydev); in rtl8168ep_2_hw_phy_config()
871 rtl8168g_config_eee_phy(phydev); in rtl8168ep_2_hw_phy_config()
875 struct phy_device *phydev) in rtl8117_hw_phy_config() argument
878 r8168g_phy_param(phydev, 0x808e, 0xff00, 0x4800); in rtl8117_hw_phy_config()
879 r8168g_phy_param(phydev, 0x8090, 0xff00, 0xcc00); in rtl8117_hw_phy_config()
880 r8168g_phy_param(phydev, 0x8092, 0xff00, 0xb000); in rtl8117_hw_phy_config()
882 r8168g_phy_param(phydev, 0x8088, 0xff00, 0x6000); in rtl8117_hw_phy_config()
883 r8168g_phy_param(phydev, 0x808b, 0x3f00, 0x0b00); in rtl8117_hw_phy_config()
884 r8168g_phy_param(phydev, 0x808d, 0x1f00, 0x0600); in rtl8117_hw_phy_config()
885 r8168g_phy_param(phydev, 0x808c, 0xff00, 0xb000); in rtl8117_hw_phy_config()
886 r8168g_phy_param(phydev, 0x80a0, 0xff00, 0x2800); in rtl8117_hw_phy_config()
887 r8168g_phy_param(phydev, 0x80a2, 0xff00, 0x5000); in rtl8117_hw_phy_config()
888 r8168g_phy_param(phydev, 0x809b, 0xf800, 0xb000); in rtl8117_hw_phy_config()
889 r8168g_phy_param(phydev, 0x809a, 0xff00, 0x4b00); in rtl8117_hw_phy_config()
890 r8168g_phy_param(phydev, 0x809d, 0x3f00, 0x0800); in rtl8117_hw_phy_config()
891 r8168g_phy_param(phydev, 0x80a1, 0xff00, 0x7000); in rtl8117_hw_phy_config()
892 r8168g_phy_param(phydev, 0x809f, 0x1f00, 0x0300); in rtl8117_hw_phy_config()
893 r8168g_phy_param(phydev, 0x809e, 0xff00, 0x8800); in rtl8117_hw_phy_config()
894 r8168g_phy_param(phydev, 0x80b2, 0xff00, 0x2200); in rtl8117_hw_phy_config()
895 r8168g_phy_param(phydev, 0x80ad, 0xf800, 0x9800); in rtl8117_hw_phy_config()
896 r8168g_phy_param(phydev, 0x80af, 0x3f00, 0x0800); in rtl8117_hw_phy_config()
897 r8168g_phy_param(phydev, 0x80b3, 0xff00, 0x6f00); in rtl8117_hw_phy_config()
898 r8168g_phy_param(phydev, 0x80b1, 0x1f00, 0x0300); in rtl8117_hw_phy_config()
899 r8168g_phy_param(phydev, 0x80b0, 0xff00, 0x9300); in rtl8117_hw_phy_config()
901 r8168g_phy_param(phydev, 0x8011, 0x0000, 0x0800); in rtl8117_hw_phy_config()
903 rtl8168g_enable_gphy_10m(phydev); in rtl8117_hw_phy_config()
905 r8168g_phy_param(phydev, 0x8016, 0x0000, 0x0400); in rtl8117_hw_phy_config()
907 rtl8168g_disable_aldps(phydev); in rtl8117_hw_phy_config()
908 rtl8168h_config_eee_phy(phydev); in rtl8117_hw_phy_config()
912 struct phy_device *phydev) in rtl8102e_hw_phy_config() argument
921 phy_set_bits(phydev, 0x11, BIT(12)); in rtl8102e_hw_phy_config()
922 phy_set_bits(phydev, 0x19, BIT(13)); in rtl8102e_hw_phy_config()
923 phy_set_bits(phydev, 0x10, BIT(15)); in rtl8102e_hw_phy_config()
925 rtl_writephy_batch(phydev, phy_reg_init); in rtl8102e_hw_phy_config()
929 struct phy_device *phydev) in rtl8401_hw_phy_config() argument
931 phy_set_bits(phydev, 0x11, BIT(12)); in rtl8401_hw_phy_config()
932 phy_modify_paged(phydev, 0x0002, 0x0f, 0x0000, 0x0003); in rtl8401_hw_phy_config()
936 struct phy_device *phydev) in rtl8105e_hw_phy_config() argument
939 phy_write(phydev, 0x18, 0x0310); in rtl8105e_hw_phy_config()
944 phy_write_paged(phydev, 0x0005, 0x1a, 0x0000); in rtl8105e_hw_phy_config()
945 phy_write_paged(phydev, 0x0004, 0x1c, 0x0000); in rtl8105e_hw_phy_config()
946 phy_write_paged(phydev, 0x0001, 0x15, 0x7701); in rtl8105e_hw_phy_config()
950 struct phy_device *phydev) in rtl8402_hw_phy_config() argument
953 phy_write(phydev, 0x18, 0x0310); in rtl8402_hw_phy_config()
959 phy_write(phydev, 0x1f, 0x0004); in rtl8402_hw_phy_config()
960 phy_write(phydev, 0x10, 0x401f); in rtl8402_hw_phy_config()
961 phy_write(phydev, 0x19, 0x7030); in rtl8402_hw_phy_config()
962 phy_write(phydev, 0x1f, 0x0000); in rtl8402_hw_phy_config()
966 struct phy_device *phydev) in rtl8106e_hw_phy_config() argument
976 phy_write(phydev, 0x18, 0x0310); in rtl8106e_hw_phy_config()
981 rtl_writephy_batch(phydev, phy_reg_init); in rtl8106e_hw_phy_config()
984 static void rtl8125_legacy_force_mode(struct phy_device *phydev) in rtl8125_legacy_force_mode() argument
986 phy_modify_paged(phydev, 0xa5b, 0x12, BIT(15), 0); in rtl8125_legacy_force_mode()
990 struct phy_device *phydev) in rtl8125a_2_hw_phy_config() argument
994 phy_modify_paged(phydev, 0xad4, 0x17, 0x0000, 0x0010); in rtl8125a_2_hw_phy_config()
995 phy_modify_paged(phydev, 0xad1, 0x13, 0x03ff, 0x03ff); in rtl8125a_2_hw_phy_config()
996 phy_modify_paged(phydev, 0xad3, 0x11, 0x003f, 0x0006); in rtl8125a_2_hw_phy_config()
997 phy_modify_paged(phydev, 0xac0, 0x14, 0x1100, 0x0000); in rtl8125a_2_hw_phy_config()
998 phy_modify_paged(phydev, 0xacc, 0x10, 0x0003, 0x0002); in rtl8125a_2_hw_phy_config()
999 phy_modify_paged(phydev, 0xad4, 0x10, 0x00e7, 0x0044); in rtl8125a_2_hw_phy_config()
1000 phy_modify_paged(phydev, 0xac1, 0x12, 0x0080, 0x0000); in rtl8125a_2_hw_phy_config()
1001 phy_modify_paged(phydev, 0xac8, 0x10, 0x0300, 0x0000); in rtl8125a_2_hw_phy_config()
1002 phy_modify_paged(phydev, 0xac5, 0x17, 0x0007, 0x0002); in rtl8125a_2_hw_phy_config()
1003 phy_write_paged(phydev, 0xad4, 0x16, 0x00a8); in rtl8125a_2_hw_phy_config()
1004 phy_write_paged(phydev, 0xac5, 0x16, 0x01ff); in rtl8125a_2_hw_phy_config()
1005 phy_modify_paged(phydev, 0xac8, 0x15, 0x00f0, 0x0030); in rtl8125a_2_hw_phy_config()
1007 phy_write(phydev, 0x1f, 0x0b87); in rtl8125a_2_hw_phy_config()
1008 phy_write(phydev, 0x16, 0x80a2); in rtl8125a_2_hw_phy_config()
1009 phy_write(phydev, 0x17, 0x0153); in rtl8125a_2_hw_phy_config()
1010 phy_write(phydev, 0x16, 0x809c); in rtl8125a_2_hw_phy_config()
1011 phy_write(phydev, 0x17, 0x0153); in rtl8125a_2_hw_phy_config()
1012 phy_write(phydev, 0x1f, 0x0000); in rtl8125a_2_hw_phy_config()
1014 phy_write(phydev, 0x1f, 0x0a43); in rtl8125a_2_hw_phy_config()
1015 phy_write(phydev, 0x13, 0x81B3); in rtl8125a_2_hw_phy_config()
1016 phy_write(phydev, 0x14, 0x0043); in rtl8125a_2_hw_phy_config()
1017 phy_write(phydev, 0x14, 0x00A7); in rtl8125a_2_hw_phy_config()
1018 phy_write(phydev, 0x14, 0x00D6); in rtl8125a_2_hw_phy_config()
1019 phy_write(phydev, 0x14, 0x00EC); in rtl8125a_2_hw_phy_config()
1020 phy_write(phydev, 0x14, 0x00F6); in rtl8125a_2_hw_phy_config()
1021 phy_write(phydev, 0x14, 0x00FB); in rtl8125a_2_hw_phy_config()
1022 phy_write(phydev, 0x14, 0x00FD); in rtl8125a_2_hw_phy_config()
1023 phy_write(phydev, 0x14, 0x00FF); in rtl8125a_2_hw_phy_config()
1024 phy_write(phydev, 0x14, 0x00BB); in rtl8125a_2_hw_phy_config()
1025 phy_write(phydev, 0x14, 0x0058); in rtl8125a_2_hw_phy_config()
1026 phy_write(phydev, 0x14, 0x0029); in rtl8125a_2_hw_phy_config()
1027 phy_write(phydev, 0x14, 0x0013); in rtl8125a_2_hw_phy_config()
1028 phy_write(phydev, 0x14, 0x0009); in rtl8125a_2_hw_phy_config()
1029 phy_write(phydev, 0x14, 0x0004); in rtl8125a_2_hw_phy_config()
1030 phy_write(phydev, 0x14, 0x0002); in rtl8125a_2_hw_phy_config()
1032 phy_write(phydev, 0x14, 0x0000); in rtl8125a_2_hw_phy_config()
1033 phy_write(phydev, 0x1f, 0x0000); in rtl8125a_2_hw_phy_config()
1035 r8168g_phy_param(phydev, 0x8257, 0xffff, 0x020F); in rtl8125a_2_hw_phy_config()
1036 r8168g_phy_param(phydev, 0x80ea, 0xffff, 0x7843); in rtl8125a_2_hw_phy_config()
1040 phy_modify_paged(phydev, 0xd06, 0x14, 0x0000, 0x2000); in rtl8125a_2_hw_phy_config()
1042 r8168g_phy_param(phydev, 0x81a2, 0x0000, 0x0100); in rtl8125a_2_hw_phy_config()
1044 phy_modify_paged(phydev, 0xb54, 0x16, 0xff00, 0xdb00); in rtl8125a_2_hw_phy_config()
1045 phy_modify_paged(phydev, 0xa45, 0x12, 0x0001, 0x0000); in rtl8125a_2_hw_phy_config()
1046 phy_modify_paged(phydev, 0xa5d, 0x12, 0x0000, 0x0020); in rtl8125a_2_hw_phy_config()
1047 phy_modify_paged(phydev, 0xad4, 0x17, 0x0010, 0x0000); in rtl8125a_2_hw_phy_config()
1048 phy_modify_paged(phydev, 0xa86, 0x15, 0x0001, 0x0000); in rtl8125a_2_hw_phy_config()
1049 rtl8168g_enable_gphy_10m(phydev); in rtl8125a_2_hw_phy_config()
1051 rtl8168g_disable_aldps(phydev); in rtl8125a_2_hw_phy_config()
1052 rtl8125_config_eee_phy(phydev); in rtl8125a_2_hw_phy_config()
1056 struct phy_device *phydev) in rtl8125b_hw_phy_config() argument
1059 rtl8168g_enable_gphy_10m(phydev); in rtl8125b_hw_phy_config()
1061 phy_modify_paged(phydev, 0xac4, 0x13, 0x00f0, 0x0090); in rtl8125b_hw_phy_config()
1062 phy_modify_paged(phydev, 0xad3, 0x10, 0x0003, 0x0001); in rtl8125b_hw_phy_config()
1064 phy_write(phydev, 0x1f, 0x0b87); in rtl8125b_hw_phy_config()
1065 phy_write(phydev, 0x16, 0x80f5); in rtl8125b_hw_phy_config()
1066 phy_write(phydev, 0x17, 0x760e); in rtl8125b_hw_phy_config()
1067 phy_write(phydev, 0x16, 0x8107); in rtl8125b_hw_phy_config()
1068 phy_write(phydev, 0x17, 0x360e); in rtl8125b_hw_phy_config()
1069 phy_write(phydev, 0x16, 0x8551); in rtl8125b_hw_phy_config()
1070 phy_modify(phydev, 0x17, 0xff00, 0x0800); in rtl8125b_hw_phy_config()
1071 phy_write(phydev, 0x1f, 0x0000); in rtl8125b_hw_phy_config()
1073 phy_modify_paged(phydev, 0xbf0, 0x10, 0xe000, 0xa000); in rtl8125b_hw_phy_config()
1074 phy_modify_paged(phydev, 0xbf4, 0x13, 0x0f00, 0x0300); in rtl8125b_hw_phy_config()
1076 r8168g_phy_param(phydev, 0x8044, 0xffff, 0x2417); in rtl8125b_hw_phy_config()
1077 r8168g_phy_param(phydev, 0x804a, 0xffff, 0x2417); in rtl8125b_hw_phy_config()
1078 r8168g_phy_param(phydev, 0x8050, 0xffff, 0x2417); in rtl8125b_hw_phy_config()
1079 r8168g_phy_param(phydev, 0x8056, 0xffff, 0x2417); in rtl8125b_hw_phy_config()
1080 r8168g_phy_param(phydev, 0x805c, 0xffff, 0x2417); in rtl8125b_hw_phy_config()
1081 r8168g_phy_param(phydev, 0x8062, 0xffff, 0x2417); in rtl8125b_hw_phy_config()
1082 r8168g_phy_param(phydev, 0x8068, 0xffff, 0x2417); in rtl8125b_hw_phy_config()
1083 r8168g_phy_param(phydev, 0x806e, 0xffff, 0x2417); in rtl8125b_hw_phy_config()
1084 r8168g_phy_param(phydev, 0x8074, 0xffff, 0x2417); in rtl8125b_hw_phy_config()
1085 r8168g_phy_param(phydev, 0x807a, 0xffff, 0x2417); in rtl8125b_hw_phy_config()
1087 phy_modify_paged(phydev, 0xa4c, 0x15, 0x0000, 0x0040); in rtl8125b_hw_phy_config()
1088 phy_modify_paged(phydev, 0xbf8, 0x12, 0xe000, 0xa000); in rtl8125b_hw_phy_config()
1090 rtl8125_legacy_force_mode(phydev); in rtl8125b_hw_phy_config()
1091 rtl8168g_disable_aldps(phydev); in rtl8125b_hw_phy_config()
1092 rtl8125_config_eee_phy(phydev); in rtl8125b_hw_phy_config()
1096 struct phy_device *phydev) in rtl8125d_hw_phy_config() argument
1099 rtl8168g_enable_gphy_10m(phydev); in rtl8125d_hw_phy_config()
1100 rtl8125_legacy_force_mode(phydev); in rtl8125d_hw_phy_config()
1101 rtl8168g_disable_aldps(phydev); in rtl8125d_hw_phy_config()
1102 rtl8125_config_eee_phy(phydev); in rtl8125d_hw_phy_config()
1106 struct phy_device *phydev) in rtl8125bp_hw_phy_config() argument
1109 rtl8168g_enable_gphy_10m(phydev); in rtl8125bp_hw_phy_config()
1111 r8168g_phy_param(phydev, 0x8010, 0x0800, 0x0000); in rtl8125bp_hw_phy_config()
1113 phy_write(phydev, 0x1f, 0x0b87); in rtl8125bp_hw_phy_config()
1114 phy_write(phydev, 0x16, 0x8088); in rtl8125bp_hw_phy_config()
1115 phy_modify(phydev, 0x17, 0xff00, 0x9000); in rtl8125bp_hw_phy_config()
1116 phy_write(phydev, 0x16, 0x808f); in rtl8125bp_hw_phy_config()
1117 phy_modify(phydev, 0x17, 0xff00, 0x9000); in rtl8125bp_hw_phy_config()
1118 phy_write(phydev, 0x1f, 0x0000); in rtl8125bp_hw_phy_config()
1120 r8168g_phy_param(phydev, 0x8174, 0x2000, 0x1800); in rtl8125bp_hw_phy_config()
1122 rtl8125_legacy_force_mode(phydev); in rtl8125bp_hw_phy_config()
1123 rtl8168g_disable_aldps(phydev); in rtl8125bp_hw_phy_config()
1124 rtl8125_config_eee_phy(phydev); in rtl8125bp_hw_phy_config()
1128 struct phy_device *phydev) in rtl8126a_hw_phy_config() argument
1131 rtl8168g_enable_gphy_10m(phydev); in rtl8126a_hw_phy_config()
1132 rtl8125_legacy_force_mode(phydev); in rtl8126a_hw_phy_config()
1133 rtl8168g_disable_aldps(phydev); in rtl8126a_hw_phy_config()
1134 rtl8125_common_config_eee_phy(phydev); in rtl8126a_hw_phy_config()
1137 void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev, in r8169_hw_phy_config() argument
1194 phy_configs[ver](tp, phydev); in r8169_hw_phy_config()