drivers/gpu/drm/nouveau/nouveau_connector.h
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/nouveau/nouveau_connector.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/nouveau/nouveau_connector.h- Extension
.h- Size
- 7160 bytes
- Lines
- 255
- 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
nvif/conn.hnvif/event.hnvhw/class/cl507d.hnvhw/class/cl907d.hnvhw/drf.hdrm/display/drm_dp_helper.hdrm/drm_crtc.hdrm/drm_encoder.hdrm/drm_util.hnouveau_crtc.hnouveau_encoder.h
Detected Declarations
struct nvkm_i2c_portstruct dcb_outputstruct edidstruct nouveau_backlightstruct nouveau_conn_atomstruct nouveau_connectorfunction nouveau_connector_is_mstfunction for_each_iffunction nouveau_backlight_initfunction nouveau_backlight_fini
Annotated Snippet
struct nouveau_backlight {
struct backlight_device *dev;
struct drm_edp_backlight_info edp_info;
bool uses_dpcd : 1;
int id;
};
#endif
#define nouveau_conn_atom(p) \
container_of((p), struct nouveau_conn_atom, state)
struct nouveau_conn_atom {
struct drm_connector_state state;
struct {
/* The enum values specifically defined here match nv50/gf119
* hw values, and the code relies on this.
*/
enum {
DITHERING_MODE_OFF =
NVDEF(NV507D, HEAD_SET_DITHER_CONTROL, ENABLE, DISABLE),
DITHERING_MODE_ON =
NVDEF(NV507D, HEAD_SET_DITHER_CONTROL, ENABLE, ENABLE),
DITHERING_MODE_DYNAMIC2X2 = DITHERING_MODE_ON |
NVDEF(NV507D, HEAD_SET_DITHER_CONTROL, MODE, DYNAMIC_2X2),
DITHERING_MODE_STATIC2X2 = DITHERING_MODE_ON |
NVDEF(NV507D, HEAD_SET_DITHER_CONTROL, MODE, STATIC_2X2),
DITHERING_MODE_TEMPORAL = DITHERING_MODE_ON |
NVDEF(NV907D, HEAD_SET_DITHER_CONTROL, MODE, TEMPORAL),
DITHERING_MODE_AUTO
} mode;
enum {
DITHERING_DEPTH_6BPC =
NVDEF(NV507D, HEAD_SET_DITHER_CONTROL, BITS, DITHER_TO_6_BITS),
DITHERING_DEPTH_8BPC =
NVDEF(NV507D, HEAD_SET_DITHER_CONTROL, BITS, DITHER_TO_8_BITS),
DITHERING_DEPTH_AUTO
} depth;
} dither;
struct {
int mode; /* DRM_MODE_SCALE_* */
struct {
enum {
UNDERSCAN_OFF,
UNDERSCAN_ON,
UNDERSCAN_AUTO,
} mode;
u32 hborder;
u32 vborder;
} underscan;
bool full;
} scaler;
struct {
int color_vibrance;
int vibrant_hue;
} procamp;
union {
struct {
bool dither:1;
bool scaler:1;
bool procamp:1;
};
u8 mask;
} set;
};
struct nouveau_connector {
struct drm_connector base;
enum dcb_connector_type type;
u8 index;
struct nvif_conn conn;
u64 hpd_pending;
struct nvif_event hpd;
struct nvif_event irq;
struct work_struct irq_work;
struct drm_dp_aux aux;
/* The fixed DP encoder for this connector, if there is one */
struct nouveau_encoder *dp_encoder;
int dithering_mode;
int scaling_mode;
Annotation
- Immediate include surface: `nvif/conn.h`, `nvif/event.h`, `nvhw/class/cl507d.h`, `nvhw/class/cl907d.h`, `nvhw/drf.h`, `drm/display/drm_dp_helper.h`, `drm/drm_crtc.h`, `drm/drm_encoder.h`.
- Detected declarations: `struct nvkm_i2c_port`, `struct dcb_output`, `struct edid`, `struct nouveau_backlight`, `struct nouveau_conn_atom`, `struct nouveau_connector`, `function nouveau_connector_is_mst`, `function for_each_if`, `function nouveau_backlight_init`, `function nouveau_backlight_fini`.
- 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.