Lines Matching refs:group

59 static void sparx5_sdlb_group_disable(struct sparx5 *sparx5, u32 group)  in sparx5_sdlb_group_disable()  argument
63 ANA_AC_SDLB_PUP_CTRL(group)); in sparx5_sdlb_group_disable()
66 static void sparx5_sdlb_group_enable(struct sparx5 *sparx5, u32 group) in sparx5_sdlb_group_enable() argument
70 ANA_AC_SDLB_PUP_CTRL(group)); in sparx5_sdlb_group_enable()
73 static u32 sparx5_sdlb_group_get_first(struct sparx5 *sparx5, u32 group) in sparx5_sdlb_group_get_first() argument
77 val = spx5_rd(sparx5, ANA_AC_SDLB_XLB_START(group)); in sparx5_sdlb_group_get_first()
82 static u32 sparx5_sdlb_group_get_next(struct sparx5 *sparx5, u32 group, in sparx5_sdlb_group_get_next() argument
92 static bool sparx5_sdlb_group_is_first(struct sparx5 *sparx5, u32 group, in sparx5_sdlb_group_is_first() argument
95 return lb == sparx5_sdlb_group_get_first(sparx5, group); in sparx5_sdlb_group_is_first()
98 static bool sparx5_sdlb_group_is_last(struct sparx5 *sparx5, u32 group, in sparx5_sdlb_group_is_last() argument
101 return lb == sparx5_sdlb_group_get_next(sparx5, group, lb); in sparx5_sdlb_group_is_last()
104 static bool sparx5_sdlb_group_is_empty(struct sparx5 *sparx5, u32 group) in sparx5_sdlb_group_is_empty() argument
108 val = spx5_rd(sparx5, ANA_AC_SDLB_PUP_CTRL(group)); in sparx5_sdlb_group_is_empty()
113 static u32 sparx5_sdlb_group_get_last(struct sparx5 *sparx5, u32 group) in sparx5_sdlb_group_get_last() argument
117 itr = sparx5_sdlb_group_get_first(sparx5, group); in sparx5_sdlb_group_get_last()
120 next = sparx5_sdlb_group_get_next(sparx5, group, itr); in sparx5_sdlb_group_get_last()
128 static bool sparx5_sdlb_group_is_singular(struct sparx5 *sparx5, u32 group) in sparx5_sdlb_group_is_singular() argument
130 if (sparx5_sdlb_group_is_empty(sparx5, group)) in sparx5_sdlb_group_is_singular()
133 return sparx5_sdlb_group_get_first(sparx5, group) == in sparx5_sdlb_group_is_singular()
134 sparx5_sdlb_group_get_last(sparx5, group); in sparx5_sdlb_group_is_singular()
137 static int sparx5_sdlb_group_get_adjacent(struct sparx5 *sparx5, u32 group, in sparx5_sdlb_group_get_adjacent() argument
143 *first = sparx5_sdlb_group_get_first(sparx5, group); in sparx5_sdlb_group_get_adjacent()
149 *next = sparx5_sdlb_group_get_next(sparx5, group, itr); in sparx5_sdlb_group_get_adjacent()
162 static int sparx5_sdlb_group_get_count(struct sparx5 *sparx5, u32 group) in sparx5_sdlb_group_get_count() argument
167 itr = sparx5_sdlb_group_get_first(sparx5, group); in sparx5_sdlb_group_get_count()
170 next = sparx5_sdlb_group_get_next(sparx5, group, itr); in sparx5_sdlb_group_get_count()
181 const struct sparx5_sdlb_group *group; in sparx5_sdlb_group_get_by_rate() local
188 group = &sdlb_groups[i]; in sparx5_sdlb_group_get_by_rate()
196 if (count > ((group->pup_interval / 4) - 1)) in sparx5_sdlb_group_get_by_rate()
199 if (rate_bps < group->max_rate) in sparx5_sdlb_group_get_by_rate()
206 int sparx5_sdlb_group_get_by_index(struct sparx5 *sparx5, u32 idx, u32 *group) in sparx5_sdlb_group_get_by_index() argument
221 *group = i; in sparx5_sdlb_group_get_by_index()
234 static int sparx5_sdlb_group_link(struct sparx5 *sparx5, u32 group, u32 idx, in sparx5_sdlb_group_link() argument
238 sparx5_sdlb_group_disable(sparx5, group); in sparx5_sdlb_group_link()
245 ANA_AC_SDLB_XLB_NEXT_LBGRP_SET(group), in sparx5_sdlb_group_link()
250 ANA_AC_SDLB_XLB_START(group)); in sparx5_sdlb_group_link()
253 sparx5_sdlb_group_enable(sparx5, group); in sparx5_sdlb_group_link()
258 int sparx5_sdlb_group_add(struct sparx5 *sparx5, u32 group, u32 idx) in sparx5_sdlb_group_add() argument
265 if (sparx5_sdlb_group_is_empty(sparx5, group)) in sparx5_sdlb_group_add()
268 next = sparx5_sdlb_group_get_first(sparx5, group); in sparx5_sdlb_group_add()
270 return sparx5_sdlb_group_link(sparx5, group, idx, first, next, false); in sparx5_sdlb_group_add()
273 int sparx5_sdlb_group_del(struct sparx5 *sparx5, u32 group, u32 idx) in sparx5_sdlb_group_del() argument
278 if (sparx5_sdlb_group_get_adjacent(sparx5, group, idx, &prev, &next, in sparx5_sdlb_group_del()
281 __LINE__, idx, group); in sparx5_sdlb_group_del()
285 if (sparx5_sdlb_group_is_singular(sparx5, group)) { in sparx5_sdlb_group_del()
287 } else if (sparx5_sdlb_group_is_last(sparx5, group, idx)) { in sparx5_sdlb_group_del()
291 } else if (sparx5_sdlb_group_is_first(sparx5, group, idx)) { in sparx5_sdlb_group_del()
300 return sparx5_sdlb_group_link(sparx5, group, idx, first, next, empty); in sparx5_sdlb_group_del()
307 struct sparx5_sdlb_group *group; in sparx5_sdlb_group_init() local
310 group = &sdlb_groups[idx]; in sparx5_sdlb_group_init()
322 group->pup_interval = in sparx5_sdlb_group_init()
325 group->frame_size = frame_size; in sparx5_sdlb_group_init()
327 spx5_wr(ANA_AC_SDLB_PUP_INTERVAL_PUP_INTERVAL_SET(group->pup_interval), in sparx5_sdlb_group_init()