drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.h
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.h- Extension
.h- Size
- 2271 bytes
- Lines
- 85
- 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.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
drm/drm_plane.hlinux/container_of.hlinux/scatterlist.h
Detected Declarations
struct devicestruct device_linkstruct drm_framebufferstruct rzg2l_du_devicestruct rzg2l_du_format_infostruct rzg2l_du_vspstruct rzg2l_du_vsp_planestruct rzg2l_du_vspstruct rzg2l_du_vsp_plane_statefunction to_rzg2l_vsp_plane_statefunction rzg2l_du_vsp_initfunction rzg2l_du_vsp_enablefunction rzg2l_du_vsp_disablefunction rzg2l_du_vsp_atomic_flush
Annotated Snippet
struct rzg2l_du_vsp_plane {
struct drm_plane plane;
struct rzg2l_du_vsp *vsp;
unsigned int index;
};
struct rzg2l_du_vsp {
unsigned int index;
struct device *vsp;
struct device_link *link;
struct rzg2l_du_device *dev;
};
static inline struct rzg2l_du_vsp_plane *to_rzg2l_vsp_plane(struct drm_plane *p)
{
return container_of(p, struct rzg2l_du_vsp_plane, plane);
}
/**
* struct rzg2l_du_vsp_plane_state - Driver-specific plane state
* @state: base DRM plane state
* @format: information about the pixel format used by the plane
*/
struct rzg2l_du_vsp_plane_state {
struct drm_plane_state state;
const struct rzg2l_du_format_info *format;
};
static inline struct rzg2l_du_vsp_plane_state *
to_rzg2l_vsp_plane_state(struct drm_plane_state *state)
{
return container_of(state, struct rzg2l_du_vsp_plane_state, state);
}
#if IS_ENABLED(CONFIG_VIDEO_RENESAS_VSP1)
int rzg2l_du_vsp_init(struct rzg2l_du_vsp *vsp, struct device_node *np,
unsigned int crtcs);
void rzg2l_du_vsp_enable(struct rzg2l_du_crtc *crtc);
void rzg2l_du_vsp_disable(struct rzg2l_du_crtc *crtc);
void rzg2l_du_vsp_atomic_flush(struct rzg2l_du_crtc *crtc);
struct drm_plane *rzg2l_du_vsp_get_drm_plane(struct rzg2l_du_crtc *crtc,
unsigned int pipe_index);
#else
static inline int rzg2l_du_vsp_init(struct rzg2l_du_vsp *vsp, struct device_node *np,
unsigned int crtcs)
{
return -ENXIO;
}
static inline void rzg2l_du_vsp_enable(struct rzg2l_du_crtc *crtc) { };
static inline void rzg2l_du_vsp_disable(struct rzg2l_du_crtc *crtc) { };
static inline void rzg2l_du_vsp_atomic_flush(struct rzg2l_du_crtc *crtc) { };
static inline struct drm_plane *rzg2l_du_vsp_get_drm_plane(struct rzg2l_du_crtc *crtc,
unsigned int pipe_index)
{
return ERR_PTR(-ENXIO);
}
#endif
#endif /* __RZG2L_DU_VSP_H__ */
Annotation
- Immediate include surface: `drm/drm_plane.h`, `linux/container_of.h`, `linux/scatterlist.h`.
- Detected declarations: `struct device`, `struct device_link`, `struct drm_framebuffer`, `struct rzg2l_du_device`, `struct rzg2l_du_format_info`, `struct rzg2l_du_vsp`, `struct rzg2l_du_vsp_plane`, `struct rzg2l_du_vsp`, `struct rzg2l_du_vsp_plane_state`, `function to_rzg2l_vsp_plane_state`.
- Atlas domain: Driver Families / drivers/gpu.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
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.