drivers/gpu/drm/panel/panel-novatek-nt35560.c
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/panel/panel-novatek-nt35560.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/panel/panel-novatek-nt35560.c- Extension
.c- Size
- 11902 bytes
- Lines
- 481
- 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/backlight.hlinux/delay.hlinux/gpio/consumer.hlinux/module.hlinux/of.hlinux/regulator/consumer.hvideo/mipi_display.hdrm/drm_mipi_dsi.hdrm/drm_modes.hdrm/drm_panel.h
Detected Declarations
struct nt35560_configstruct nt35560function nt35560_set_brightnessfunction nt35560_read_idfunction nt35560_power_onfunction nt35560_power_offfunction nt35560_preparefunction nt35560_unpreparefunction nt35560_get_modesfunction nt35560_probefunction nt35560_remove
Annotated Snippet
struct nt35560_config {
const struct drm_display_mode *vid_mode;
const struct drm_display_mode *cmd_mode;
};
struct nt35560 {
const struct nt35560_config *conf;
struct drm_panel panel;
struct device *dev;
struct regulator *supply;
struct gpio_desc *reset_gpio;
bool video_mode;
};
static const struct drm_display_mode sony_acx424akp_vid_mode = {
.clock = 27234,
.hdisplay = 480,
.hsync_start = 480 + 15,
.hsync_end = 480 + 15 + 0,
.htotal = 480 + 15 + 0 + 15,
.vdisplay = 864,
.vsync_start = 864 + 14,
.vsync_end = 864 + 14 + 1,
.vtotal = 864 + 14 + 1 + 11,
.width_mm = 48,
.height_mm = 84,
.flags = DRM_MODE_FLAG_PVSYNC,
};
/*
* The timings are not very helpful as the display is used in
* command mode using the maximum HS frequency.
*/
static const struct drm_display_mode sony_acx424akp_cmd_mode = {
.clock = 35478,
.hdisplay = 480,
.hsync_start = 480 + 154,
.hsync_end = 480 + 154 + 16,
.htotal = 480 + 154 + 16 + 32,
.vdisplay = 864,
.vsync_start = 864 + 1,
.vsync_end = 864 + 1 + 1,
.vtotal = 864 + 1 + 1 + 1,
/*
* Some desired refresh rate, experiments at the maximum "pixel"
* clock speed (HS clock 420 MHz) yields around 117Hz.
*/
.width_mm = 48,
.height_mm = 84,
};
static const struct nt35560_config sony_acx424akp_data = {
.vid_mode = &sony_acx424akp_vid_mode,
.cmd_mode = &sony_acx424akp_cmd_mode,
};
static const struct drm_display_mode sony_acx424akm_vid_mode = {
.clock = 27234,
.hdisplay = 480,
.hsync_start = 480 + 15,
.hsync_end = 480 + 15 + 0,
.htotal = 480 + 15 + 0 + 15,
.vdisplay = 854,
.vsync_start = 854 + 14,
.vsync_end = 854 + 14 + 1,
.vtotal = 854 + 14 + 1 + 11,
.width_mm = 46,
.height_mm = 82,
.flags = DRM_MODE_FLAG_PVSYNC,
};
/*
* The timings are not very helpful as the display is used in
* command mode using the maximum HS frequency.
*/
static const struct drm_display_mode sony_acx424akm_cmd_mode = {
.clock = 35478,
.hdisplay = 480,
.hsync_start = 480 + 154,
.hsync_end = 480 + 154 + 16,
.htotal = 480 + 154 + 16 + 32,
.vdisplay = 854,
.vsync_start = 854 + 1,
.vsync_end = 854 + 1 + 1,
.vtotal = 854 + 1 + 1 + 1,
.width_mm = 46,
.height_mm = 82,
};
static const struct nt35560_config sony_acx424akm_data = {
Annotation
- Immediate include surface: `linux/backlight.h`, `linux/delay.h`, `linux/gpio/consumer.h`, `linux/module.h`, `linux/of.h`, `linux/regulator/consumer.h`, `video/mipi_display.h`, `drm/drm_mipi_dsi.h`.
- Detected declarations: `struct nt35560_config`, `struct nt35560`, `function nt35560_set_brightness`, `function nt35560_read_id`, `function nt35560_power_on`, `function nt35560_power_off`, `function nt35560_prepare`, `function nt35560_unprepare`, `function nt35560_get_modes`, `function nt35560_probe`.
- 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.