Lines Matching refs:cursor
188 drm_dbg(plane->dev, "unsupported cursor size: %ux%u\n",
194 drm_dbg(plane->dev, "unsupported cursor size: %ux%u\n",
223 struct lsdc_cursor *cursor = to_lsdc_cursor(plane);
224 const struct lsdc_cursor_plane_ops *ops = cursor->ops;
258 ops->update_position(cursor, new_state->crtc_x, new_state->crtc_y);
260 ops->update_cfg(cursor, cursor_size, CURSOR_FORMAT_ARGB8888);
263 ops->update_bo_addr(cursor, lsdc_fb_base_addr(new_fb));
267 /* ls7a1000 cursor plane helpers */
285 drm_dbg(plane->dev, "unsupported cursor size: %ux%u\n",
302 struct lsdc_cursor *cursor = to_lsdc_cursor(plane);
307 const struct lsdc_cursor_plane_ops *ops = cursor->ops;
313 ops->update_position(cursor, new_plane_state->crtc_x, new_plane_state->crtc_y);
316 ops->update_bo_addr(cursor, addr);
318 ops->update_cfg(cursor, CURSOR_SIZE_32X32, CURSOR_FORMAT_ARGB8888);
324 struct lsdc_cursor *cursor = to_lsdc_cursor(plane);
325 const struct lsdc_cursor_plane_ops *ops = cursor->ops;
327 ops->update_cfg(cursor, CURSOR_SIZE_32X32, CURSOR_FORMAT_DISABLE);
340 /* ls7a2000 cursor plane helpers */
358 drm_dbg(plane->dev, "unsupported cursor size: %ux%u\n",
364 drm_dbg(plane->dev, "unsupported cursor size: %ux%u\n",
378 /* Update the format, size and location of the cursor */
383 struct lsdc_cursor *cursor = to_lsdc_cursor(plane);
388 const struct lsdc_cursor_plane_ops *ops = cursor->ops;
394 ops->update_position(cursor, new_plane_state->crtc_x, new_plane_state->crtc_y);
399 ops->update_bo_addr(cursor, addr);
414 ops->update_cfg(cursor, cursor_size, CURSOR_FORMAT_ARGB8888);
420 struct lsdc_cursor *cursor = to_lsdc_cursor(plane);
421 const struct lsdc_cursor_plane_ops *hw_ops = cursor->ops;
423 hw_ops->update_cfg(cursor, CURSOR_SIZE_64X64, CURSOR_FORMAT_DISABLE);
566 * Update location, format, enable and disable state of the cursor,
567 * For those who have two hardware cursor, let cursor 0 is attach to CRTC-0,
568 * cursor 1 is attach to CRTC-1. Compositing the primary plane and cursor
569 * plane is automatically done by hardware, the cursor is alway on the top of
571 * be changed. For those old DC who has only one hardware cursor, we made it
575 /* cursor plane 0 (for pipe 0) related hardware ops */
577 static void lsdc_cursor0_update_bo_addr(struct lsdc_cursor *cursor, u64 addr)
579 struct lsdc_device *ldev = cursor->ldev;
586 static void lsdc_cursor0_update_position(struct lsdc_cursor *cursor, int x, int y)
588 struct lsdc_device *ldev = cursor->ldev;
599 static void lsdc_cursor0_update_cfg(struct lsdc_cursor *cursor,
603 struct lsdc_device *ldev = cursor->ldev;
613 /* cursor plane 1 (for pipe 1) related hardware ops */
615 static void lsdc_cursor1_update_bo_addr(struct lsdc_cursor *cursor, u64 addr)
617 struct lsdc_device *ldev = cursor->ldev;
624 static void lsdc_cursor1_update_position(struct lsdc_cursor *cursor, int x, int y)
626 struct lsdc_device *ldev = cursor->ldev;
637 static void lsdc_cursor1_update_cfg(struct lsdc_cursor *cursor,
641 struct lsdc_device *ldev = cursor->ldev;
666 /* Quirks for cursor 1, only for old loongson display controller */
668 static void lsdc_cursor1_update_bo_addr_quirk(struct lsdc_cursor *cursor, u64 addr)
670 struct lsdc_device *ldev = cursor->ldev;
677 static void lsdc_cursor1_update_position_quirk(struct lsdc_cursor *cursor, int x, int y)
679 struct lsdc_device *ldev = cursor->ldev;
690 static void lsdc_cursor1_update_cfg_quirk(struct lsdc_cursor *cursor,
694 struct lsdc_device *ldev = cursor->ldev;
749 struct lsdc_cursor *cursor = to_lsdc_cursor(plane);
758 "ls-cursor-plane-%u", index);
762 cursor->ldev = to_lsdc(ddev);
763 cursor->ops = &ls7a1000_cursor_hw_ops[index];
774 struct lsdc_cursor *cursor = to_lsdc_cursor(plane);
783 "ls-cursor-plane-%u", index);
787 cursor->ldev = to_lsdc(ddev);
788 cursor->ops = &ls7a2000_cursor_hw_ops[index];