Lines Matching refs:tunnel_state

1384 	struct drm_dp_tunnel_state *tunnel_state;
1390 tunnel_state = kzalloc(sizeof(*tunnel_state), GFP_KERNEL);
1391 if (!tunnel_state)
1394 tunnel_state->group_state = group_state;
1396 drm_dp_tunnel_ref_get(tunnel, &tunnel_state->tunnel_ref);
1398 INIT_LIST_HEAD(&tunnel_state->node);
1399 list_add(&tunnel_state->node, &group_state->tunnel_states);
1401 return tunnel_state;
1404 static void free_tunnel_state(struct drm_dp_tunnel_state *tunnel_state)
1406 tun_dbg_atomic(tunnel_state->tunnel_ref.tunnel,
1408 tunnel_state->tunnel_ref.tunnel);
1410 list_del(&tunnel_state->node);
1412 kfree(tunnel_state->stream_bw);
1413 drm_dp_tunnel_ref_put(&tunnel_state->tunnel_ref);
1415 kfree(tunnel_state);
1420 struct drm_dp_tunnel_state *tunnel_state;
1423 for_each_tunnel_state_safe(group_state, tunnel_state, tunnel_state_tmp)
1424 free_tunnel_state(tunnel_state);
1433 struct drm_dp_tunnel_state *tunnel_state;
1435 for_each_tunnel_state(group_state, tunnel_state)
1436 if (tunnel_state->tunnel_ref.tunnel == tunnel)
1437 return tunnel_state;
1446 struct drm_dp_tunnel_state *tunnel_state;
1448 tunnel_state = get_tunnel_state(group_state, tunnel);
1449 if (tunnel_state)
1450 return tunnel_state;
1459 struct drm_dp_tunnel_state *tunnel_state;
1469 for_each_tunnel_state(to_group_state(obj->state), tunnel_state) {
1473 tunnel_state->tunnel_ref.tunnel);
1477 new_tunnel_state->stream_mask = tunnel_state->stream_mask;
1478 new_tunnel_state->stream_bw = kmemdup(tunnel_state->stream_bw,
1479 sizeof(*tunnel_state->stream_bw) *
1480 hweight32(tunnel_state->stream_mask),
1520 struct drm_dp_tunnel_state *tunnel_state;
1526 tunnel_state = get_or_add_tunnel_state(group_state, tunnel);
1527 if (!tunnel_state)
1530 return tunnel_state;
1610 const struct drm_dp_tunnel_state *tunnel_state;
1613 for_each_tunnel_state(group_state, tunnel_state) {
1615 tunnel_state->stream_mask & stream_mask,
1617 tunnel_state->tunnel_ref.tunnel->name,
1618 tunnel_state->stream_mask,
1621 stream_mask |= tunnel_state->stream_mask;
1635 static int resize_bw_array(struct drm_dp_tunnel_state *tunnel_state,
1653 tunnel_state->stream_bw[stream_id_to_idx(old_mask, id)];
1655 kfree(tunnel_state->stream_bw);
1656 tunnel_state->stream_bw = new_bws;
1657 tunnel_state->stream_mask = new_mask;
1662 static int set_stream_bw(struct drm_dp_tunnel_state *tunnel_state,
1667 err = resize_bw_array(tunnel_state,
1668 tunnel_state->stream_mask,
1669 tunnel_state->stream_mask | BIT(stream_id));
1673 tunnel_state->stream_bw[stream_id_to_idx(tunnel_state->stream_mask, stream_id)] = bw;
1678 static int clear_stream_bw(struct drm_dp_tunnel_state *tunnel_state,
1681 if (!(tunnel_state->stream_mask & ~BIT(stream_id))) {
1682 free_tunnel_state(tunnel_state);
1686 return resize_bw_array(tunnel_state,
1687 tunnel_state->stream_mask,
1688 tunnel_state->stream_mask & ~BIT(stream_id));
1707 struct drm_dp_tunnel_state *tunnel_state;
1711 stream_id > BITS_PER_TYPE(tunnel_state->stream_mask)))
1723 tunnel_state = get_tunnel_state(new_group_state, tunnel);
1724 if (!tunnel_state)
1727 return clear_stream_bw(tunnel_state, stream_id);
1730 tunnel_state = get_or_add_tunnel_state(new_group_state, tunnel);
1731 if (drm_WARN_ON(state->dev, !tunnel_state))
1734 err = set_stream_bw(tunnel_state, stream_id, bw);
1746 * @tunnel_state: Atomic state of the queried tunnel
1753 int drm_dp_tunnel_atomic_get_required_bw(const struct drm_dp_tunnel_state *tunnel_state)
1758 if (!tunnel_state || !tunnel_state->stream_mask)
1761 for (i = 0; i < hweight32(tunnel_state->stream_mask); i++)
1762 tunnel_bw += tunnel_state->stream_bw[i];
1784 struct drm_dp_tunnel_state *tunnel_state;
1791 for_each_tunnel_state(group_state, tunnel_state)
1792 *stream_mask |= tunnel_state->stream_mask;