Lines Matching refs:eacr
611 static inline int etr_mode_is_pps(struct etr_eacr eacr) in etr_mode_is_pps() argument
613 return eacr.es && !eacr.sl; in etr_mode_is_pps()
619 static inline int etr_mode_is_etr(struct etr_eacr eacr) in etr_mode_is_etr() argument
621 return eacr.es && eacr.sl; in etr_mode_is_etr()
685 if (a1->esw.eacr.e0 != a2->esw.eacr.e0 || in etr_aib_follows()
686 a1->esw.eacr.e1 != a2->esw.eacr.e1) in etr_aib_follows()
843 static struct etr_eacr etr_handle_events(struct etr_eacr eacr) in etr_handle_events() argument
846 eacr.es = 0; in etr_handle_events()
848 eacr.es = eacr.sl = 0; in etr_handle_events()
853 if (eacr.e0) in etr_handle_events()
860 eacr.p0 = etr_port0_online; in etr_handle_events()
861 if (!eacr.p0) in etr_handle_events()
862 eacr.e0 = 0; in etr_handle_events()
866 if (eacr.e1) in etr_handle_events()
873 eacr.p1 = etr_port1_online; in etr_handle_events()
874 if (!eacr.p1) in etr_handle_events()
875 eacr.e1 = 0; in etr_handle_events()
879 return eacr; in etr_handle_events()
910 struct etr_eacr eacr) in etr_handle_update() argument
913 if (!eacr.e0 && !eacr.e1) in etr_handle_update()
914 return eacr; in etr_handle_update()
919 if (eacr.p0 && !etr_port0_uptodate) { in etr_handle_update()
926 if (eacr.p1 && !etr_port1_uptodate) { in etr_handle_update()
937 if (!eacr.es || !check_sync_clock()) in etr_handle_update()
938 return eacr; in etr_handle_update()
946 if (eacr.p0 && !etr_port0_uptodate) { in etr_handle_update()
950 if (eacr.p1 && !etr_port1_uptodate) { in etr_handle_update()
959 if ((eacr.p0 && !etr_port0_uptodate) || in etr_handle_update()
960 (eacr.p1 && !etr_port1_uptodate)) in etr_handle_update()
961 eacr.dp ^= 1; in etr_handle_update()
963 eacr.dp = 0; in etr_handle_update()
965 return eacr; in etr_handle_update()
972 static void etr_update_eacr(struct etr_eacr eacr) in etr_update_eacr() argument
976 if (memcmp(&etr_eacr, &eacr, sizeof(eacr)) == 0) in etr_update_eacr()
983 dp_changed = etr_eacr.e0 > eacr.e0 || etr_eacr.e1 > eacr.e1 || in etr_update_eacr()
984 (etr_eacr.dp ^ eacr.dp) != 0; in etr_update_eacr()
985 etr_eacr = eacr; in etr_update_eacr()
999 struct etr_eacr eacr; in etr_work_fn() local
1007 eacr = etr_eacr; in etr_work_fn()
1010 eacr = etr_handle_events(eacr); in etr_work_fn()
1013 eacr.ea = eacr.p0 || eacr.p1; in etr_work_fn()
1014 if (!eacr.ea) { in etr_work_fn()
1016 eacr.dp = eacr.es = eacr.sl = 0; in etr_work_fn()
1019 etr_update_eacr(eacr); in etr_work_fn()
1033 eacr = etr_handle_update(&aib, eacr); in etr_work_fn()
1048 if (eacr.p0 && aib.esw.psc0 == etr_lpsc_pps_mode) { in etr_work_fn()
1049 eacr.sl = 0; in etr_work_fn()
1050 eacr.e0 = 1; in etr_work_fn()
1052 eacr.es = 0; in etr_work_fn()
1053 if (!eacr.es || !eacr.p1 || aib.esw.psc1 != etr_lpsc_pps_mode) in etr_work_fn()
1054 eacr.e1 = 0; in etr_work_fn()
1057 eacr.e1 = 1; in etr_work_fn()
1060 } else if (eacr.p1 && aib.esw.psc1 == etr_lpsc_pps_mode) { in etr_work_fn()
1061 eacr.sl = 0; in etr_work_fn()
1062 eacr.e0 = 0; in etr_work_fn()
1063 eacr.e1 = 1; in etr_work_fn()
1065 eacr.es = 0; in etr_work_fn()
1068 } else if (eacr.p0 && aib.esw.psc0 == etr_lpsc_operational_step) { in etr_work_fn()
1069 eacr.sl = 1; in etr_work_fn()
1070 eacr.e0 = 1; in etr_work_fn()
1072 eacr.es = 0; in etr_work_fn()
1073 if (!eacr.es || !eacr.p1 || in etr_work_fn()
1075 eacr.e1 = 0; in etr_work_fn()
1078 eacr.e1 = 1; in etr_work_fn()
1081 } else if (eacr.p1 && aib.esw.psc1 == etr_lpsc_operational_step) { in etr_work_fn()
1082 eacr.sl = 1; in etr_work_fn()
1083 eacr.e0 = 0; in etr_work_fn()
1084 eacr.e1 = 1; in etr_work_fn()
1086 eacr.es = 0; in etr_work_fn()
1091 eacr.es = eacr.sl = 0; in etr_work_fn()
1099 if ((eacr.es && check_sync_clock()) || sync_port < 0) { in etr_work_fn()
1100 etr_update_eacr(eacr); in etr_work_fn()
1109 eacr.dp = 0; in etr_work_fn()
1110 eacr.es = 1; in etr_work_fn()
1119 etr_update_eacr(eacr); in etr_work_fn()
1123 eacr.es = 0; in etr_work_fn()
1124 etr_update_eacr(eacr); in etr_work_fn()