drivers/gpu/drm/udl/udl_drv.h
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/udl/udl_drv.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/udl/udl_drv.h- Extension
.h- Size
- 2096 bytes
- Lines
- 91
- 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/mm_types.hlinux/usb.hdrm/drm_connector.hdrm/drm_crtc.hdrm/drm_device.hdrm/drm_encoder.hdrm/drm_framebuffer.hdrm/drm_gem.hdrm/drm_plane.h
Detected Declarations
struct drm_mode_create_dumbstruct udl_devicestruct urb_nodestruct urb_liststruct udl_device
Annotated Snippet
struct urb_node {
struct list_head entry;
struct udl_device *dev;
struct urb *urb;
};
struct urb_list {
struct list_head list;
spinlock_t lock;
wait_queue_head_t sleep;
int available;
int count;
size_t size;
};
struct udl_device {
struct drm_device drm;
unsigned long sku_pixel_limit;
struct drm_plane primary_plane;
struct drm_crtc crtc;
struct drm_encoder encoder;
struct drm_connector connector;
struct urb_list urbs;
};
#define to_udl(x) container_of(x, struct udl_device, drm)
static inline struct usb_device *udl_to_usb_device(struct udl_device *udl)
{
return interface_to_usbdev(to_usb_interface(udl->drm.dev));
}
/* modeset */
int udl_modeset_init(struct udl_device *udl);
struct drm_connector *udl_connector_init(struct drm_device *dev);
struct urb *udl_get_urb(struct udl_device *udl);
int udl_submit_urb(struct udl_device *udl, struct urb *urb, size_t len);
void udl_sync_pending_urbs(struct udl_device *udl);
void udl_urb_completion(struct urb *urb);
int udl_init(struct udl_device *udl);
int udl_render_hline(struct udl_device *udl, int log_bpp, struct urb **urb_ptr,
const char *front, char **urb_buf_ptr,
u32 byte_offset, u32 device_byte_offset, u32 byte_width);
int udl_drop_usb(struct udl_device *udl);
int udl_select_std_channel(struct udl_device *udl);
#endif
Annotation
- Immediate include surface: `linux/mm_types.h`, `linux/usb.h`, `drm/drm_connector.h`, `drm/drm_crtc.h`, `drm/drm_device.h`, `drm/drm_encoder.h`, `drm/drm_framebuffer.h`, `drm/drm_gem.h`.
- Detected declarations: `struct drm_mode_create_dumb`, `struct udl_device`, `struct urb_node`, `struct urb_list`, `struct udl_device`.
- 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.