drivers/gpu/drm/vboxvideo/modesetting.c
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/vboxvideo/modesetting.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/vboxvideo/modesetting.c- Extension
.c- Size
- 3987 bytes
- Lines
- 128
- Domain
- Driver Families
- Bucket
- drivers/gpu
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/vbox_err.hvbox_drv.hvboxvideo_guest.hvboxvideo_vbe.hhgsmi_channels.h
Detected Declarations
function hgsmi_process_display_infofunction hgsmi_update_input_mappingfunction hgsmi_get_mode_hints
Annotated Snippet
// SPDX-License-Identifier: MIT
/* Copyright (C) 2006-2017 Oracle Corporation */
#include <linux/vbox_err.h>
#include "vbox_drv.h"
#include "vboxvideo_guest.h"
#include "vboxvideo_vbe.h"
#include "hgsmi_channels.h"
/**
* hgsmi_process_display_info - Set a video mode via an HGSMI request.
* The views must have been initialised first
* using @a VBoxHGSMISendViewInfo and if the mode
* is being set on the first display then it must
* be set first using registers.
* @ctx: The context containing the heap to use.
* @display: The screen number.
* @origin_x: The horizontal displacement relative to the first scrn.
* @origin_y: The vertical displacement relative to the first screen.
* @start_offset: The offset of the visible area of the framebuffer
* relative to the framebuffer start.
* @pitch: The offset in bytes between the starts of two adjecent
* scan lines in video RAM.
* @width: The mode width.
* @height: The mode height.
* @bpp: The colour depth of the mode.
* @flags: Flags.
*/
void hgsmi_process_display_info(struct gen_pool *ctx, u32 display,
s32 origin_x, s32 origin_y, u32 start_offset,
u32 pitch, u32 width, u32 height,
u16 bpp, u16 flags)
{
struct vbva_infoscreen *p;
p = hgsmi_buffer_alloc(ctx, sizeof(*p), HGSMI_CH_VBVA,
VBVA_INFO_SCREEN);
if (!p)
return;
p->view_index = display;
p->origin_x = origin_x;
p->origin_y = origin_y;
p->start_offset = start_offset;
p->line_size = pitch;
p->width = width;
p->height = height;
p->bits_per_pixel = bpp;
p->flags = flags;
hgsmi_buffer_submit(ctx, p);
hgsmi_buffer_free(ctx, p);
}
/**
* hgsmi_update_input_mapping - Report the rectangle relative to which absolute
* pointer events should be expressed. This
* information remains valid until the next VBVA
* resize event for any screen, at which time it is
* reset to the bounding rectangle of all virtual
* screens.
* Return: 0 or negative errno value.
* @ctx: The context containing the heap to use.
* @origin_x: Upper left X co-ordinate relative to the first screen.
* @origin_y: Upper left Y co-ordinate relative to the first screen.
* @width: Rectangle width.
* @height: Rectangle height.
*/
int hgsmi_update_input_mapping(struct gen_pool *ctx, s32 origin_x, s32 origin_y,
u32 width, u32 height)
{
struct vbva_report_input_mapping *p;
p = hgsmi_buffer_alloc(ctx, sizeof(*p), HGSMI_CH_VBVA,
VBVA_REPORT_INPUT_MAPPING);
if (!p)
return -ENOMEM;
p->x = origin_x;
p->y = origin_y;
p->cx = width;
p->cy = height;
hgsmi_buffer_submit(ctx, p);
hgsmi_buffer_free(ctx, p);
return 0;
}
/**
Annotation
- Immediate include surface: `linux/vbox_err.h`, `vbox_drv.h`, `vboxvideo_guest.h`, `vboxvideo_vbe.h`, `hgsmi_channels.h`.
- Detected declarations: `function hgsmi_process_display_info`, `function hgsmi_update_input_mapping`, `function hgsmi_get_mode_hints`.
- Atlas domain: Driver Families / drivers/gpu.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.