Lines Matching full:phydev

21 int __bcm_phy_write_exp(struct phy_device *phydev, u16 reg, u16 val)  in __bcm_phy_write_exp()  argument
25 rc = __phy_write(phydev, MII_BCM54XX_EXP_SEL, reg); in __bcm_phy_write_exp()
29 return __phy_write(phydev, MII_BCM54XX_EXP_DATA, val); in __bcm_phy_write_exp()
33 int bcm_phy_write_exp(struct phy_device *phydev, u16 reg, u16 val) in bcm_phy_write_exp() argument
37 phy_lock_mdio_bus(phydev); in bcm_phy_write_exp()
38 rc = __bcm_phy_write_exp(phydev, reg, val); in bcm_phy_write_exp()
39 phy_unlock_mdio_bus(phydev); in bcm_phy_write_exp()
45 int __bcm_phy_read_exp(struct phy_device *phydev, u16 reg) in __bcm_phy_read_exp() argument
49 val = __phy_write(phydev, MII_BCM54XX_EXP_SEL, reg); in __bcm_phy_read_exp()
53 val = __phy_read(phydev, MII_BCM54XX_EXP_DATA); in __bcm_phy_read_exp()
56 __phy_write(phydev, MII_BCM54XX_EXP_SEL, 0); in __bcm_phy_read_exp()
62 int bcm_phy_read_exp(struct phy_device *phydev, u16 reg) in bcm_phy_read_exp() argument
66 phy_lock_mdio_bus(phydev); in bcm_phy_read_exp()
67 rc = __bcm_phy_read_exp(phydev, reg); in bcm_phy_read_exp()
68 phy_unlock_mdio_bus(phydev); in bcm_phy_read_exp()
74 int __bcm_phy_modify_exp(struct phy_device *phydev, u16 reg, u16 mask, u16 set) in __bcm_phy_modify_exp() argument
78 ret = __phy_write(phydev, MII_BCM54XX_EXP_SEL, reg); in __bcm_phy_modify_exp()
82 ret = __phy_read(phydev, MII_BCM54XX_EXP_DATA); in __bcm_phy_modify_exp()
90 return __phy_write(phydev, MII_BCM54XX_EXP_DATA, new); in __bcm_phy_modify_exp()
94 int bcm_phy_modify_exp(struct phy_device *phydev, u16 reg, u16 mask, u16 set) in bcm_phy_modify_exp() argument
98 phy_lock_mdio_bus(phydev); in bcm_phy_modify_exp()
99 ret = __bcm_phy_modify_exp(phydev, reg, mask, set); in bcm_phy_modify_exp()
100 phy_unlock_mdio_bus(phydev); in bcm_phy_modify_exp()
106 int bcm54xx_auxctl_read(struct phy_device *phydev, u16 regnum) in bcm54xx_auxctl_read() argument
111 phy_write(phydev, MII_BCM54XX_AUX_CTL, MII_BCM54XX_AUXCTL_SHDWSEL_MASK | in bcm54xx_auxctl_read()
113 return phy_read(phydev, MII_BCM54XX_AUX_CTL); in bcm54xx_auxctl_read()
117 int bcm54xx_auxctl_write(struct phy_device *phydev, u16 regnum, u16 val) in bcm54xx_auxctl_write() argument
119 return phy_write(phydev, MII_BCM54XX_AUX_CTL, regnum | val); in bcm54xx_auxctl_write()
123 int bcm_phy_write_misc(struct phy_device *phydev, in bcm_phy_write_misc() argument
129 rc = phy_write(phydev, MII_BCM54XX_AUX_CTL, in bcm_phy_write_misc()
134 tmp = phy_read(phydev, MII_BCM54XX_AUX_CTL); in bcm_phy_write_misc()
136 rc = phy_write(phydev, MII_BCM54XX_AUX_CTL, tmp); in bcm_phy_write_misc()
141 rc = bcm_phy_write_exp(phydev, tmp, val); in bcm_phy_write_misc()
147 int bcm_phy_read_misc(struct phy_device *phydev, in bcm_phy_read_misc() argument
153 rc = phy_write(phydev, MII_BCM54XX_AUX_CTL, in bcm_phy_read_misc()
158 tmp = phy_read(phydev, MII_BCM54XX_AUX_CTL); in bcm_phy_read_misc()
160 rc = phy_write(phydev, MII_BCM54XX_AUX_CTL, tmp); in bcm_phy_read_misc()
165 rc = bcm_phy_read_exp(phydev, tmp); in bcm_phy_read_misc()
171 int bcm_phy_ack_intr(struct phy_device *phydev) in bcm_phy_ack_intr() argument
176 reg = phy_read(phydev, MII_BCM54XX_ISR); in bcm_phy_ack_intr()
184 int bcm_phy_config_intr(struct phy_device *phydev) in bcm_phy_config_intr() argument
188 reg = phy_read(phydev, MII_BCM54XX_ECR); in bcm_phy_config_intr()
192 if (phydev->interrupts == PHY_INTERRUPT_ENABLED) { in bcm_phy_config_intr()
193 err = bcm_phy_ack_intr(phydev); in bcm_phy_config_intr()
198 err = phy_write(phydev, MII_BCM54XX_ECR, reg); in bcm_phy_config_intr()
201 err = phy_write(phydev, MII_BCM54XX_ECR, reg); in bcm_phy_config_intr()
205 err = bcm_phy_ack_intr(phydev); in bcm_phy_config_intr()
211 irqreturn_t bcm_phy_handle_interrupt(struct phy_device *phydev) in bcm_phy_handle_interrupt() argument
215 irq_status = phy_read(phydev, MII_BCM54XX_ISR); in bcm_phy_handle_interrupt()
217 phy_error(phydev); in bcm_phy_handle_interrupt()
226 irq_mask = phy_read(phydev, MII_BCM54XX_IMR); in bcm_phy_handle_interrupt()
228 phy_error(phydev); in bcm_phy_handle_interrupt()
236 phy_trigger_machine(phydev); in bcm_phy_handle_interrupt()
242 int bcm_phy_read_shadow(struct phy_device *phydev, u16 shadow) in bcm_phy_read_shadow() argument
244 phy_write(phydev, MII_BCM54XX_SHD, MII_BCM54XX_SHD_VAL(shadow)); in bcm_phy_read_shadow()
245 return MII_BCM54XX_SHD_DATA(phy_read(phydev, MII_BCM54XX_SHD)); in bcm_phy_read_shadow()
249 int bcm_phy_write_shadow(struct phy_device *phydev, u16 shadow, in bcm_phy_write_shadow() argument
252 return phy_write(phydev, MII_BCM54XX_SHD, in bcm_phy_write_shadow()
259 int __bcm_phy_read_rdb(struct phy_device *phydev, u16 rdb) in __bcm_phy_read_rdb() argument
263 val = __phy_write(phydev, MII_BCM54XX_RDB_ADDR, rdb); in __bcm_phy_read_rdb()
267 return __phy_read(phydev, MII_BCM54XX_RDB_DATA); in __bcm_phy_read_rdb()
271 int bcm_phy_read_rdb(struct phy_device *phydev, u16 rdb) in bcm_phy_read_rdb() argument
275 phy_lock_mdio_bus(phydev); in bcm_phy_read_rdb()
276 ret = __bcm_phy_read_rdb(phydev, rdb); in bcm_phy_read_rdb()
277 phy_unlock_mdio_bus(phydev); in bcm_phy_read_rdb()
283 int __bcm_phy_write_rdb(struct phy_device *phydev, u16 rdb, u16 val) in __bcm_phy_write_rdb() argument
287 ret = __phy_write(phydev, MII_BCM54XX_RDB_ADDR, rdb); in __bcm_phy_write_rdb()
291 return __phy_write(phydev, MII_BCM54XX_RDB_DATA, val); in __bcm_phy_write_rdb()
295 int bcm_phy_write_rdb(struct phy_device *phydev, u16 rdb, u16 val) in bcm_phy_write_rdb() argument
299 phy_lock_mdio_bus(phydev); in bcm_phy_write_rdb()
300 ret = __bcm_phy_write_rdb(phydev, rdb, val); in bcm_phy_write_rdb()
301 phy_unlock_mdio_bus(phydev); in bcm_phy_write_rdb()
307 int __bcm_phy_modify_rdb(struct phy_device *phydev, u16 rdb, u16 mask, u16 set) in __bcm_phy_modify_rdb() argument
311 ret = __phy_write(phydev, MII_BCM54XX_RDB_ADDR, rdb); in __bcm_phy_modify_rdb()
315 ret = __phy_read(phydev, MII_BCM54XX_RDB_DATA); in __bcm_phy_modify_rdb()
323 return __phy_write(phydev, MII_BCM54XX_RDB_DATA, new); in __bcm_phy_modify_rdb()
327 int bcm_phy_modify_rdb(struct phy_device *phydev, u16 rdb, u16 mask, u16 set) in bcm_phy_modify_rdb() argument
331 phy_lock_mdio_bus(phydev); in bcm_phy_modify_rdb()
332 ret = __bcm_phy_modify_rdb(phydev, rdb, mask, set); in bcm_phy_modify_rdb()
333 phy_unlock_mdio_bus(phydev); in bcm_phy_modify_rdb()
339 int bcm_phy_enable_apd(struct phy_device *phydev, bool dll_pwr_down) in bcm_phy_enable_apd() argument
344 val = bcm_phy_read_shadow(phydev, BCM54XX_SHD_SCR3); in bcm_phy_enable_apd()
349 bcm_phy_write_shadow(phydev, BCM54XX_SHD_SCR3, val); in bcm_phy_enable_apd()
352 val = bcm_phy_read_shadow(phydev, BCM54XX_SHD_APD); in bcm_phy_enable_apd()
359 if (phydev->autoneg == AUTONEG_ENABLE) in bcm_phy_enable_apd()
368 return bcm_phy_write_shadow(phydev, BCM54XX_SHD_APD, val); in bcm_phy_enable_apd()
372 int bcm_phy_set_eee(struct phy_device *phydev, bool enable) in bcm_phy_set_eee() argument
377 val = phy_read_mmd(phydev, MDIO_MMD_AN, BRCM_CL45VEN_EEE_CONTROL); in bcm_phy_set_eee()
386 phy_write_mmd(phydev, MDIO_MMD_AN, BRCM_CL45VEN_EEE_CONTROL, (u32)val); in bcm_phy_set_eee()
389 val = phy_read_mmd(phydev, MDIO_MMD_AN, BCM_CL45VEN_EEE_ADV); in bcm_phy_set_eee()
394 phydev->supported)) in bcm_phy_set_eee()
397 phydev->supported)) in bcm_phy_set_eee()
405 phy_write_mmd(phydev, MDIO_MMD_AN, BCM_CL45VEN_EEE_ADV, (u32)val); in bcm_phy_set_eee()
411 int bcm_phy_downshift_get(struct phy_device *phydev, u8 *count) in bcm_phy_downshift_get() argument
415 val = bcm54xx_auxctl_read(phydev, MII_BCM54XX_AUXCTL_SHDWSEL_MISC); in bcm_phy_downshift_get()
425 val = bcm_phy_read_shadow(phydev, BCM54XX_SHD_SCR2); in bcm_phy_downshift_get()
443 int bcm_phy_downshift_set(struct phy_device *phydev, u8 count) in bcm_phy_downshift_set() argument
454 val = bcm54xx_auxctl_read(phydev, MII_BCM54XX_AUXCTL_SHDWSEL_MISC); in bcm_phy_downshift_set()
463 return bcm54xx_auxctl_write(phydev, in bcm_phy_downshift_set()
468 ret = bcm54xx_auxctl_write(phydev, in bcm_phy_downshift_set()
475 val = bcm_phy_read_shadow(phydev, BCM54XX_SHD_SCR2); in bcm_phy_downshift_set()
493 return bcm_phy_write_shadow(phydev, BCM54XX_SHD_SCR2, val); in bcm_phy_downshift_set()
515 int bcm_phy_get_sset_count(struct phy_device *phydev) in bcm_phy_get_sset_count() argument
521 void bcm_phy_get_strings(struct phy_device *phydev, u8 *data) in bcm_phy_get_strings() argument
534 static u64 bcm_phy_get_stat(struct phy_device *phydev, u64 *shadow, in bcm_phy_get_stat() argument
542 val = phy_read(phydev, stat.reg); in bcm_phy_get_stat()
544 val = phy_read_mmd(phydev, stat.devad, stat.reg); in bcm_phy_get_stat()
557 void bcm_phy_get_stats(struct phy_device *phydev, u64 *shadow, in bcm_phy_get_stats() argument
563 data[i] = bcm_phy_get_stat(phydev, shadow, i); in bcm_phy_get_stats()
567 void bcm_phy_r_rc_cal_reset(struct phy_device *phydev) in bcm_phy_r_rc_cal_reset() argument
570 bcm_phy_write_exp_sel(phydev, 0x00b0, 0x0010); in bcm_phy_r_rc_cal_reset()
573 bcm_phy_write_exp_sel(phydev, 0x00b0, 0x0000); in bcm_phy_r_rc_cal_reset()
577 int bcm_phy_28nm_a0b0_afe_config_init(struct phy_device *phydev) in bcm_phy_28nm_a0b0_afe_config_init() argument
582 bcm_phy_write_misc(phydev, PLL_PLLCTRL_1, 0x0048); in bcm_phy_28nm_a0b0_afe_config_init()
585 bcm_phy_write_misc(phydev, PLL_PLLCTRL_2, 0x021b); in bcm_phy_28nm_a0b0_afe_config_init()
590 bcm_phy_write_misc(phydev, PLL_PLLCTRL_4, 0x0e20); in bcm_phy_28nm_a0b0_afe_config_init()
593 bcm_phy_write_misc(phydev, DSP_TAP10, 0x690b); in bcm_phy_28nm_a0b0_afe_config_init()
596 phy_write(phydev, MII_BRCM_CORE_BASE1E, 0xd); in bcm_phy_28nm_a0b0_afe_config_init()
598 bcm_phy_r_rc_cal_reset(phydev); in bcm_phy_28nm_a0b0_afe_config_init()
601 bcm_phy_write_misc(phydev, AFE_RXCONFIG_0, 0xeb19); in bcm_phy_28nm_a0b0_afe_config_init()
604 bcm_phy_write_misc(phydev, AFE_RXCONFIG_1, 0x9a3f); in bcm_phy_28nm_a0b0_afe_config_init()
607 bcm_phy_write_misc(phydev, AFE_RX_LP_COUNTER, 0x7fc0); in bcm_phy_28nm_a0b0_afe_config_init()
610 bcm_phy_write_misc(phydev, AFE_HPF_TRIM_OTHERS, 0x000b); in bcm_phy_28nm_a0b0_afe_config_init()
613 bcm_phy_write_misc(phydev, AFE_TX_CONFIG, 0x0800); in bcm_phy_28nm_a0b0_afe_config_init()
619 int bcm_phy_enable_jumbo(struct phy_device *phydev) in bcm_phy_enable_jumbo() argument
623 ret = bcm54xx_auxctl_read(phydev, MII_BCM54XX_AUXCTL_SHDWSEL_AUXCTL); in bcm_phy_enable_jumbo()
628 ret = bcm54xx_auxctl_write(phydev, MII_BCM54XX_AUXCTL_SHDWSEL_AUXCTL, in bcm_phy_enable_jumbo()
637 return phy_set_bits(phydev, MII_BCM54XX_ECR, MII_BCM54XX_ECR_FIFOE); in bcm_phy_enable_jumbo()
641 static int __bcm_phy_enable_rdb_access(struct phy_device *phydev) in __bcm_phy_enable_rdb_access() argument
643 return __bcm_phy_write_exp(phydev, BCM54XX_EXP_REG7E, 0); in __bcm_phy_enable_rdb_access()
646 static int __bcm_phy_enable_legacy_access(struct phy_device *phydev) in __bcm_phy_enable_legacy_access() argument
648 return __bcm_phy_write_rdb(phydev, BCM54XX_RDB_REG0087, in __bcm_phy_enable_legacy_access()
652 static int _bcm_phy_cable_test_start(struct phy_device *phydev, bool is_rdb) in _bcm_phy_cable_test_start() argument
660 phy_write(phydev, MII_BMCR, BMCR_ANENABLE); in _bcm_phy_cable_test_start()
661 phy_write(phydev, MII_ADVERTISE, ADVERTISE_CSMA); in _bcm_phy_cable_test_start()
662 phy_write(phydev, MII_CTRL1000, 0); in _bcm_phy_cable_test_start()
664 phy_lock_mdio_bus(phydev); in _bcm_phy_cable_test_start()
666 ret = __bcm_phy_enable_legacy_access(phydev); in _bcm_phy_cable_test_start()
676 ret = __bcm_phy_modify_exp(phydev, BCM54XX_EXP_ECD_CTRL, mask, set); in _bcm_phy_cable_test_start()
681 ret = __bcm_phy_enable_rdb_access(phydev) ? : ret; in _bcm_phy_cable_test_start()
683 phy_unlock_mdio_bus(phydev); in _bcm_phy_cable_test_start()
717 static int bcm_phy_report_length(struct phy_device *phydev, int pair) in bcm_phy_report_length() argument
721 val = __bcm_phy_read_exp(phydev, in bcm_phy_report_length()
729 ethnl_cable_test_fault_length(phydev, pair, val); in bcm_phy_report_length()
734 static int _bcm_phy_cable_test_get_status(struct phy_device *phydev, in _bcm_phy_cable_test_get_status() argument
741 phy_lock_mdio_bus(phydev); in _bcm_phy_cable_test_get_status()
744 ret = __bcm_phy_enable_legacy_access(phydev); in _bcm_phy_cable_test_get_status()
749 ret = __bcm_phy_read_exp(phydev, BCM54XX_EXP_ECD_CTRL); in _bcm_phy_cable_test_get_status()
758 ret = __bcm_phy_read_exp(phydev, BCM54XX_EXP_ECD_FAULT_TYPE); in _bcm_phy_cable_test_get_status()
767 ethnl_cable_test_result(phydev, ETHTOOL_A_CABLE_PAIR_A, in _bcm_phy_cable_test_get_status()
769 ethnl_cable_test_result(phydev, ETHTOOL_A_CABLE_PAIR_B, in _bcm_phy_cable_test_get_status()
771 ethnl_cable_test_result(phydev, ETHTOOL_A_CABLE_PAIR_C, in _bcm_phy_cable_test_get_status()
773 ethnl_cable_test_result(phydev, ETHTOOL_A_CABLE_PAIR_D, in _bcm_phy_cable_test_get_status()
777 bcm_phy_report_length(phydev, 0); in _bcm_phy_cable_test_get_status()
779 bcm_phy_report_length(phydev, 1); in _bcm_phy_cable_test_get_status()
781 bcm_phy_report_length(phydev, 2); in _bcm_phy_cable_test_get_status()
783 bcm_phy_report_length(phydev, 3); in _bcm_phy_cable_test_get_status()
790 ret = __bcm_phy_enable_rdb_access(phydev) ? : ret; in _bcm_phy_cable_test_get_status()
792 phy_unlock_mdio_bus(phydev); in _bcm_phy_cable_test_get_status()
797 static int bcm_setup_lre_forced(struct phy_device *phydev) in bcm_setup_lre_forced() argument
801 phydev->pause = 0; in bcm_setup_lre_forced()
802 phydev->asym_pause = 0; in bcm_setup_lre_forced()
804 if (phydev->speed == SPEED_100) in bcm_setup_lre_forced()
807 if (phydev->duplex != DUPLEX_FULL) in bcm_setup_lre_forced()
810 return phy_modify(phydev, MII_BCM54XX_LRECR, LRECR_SPEED100, ctl); in bcm_setup_lre_forced()
840 int bcm_phy_cable_test_start(struct phy_device *phydev) in bcm_phy_cable_test_start() argument
842 return _bcm_phy_cable_test_start(phydev, false); in bcm_phy_cable_test_start()
846 int bcm_phy_cable_test_get_status(struct phy_device *phydev, bool *finished) in bcm_phy_cable_test_get_status() argument
848 return _bcm_phy_cable_test_get_status(phydev, finished, false); in bcm_phy_cable_test_get_status()
856 int bcm_phy_cable_test_start_rdb(struct phy_device *phydev) in bcm_phy_cable_test_start_rdb() argument
858 return _bcm_phy_cable_test_start(phydev, true); in bcm_phy_cable_test_start_rdb()
862 int bcm_phy_cable_test_get_status_rdb(struct phy_device *phydev, in bcm_phy_cable_test_get_status_rdb() argument
865 return _bcm_phy_cable_test_get_status(phydev, finished, true); in bcm_phy_cable_test_get_status_rdb()
875 int bcm_phy_set_wol(struct phy_device *phydev, struct ethtool_wolinfo *wol) in bcm_phy_set_wol() argument
877 struct net_device *ndev = phydev->attached_dev; in bcm_phy_set_wol()
895 ret = bcm_phy_read_exp(phydev, BCM54XX_WOL_INT_STATUS); in bcm_phy_set_wol()
899 ret = bcm_phy_read_exp(phydev, BCM54XX_WOL_MAIN_CTL); in bcm_phy_set_wol()
906 if (phy_interrupt_is_valid(phydev)) in bcm_phy_set_wol()
907 disable_irq_wake(phydev->irq); in bcm_phy_set_wol()
910 ret = bcm_phy_write_exp(phydev, BCM54XX_WOL_INT_MASK, in bcm_phy_set_wol()
918 return bcm_phy_write_exp(phydev, BCM54XX_WOL_MAIN_CTL, ctl); in bcm_phy_set_wol()
962 ret = bcm_phy_write_exp(phydev, in bcm_phy_set_wol()
970 ret = bcm_phy_write_exp(phydev, BCM54XX_WOL_MPD_DATA2(2 - i), in bcm_phy_set_wol()
975 ret = bcm_phy_write_exp(phydev, BCM54XX_WOL_MASK(2 - i), in bcm_phy_set_wol()
999 ret = bcm_phy_write_exp(phydev, BCM54XX_WOL_MAIN_CTL, ctl); in bcm_phy_set_wol()
1004 ret = bcm_phy_read_exp(phydev, BCM54XX_TOP_MISC_LED_CTL); in bcm_phy_set_wol()
1009 ret = bcm_phy_write_exp(phydev, BCM54XX_TOP_MISC_LED_CTL, ret); in bcm_phy_set_wol()
1014 ret = bcm_phy_write_exp(phydev, BCM54XX_WOL_INT_MASK, 0); in bcm_phy_set_wol()
1018 if (phy_interrupt_is_valid(phydev)) in bcm_phy_set_wol()
1019 enable_irq_wake(phydev->irq); in bcm_phy_set_wol()
1025 void bcm_phy_get_wol(struct phy_device *phydev, struct ethtool_wolinfo *wol) in bcm_phy_get_wol() argument
1027 struct net_device *ndev = phydev->attached_dev; in bcm_phy_get_wol()
1036 ret = bcm_phy_read_exp(phydev, BCM54XX_WOL_MAIN_CTL); in bcm_phy_get_wol()
1046 ret = bcm_phy_read_exp(phydev, in bcm_phy_get_wol()
1085 int bcm_phy_led_brightness_set(struct phy_device *phydev, in bcm_phy_led_brightness_set() argument
1099 ret = bcm_phy_read_shadow(phydev, reg); in bcm_phy_led_brightness_set()
1108 return bcm_phy_write_shadow(phydev, reg, ret); in bcm_phy_led_brightness_set()
1112 int bcm_setup_lre_master_slave(struct phy_device *phydev) in bcm_setup_lre_master_slave() argument
1116 switch (phydev->master_slave_set) { in bcm_setup_lre_master_slave()
1128 phydev_warn(phydev, "Unsupported Master/Slave mode\n"); in bcm_setup_lre_master_slave()
1132 return phy_modify_changed(phydev, MII_BCM54XX_LRECR, LRECR_MASTER, ctl); in bcm_setup_lre_master_slave()
1136 int bcm_config_lre_aneg(struct phy_device *phydev, bool changed) in bcm_config_lre_aneg() argument
1140 if (genphy_config_eee_advert(phydev)) in bcm_config_lre_aneg()
1143 err = bcm_setup_lre_master_slave(phydev); in bcm_config_lre_aneg()
1149 if (phydev->autoneg != AUTONEG_ENABLE) in bcm_config_lre_aneg()
1150 return bcm_setup_lre_forced(phydev); in bcm_config_lre_aneg()
1152 err = bcm_config_lre_advert(phydev); in bcm_config_lre_aneg()
1158 return genphy_check_and_restart_aneg(phydev, changed); in bcm_config_lre_aneg()
1165 * @phydev: target phy_device struct
1173 int bcm_config_lre_advert(struct phy_device *phydev) in bcm_config_lre_advert() argument
1175 u32 adv = bcm_linkmode_adv_to_lre_adv_t(phydev->advertising); in bcm_config_lre_advert()
1178 return phy_modify_changed(phydev, MII_BCM54XX_LREANAA, in bcm_config_lre_advert()