Lines Matching full:hvs
9 * Each DRM plane is a layer of pixels being scanned out by the HVS.
11 * At atomic modeset check time, we compute the HVS display element
15 * into the region of the HVS that it has allocated for us.
35 u32 hvs; /* HVS_FORMAT_* */ member
42 .hvs = HVS_PIXEL_FORMAT_RGBA8888,
48 .hvs = HVS_PIXEL_FORMAT_RGBA8888,
54 .hvs = HVS_PIXEL_FORMAT_RGBA8888,
60 .hvs = HVS_PIXEL_FORMAT_RGBA8888,
66 .hvs = HVS_PIXEL_FORMAT_RGB565,
72 .hvs = HVS_PIXEL_FORMAT_RGB565,
78 .hvs = HVS_PIXEL_FORMAT_RGBA5551,
84 .hvs = HVS_PIXEL_FORMAT_RGBA5551,
90 .hvs = HVS_PIXEL_FORMAT_RGB888,
96 .hvs = HVS_PIXEL_FORMAT_RGB888,
102 .hvs = HVS_PIXEL_FORMAT_YCBCR_YUV422_3PLANE,
108 .hvs = HVS_PIXEL_FORMAT_YCBCR_YUV422_3PLANE,
114 .hvs = HVS_PIXEL_FORMAT_YCBCR_YUV422_3PLANE,
120 .hvs = HVS_PIXEL_FORMAT_YCBCR_YUV422_3PLANE,
126 .hvs = HVS_PIXEL_FORMAT_YCBCR_YUV420_3PLANE,
132 .hvs = HVS_PIXEL_FORMAT_YCBCR_YUV420_3PLANE,
138 .hvs = HVS_PIXEL_FORMAT_YCBCR_YUV420_2PLANE,
144 .hvs = HVS_PIXEL_FORMAT_YCBCR_YUV420_2PLANE,
150 .hvs = HVS_PIXEL_FORMAT_YCBCR_YUV422_2PLANE,
156 .hvs = HVS_PIXEL_FORMAT_YCBCR_YUV422_2PLANE,
162 .hvs = HVS_PIXEL_FORMAT_YCBCR_10BIT,
168 .hvs = HVS_PIXEL_FORMAT_RGBA1010102,
174 .hvs = HVS_PIXEL_FORMAT_RGBA1010102,
180 .hvs = HVS_PIXEL_FORMAT_RGBA1010102,
186 .hvs = HVS_PIXEL_FORMAT_RGBA1010102,
192 .hvs = HVS_PIXEL_FORMAT_RGB332,
198 .hvs = HVS_PIXEL_FORMAT_RGB332,
204 .hvs = HVS_PIXEL_FORMAT_RGBA4444,
210 .hvs = HVS_PIXEL_FORMAT_RGBA4444,
216 .hvs = HVS_PIXEL_FORMAT_RGBA4444,
222 .hvs = HVS_PIXEL_FORMAT_RGBA4444,
228 .hvs = HVS_PIXEL_FORMAT_RGBA4444,
234 .hvs = HVS_PIXEL_FORMAT_RGBA4444,
240 .hvs = HVS_PIXEL_FORMAT_RGBA4444,
246 .hvs = HVS_PIXEL_FORMAT_RGBA4444,
282 struct vc4_hvs *hvs = vc4->hvs; in vc4_plane_duplicate_state() local
297 refcount_inc(&hvs->upm_refcounts[vc4_state->upm_handle[i]].refcount); in vc4_plane_duplicate_state()
318 static void vc4_plane_release_upm_ida(struct vc4_hvs *hvs, unsigned int upm_handle) in vc4_plane_release_upm_ida() argument
320 struct vc4_upm_refcounts *refcount = &hvs->upm_refcounts[upm_handle]; in vc4_plane_release_upm_ida()
323 spin_lock_irqsave(&hvs->mm_lock, irqflags); in vc4_plane_release_upm_ida()
325 spin_unlock_irqrestore(&hvs->mm_lock, irqflags); in vc4_plane_release_upm_ida()
330 ida_free(&hvs->upm_handles, upm_handle); in vc4_plane_release_upm_ida()
337 struct vc4_hvs *hvs = vc4->hvs; in vc4_plane_destroy_state() local
344 spin_lock_irqsave(&hvs->mm_lock, irqflags); in vc4_plane_destroy_state()
346 spin_unlock_irqrestore(&hvs->mm_lock, irqflags); in vc4_plane_destroy_state()
355 refcount = &hvs->upm_refcounts[vc4_state->upm_handle[i]]; in vc4_plane_destroy_state()
358 vc4_plane_release_upm_ida(hvs, vc4_state->upm_handle[i]); in vc4_plane_destroy_state()
882 /* The HVS is able to process 2 pixels/cycle when scaling the source, in vc4_plane_calc_load()
887 * HVS load is expressed in clk-cycles/sec (AKA Hz). in vc4_plane_calc_load()
953 /* Allocate the LBM memory that the HVS will use for temporary in vc4_plane_allocate_lbm()
959 spin_lock_irqsave(&vc4->hvs->mm_lock, irqflags); in vc4_plane_allocate_lbm()
960 ret = drm_mm_insert_node_generic(&vc4->hvs->lbm_mm, in vc4_plane_allocate_lbm()
964 spin_unlock_irqrestore(&vc4->hvs->mm_lock, irqflags); in vc4_plane_allocate_lbm()
984 struct vc4_hvs *hvs = vc4->hvs; in vc6_plane_allocate_upm() local
1005 hvs->upm_refcounts[upm_handle].size == upm_size) { in vc6_plane_allocate_upm()
1012 refcount_dec_and_test(&hvs->upm_refcounts[upm_handle].refcount)) { in vc6_plane_allocate_upm()
1013 vc4_plane_release_upm_ida(hvs, upm_handle); in vc6_plane_allocate_upm()
1017 upm_handle = ida_alloc_range(&hvs->upm_handles, 1, in vc6_plane_allocate_upm()
1026 refcount = &hvs->upm_refcounts[upm_handle]; in vc6_plane_allocate_upm()
1030 spin_lock_irqsave(&hvs->mm_lock, irqflags); in vc6_plane_allocate_upm()
1031 ret = drm_mm_insert_node_generic(&hvs->upm_mm, in vc6_plane_allocate_upm()
1035 spin_unlock_irqrestore(&hvs->mm_lock, irqflags); in vc6_plane_allocate_upm()
1039 ida_free(&hvs->upm_handles, upm_handle); in vc6_plane_allocate_upm()
1045 refcount = &hvs->upm_refcounts[upm_handle]; in vc6_plane_allocate_upm()
1063 struct vc4_hvs *hvs = vc4->hvs; in vc6_plane_free_upm() local
1075 if (refcount_dec_and_test(&hvs->upm_refcounts[upm_handle].refcount)) in vc6_plane_free_upm()
1076 vc4_plane_release_upm_ida(hvs, upm_handle); in vc6_plane_free_upm()
1224 u32 hvs_format = format->hvs; in vc4_plane_mode_set()
1307 * SCALER_PITCH0_TILE_Y_OFFSET tells HVS how to walk from that in vc4_plane_mode_set()
1317 * SCALER_PITCH0_TILE_LINE_DIR flag to tell HVS that all lines in vc4_plane_mode_set()
1521 /* Position Word 3: Context. Written by the HVS. */ in vc4_plane_mode_set()
1575 /* Position Word 3: Context. Written by the HVS. */ in vc4_plane_mode_set()
1592 /* Pointer Context Word 0/1/2: Written by the HVS */ in vc4_plane_mode_set()
1660 u32 kernel = VC4_SET_FIELD(vc4->hvs->mitchell_netravali_filter.start, in vc4_plane_mode_set()
1754 u32 hvs_format = format->hvs; in vc6_plane_mode_set()
2073 VC4_SET_FIELD(vc4->hvs->mitchell_netravali_filter.start, in vc6_plane_mode_set()
2327 * because that would smash the context data that the HVS is in vc4_plane_atomic_async_update()
2583 * the HVS (16k) and how small an plane can be (28 bytes). in vc4_plane_create_additional_planes()