include/drm/intel/display_parent_interface.h

Source file repositories/reference/linux-study-clean/include/drm/intel/display_parent_interface.h

File Facts

System
Linux kernel
Corpus path
include/drm/intel/display_parent_interface.h
Extension
.h
Size
11243 bytes
Lines
309
Domain
Repository Root And Misc
Bucket
include
Inferred role
Repository Root And Misc: implementation source
Status
source implementation candidate

Why This File Exists

Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.

Dependency Surface

Detected Declarations

Annotated Snippet

struct intel_fb_pin_params {
	const struct i915_gtt_view *view;
	unsigned int alignment;
	unsigned int phys_alignment;
	unsigned int vtd_guard;
	bool needs_cpu_lmem_access;
	bool needs_low_address;
	bool needs_physical;
	bool needs_fence;
};

/* Keep struct definitions sorted */

struct intel_display_bo_interface {
	bool (*is_tiled)(struct drm_gem_object *obj); /* Optional */
	bool (*is_userptr)(struct drm_gem_object *obj); /* Optional */
	bool (*is_shmem)(struct drm_gem_object *obj); /* Optional */
	bool (*is_protected)(struct drm_gem_object *obj);
	int (*key_check)(struct drm_gem_object *obj);
	int (*fb_mmap)(struct drm_gem_object *obj, struct vm_area_struct *vma);
	int (*read_from_page)(struct drm_gem_object *obj, u64 offset, void *dst, int size);
	void (*describe)(struct seq_file *m, struct drm_gem_object *obj); /* Optional */
	int (*framebuffer_init)(struct drm_gem_object *obj, struct drm_mode_fb_cmd2 *mode_cmd);
	void (*framebuffer_fini)(struct drm_gem_object *obj);
	struct drm_gem_object *(*framebuffer_lookup)(struct drm_device *drm,
						     struct drm_file *filp,
						     const struct drm_mode_fb_cmd2 *user_mode_cmd);
#if IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION)
	struct drm_gem_object *(*fbdev_create)(struct drm_device *drm, int size);
	void (*fbdev_destroy)(struct drm_gem_object *obj);
	int (*fbdev_fill_info)(struct drm_gem_object *obj, struct fb_info *info, struct i915_vma *vma);
	u32 (*fbdev_pitch_align)(u32 stride);
#endif
};

struct intel_display_dpt_interface {
	struct intel_dpt *(*create)(struct drm_gem_object *obj, size_t size);
	void (*destroy)(struct intel_dpt *dpt);
	void (*suspend)(struct intel_dpt *dpt);
	void (*resume)(struct intel_dpt *dpt);
};

struct intel_display_dsb_interface {
	u32 (*ggtt_offset)(struct intel_dsb_buffer *dsb_buf);
	void (*write)(struct intel_dsb_buffer *dsb_buf, u32 idx, u32 val);
	u32 (*read)(struct intel_dsb_buffer *dsb_buf, u32 idx);
	void (*fill)(struct intel_dsb_buffer *dsb_buf, u32 idx, u32 val, size_t size);
	struct intel_dsb_buffer *(*create)(struct drm_device *drm, size_t size);
	void (*cleanup)(struct intel_dsb_buffer *dsb_buf);
	void (*flush_map)(struct intel_dsb_buffer *dsb_buf);
};

struct intel_display_fb_pin_interface {
	int (*ggtt_pin)(struct drm_gem_object *obj,
			const struct intel_fb_pin_params *pin_params,
			struct i915_vma **out_ggtt_vma,
			u32 *out_offset,
			int *out_fence_id);
	void (*ggtt_unpin)(struct i915_vma *ggtt_vma,
			   int fence_id);
	int (*dpt_pin)(struct drm_gem_object *obj,
		       struct intel_dpt *dpt,
		       const struct intel_fb_pin_params *pin_params,
		       struct i915_vma **out_dpt_vma,
		       struct i915_vma **out_ggtt_vma,
		       u32 *out_offset);
	void (*dpt_unpin)(struct intel_dpt *dpt,
			  struct i915_vma *dpt_vma,
			  struct i915_vma *ggtt_vma);
	struct i915_vma *(*reuse_vma)(struct i915_vma *old_ggtt_vma,
				      struct drm_gem_object *old_obj,
				      const struct i915_gtt_view *old_view,
				      struct drm_gem_object *new_obj,
				      const struct i915_gtt_view *new_view,
				      u32 *out_offset);
	void (*get_map)(struct i915_vma *vma, struct iosys_map *map);
};

struct intel_display_frontbuffer_interface {
	struct intel_frontbuffer *(*get)(struct drm_gem_object *obj);
	void (*ref)(struct intel_frontbuffer *front);
	void (*put)(struct intel_frontbuffer *front);
	void (*flush_for_display)(struct intel_frontbuffer *front);
};

struct intel_display_hdcp_interface {
	ssize_t (*gsc_msg_send)(struct intel_hdcp_gsc_context *gsc_context,
				void *msg_in, size_t msg_in_len,
				void *msg_out, size_t msg_out_len);
	bool (*gsc_check_status)(struct drm_device *drm);

Annotation

Implementation Notes