| /* SPDX-License-Identifier: GPL-2.0-only */ | |
| /* | |
| * Copyright 2021 Microsoft | |
| */ | |
| #ifndef _HYPERV_DRM_H_ | |
| #define _HYPERV_DRM_H_ | |
| #define VMBUS_MAX_PACKET_SIZE 0x4000 | |
| struct hv_drm_device { | |
| /* drm */ | |
| struct drm_device dev; | |
| struct drm_plane plane; | |
| struct drm_crtc crtc; | |
| struct drm_encoder encoder; | |
| struct drm_connector connector; | |
| /* mode */ | |
| u32 screen_width_max; | |
| u32 screen_height_max; | |
| u32 preferred_width; | |
| u32 preferred_height; | |
| u32 screen_depth; | |
| /* hw */ | |
| struct resource *mem; | |
| void __iomem *vram; | |
| unsigned long fb_base; | |
| unsigned long fb_size; | |
| struct completion wait; | |
| u32 synthvid_version; | |
| u32 mmio_megabytes; | |
| bool dirt_needed; | |
| u8 init_buf[VMBUS_MAX_PACKET_SIZE]; | |
| u8 recv_buf[VMBUS_MAX_PACKET_SIZE]; | |
| struct hv_device *hdev; | |
| }; | |
| #define to_hv_drm(_dev) container_of(_dev, struct hv_drm_device, dev) | |
| /* hyperv_drm_modeset */ | |
| int hv_drm_mode_config_init(struct hv_drm_device *hv); | |
| /* hyperv_drm_proto */ | |
| int hv_drm_update_vram_location(struct hv_device *hdev, phys_addr_t vram_pp); | |
| int hv_drm_update_situation(struct hv_device *hdev, u8 active, u32 bpp, | |
| u32 w, u32 h, u32 pitch); | |
| int hv_drm_hide_hw_ptr(struct hv_device *hdev); | |
| int hv_drm_update_dirt(struct hv_device *hdev, struct drm_rect *rect); | |
| int hv_drm_connect_vsp(struct hv_device *hdev); | |
| #endif |