Lines Matching refs:mgr

61 	drm_##__level##__type((__tunnel)->group->mgr->dev, \
83 drm_dbg_kms((__group)->mgr->dev, \
175 struct drm_dp_tunnel_mgr *mgr; member
314 lookup_or_alloc_group(struct drm_dp_tunnel_mgr *mgr, u8 drv_group_id) in lookup_or_alloc_group() argument
319 for (i = 0; i < mgr->group_count; i++) { in lookup_or_alloc_group()
325 mgr->groups[i].drv_group_id == drv_group_id) in lookup_or_alloc_group()
326 return &mgr->groups[i]; in lookup_or_alloc_group()
328 if (!group && !mgr->groups[i].active) in lookup_or_alloc_group()
329 group = &mgr->groups[i]; in lookup_or_alloc_group()
333 drm_dbg_kms(mgr->dev, in lookup_or_alloc_group()
354 struct drm_dp_tunnel_mgr *mgr = group->mgr; in free_group() local
356 if (drm_WARN_ON(mgr->dev, !list_empty(&group->tunnels))) in free_group()
393 ref_tracker_alloc(&tunnel->group->mgr->ref_tracker, in track_tunnel_ref()
400 ref_tracker_free(&tunnel->group->mgr->ref_tracker, in untrack_tunnel_ref()
455 static bool add_tunnel_to_group(struct drm_dp_tunnel_mgr *mgr, in add_tunnel_to_group() argument
461 group = lookup_or_alloc_group(mgr, drv_group_id); in add_tunnel_to_group()
472 create_tunnel(struct drm_dp_tunnel_mgr *mgr, in create_tunnel() argument
512 if (!add_tunnel_to_group(mgr, drv_group_id, tunnel)) { in create_tunnel()
550 static bool tunnel_regs_are_valid(struct drm_dp_tunnel_mgr *mgr, in tunnel_regs_are_valid() argument
560 drm_dbg_kms(mgr->dev, in tunnel_regs_are_valid()
566 drm_dbg_kms(mgr->dev, in tunnel_regs_are_valid()
575 drm_dbg_kms(mgr->dev, in tunnel_regs_are_valid()
581 drm_dbg_kms(mgr->dev, in tunnel_regs_are_valid()
589 drm_dbg_kms(mgr->dev, in tunnel_regs_are_valid()
596 drm_dbg_kms(mgr->dev, in tunnel_regs_are_valid()
603 drm_dbg_kms(mgr->dev, in tunnel_regs_are_valid()
693 if (!tunnel_regs_are_valid(tunnel->group->mgr, regs, flags)) in read_and_verify_tunnel_regs()
758 drm_dp_tunnel_detect(struct drm_dp_tunnel_mgr *mgr, in drm_dp_tunnel_detect() argument
774 if (!tunnel_regs_are_valid(mgr, &regs, SKIP_DPRX_CAPS_CHECK)) in drm_dp_tunnel_detect()
777 tunnel = create_tunnel(mgr, aux, &regs); in drm_dp_tunnel_detect()
815 if (drm_WARN_ON(tunnel->group->mgr->dev, tunnel->destroyed)) in drm_dp_tunnel_destroy()
1075 struct drm_dp_tunnel_mgr *mgr = tunnel->group->mgr; in allocate_tunnel_bw() local
1090 if (drm_WARN_ON(mgr->dev, request_bw > MAX_DP_REQUEST_BW)) { in allocate_tunnel_bw()
1105 add_wait_queue(&mgr->bw_req_queue, &wait); in allocate_tunnel_bw()
1131 remove_wait_queue(&mgr->bw_req_queue, &wait); in allocate_tunnel_bw()
1300 int drm_dp_tunnel_handle_irq(struct drm_dp_tunnel_mgr *mgr, struct drm_dp_aux *aux) in drm_dp_tunnel_handle_irq() argument
1308 wake_up_all(&mgr->bw_req_queue); in drm_dp_tunnel_handle_irq()
1582 static bool init_group(struct drm_dp_tunnel_mgr *mgr, struct drm_dp_tunnel_group *group) in init_group() argument
1592 group->mgr = mgr; in init_group()
1596 drm_atomic_private_obj_init(mgr->dev, &group->base, &group_state->base, in init_group()
1614 drm_WARN(to_group(group_state->base.obj)->mgr->dev, in check_unique_stream_ids()
1710 if (drm_WARN_ON(tunnel->group->mgr->dev, in drm_dp_tunnel_atomic_set_stream_bw()
1876 static void destroy_mgr(struct drm_dp_tunnel_mgr *mgr) in destroy_mgr() argument
1880 for (i = 0; i < mgr->group_count; i++) { in destroy_mgr()
1881 cleanup_group(&mgr->groups[i]); in destroy_mgr()
1882 drm_WARN_ON(mgr->dev, !list_empty(&mgr->groups[i].tunnels)); in destroy_mgr()
1886 ref_tracker_dir_exit(&mgr->ref_tracker); in destroy_mgr()
1889 kfree(mgr->groups); in destroy_mgr()
1890 kfree(mgr); in destroy_mgr()
1906 struct drm_dp_tunnel_mgr *mgr; in drm_dp_tunnel_mgr_create() local
1909 mgr = kzalloc(sizeof(*mgr), GFP_KERNEL); in drm_dp_tunnel_mgr_create()
1910 if (!mgr) in drm_dp_tunnel_mgr_create()
1913 mgr->dev = dev; in drm_dp_tunnel_mgr_create()
1914 init_waitqueue_head(&mgr->bw_req_queue); in drm_dp_tunnel_mgr_create()
1916 mgr->groups = kcalloc(max_group_count, sizeof(*mgr->groups), GFP_KERNEL); in drm_dp_tunnel_mgr_create()
1917 if (!mgr->groups) { in drm_dp_tunnel_mgr_create()
1918 kfree(mgr); in drm_dp_tunnel_mgr_create()
1924 ref_tracker_dir_init(&mgr->ref_tracker, 16, "drm_dptun"); in drm_dp_tunnel_mgr_create()
1928 if (!init_group(mgr, &mgr->groups[i])) { in drm_dp_tunnel_mgr_create()
1929 destroy_mgr(mgr); in drm_dp_tunnel_mgr_create()
1934 mgr->group_count++; in drm_dp_tunnel_mgr_create()
1937 return mgr; in drm_dp_tunnel_mgr_create()
1947 void drm_dp_tunnel_mgr_destroy(struct drm_dp_tunnel_mgr *mgr) in drm_dp_tunnel_mgr_destroy() argument
1949 destroy_mgr(mgr); in drm_dp_tunnel_mgr_destroy()