drivers/gpu/drm/panel/panel-novatek-nt35510.c
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/panel/panel-novatek-nt35510.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/panel/panel-novatek-nt35510.c- Extension
.c- Size
- 42801 bytes
- Lines
- 1411
- 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/bitops.hlinux/gpio/consumer.hlinux/module.hlinux/of.hlinux/regmap.hlinux/regulator/consumer.hvideo/mipi_display.hdrm/drm_mipi_dsi.hdrm/drm_modes.hdrm/drm_panel.h
Detected Declarations
struct nt35510_configstruct nt35510function nt35510_send_longfunction nt35510_read_idfunction nt35510_setup_powerfunction nt35510_setup_displayfunction nt35510_set_brightnessfunction nt35510_power_onfunction nt35510_power_offfunction nt35510_unpreparefunction nt35510_preparefunction nt35510_get_modesfunction nt35510_probefunction nt35510_remove
Annotated Snippet
struct nt35510_config {
/**
* @width_mm: physical panel width [mm]
*/
u32 width_mm;
/**
* @height_mm: physical panel height [mm]
*/
u32 height_mm;
/**
* @mode: the display mode. This is only relevant outside the panel
* in video mode: in command mode this is configuring the internal
* timing in the display controller.
*/
const struct drm_display_mode mode;
/**
* @mode_flags: DSI operation mode related flags
*/
unsigned long mode_flags;
/**
* @cmds: enable DSI commands
*/
u32 cmds;
/**
* @avdd: setting for AVDD ranging from 0x00 = 6.5V to 0x14 = 4.5V
* in 0.1V steps the default is 0x05 which means 6.0V
*/
u8 avdd[NT35510_P1_AVDD_LEN];
/**
* @bt1ctr: setting for boost power control for the AVDD step-up
* circuit (1)
* bits 0..2 in the lower nibble controls PCK, the booster clock
* frequency for the step-up circuit:
* 0 = Hsync/32
* 1 = Hsync/16
* 2 = Hsync/8
* 3 = Hsync/4
* 4 = Hsync/2
* 5 = Hsync
* 6 = Hsync x 2
* 7 = Hsync x 4
* bits 4..6 in the upper nibble controls BTP, the boosting
* amplification for the step-up circuit:
* 0 = Disable
* 1 = 1.5 x VDDB
* 2 = 1.66 x VDDB
* 3 = 2 x VDDB
* 4 = 2.5 x VDDB
* 5 = 3 x VDDB
* The defaults are 4 and 4 yielding 0x44
*/
u8 bt1ctr[NT35510_P1_BT1CTR_LEN];
/**
* @avee: setting for AVEE ranging from 0x00 = -6.5V to 0x14 = -4.5V
* in 0.1V steps the default is 0x05 which means -6.0V
*/
u8 avee[NT35510_P1_AVEE_LEN];
/**
* @bt2ctr: setting for boost power control for the AVEE step-up
* circuit (2)
* bits 0..2 in the lower nibble controls NCK, the booster clock
* frequency, the values are the same as for PCK in @bt1ctr.
* bits 4..5 in the upper nibble controls BTN, the boosting
* amplification for the step-up circuit.
* 0 = Disable
* 1 = -1.5 x VDDB
* 2 = -2 x VDDB
* 3 = -2.5 x VDDB
* 4 = -3 x VDDB
* The defaults are 4 and 3 yielding 0x34
*/
u8 bt2ctr[NT35510_P1_BT2CTR_LEN];
/**
* @vcl: setting for VCL ranging from 0x00 = -2.5V to 0x11 = -4.0V
* in 1V steps, the default is 0x00 which means -2.5V
*/
u8 vcl[NT35510_P1_VCL_LEN];
/**
* @bt3ctr: setting for boost power control for the VCL step-up
* circuit (3)
* bits 0..2 in the lower nibble controls CLCK, the booster clock
* frequency, the values are the same as for PCK in @bt1ctr.
* bits 4..5 in the upper nibble controls BTCL, the boosting
* amplification for the step-up circuit.
* 0 = Disable
* 1 = -0.5 x VDDB
* 2 = -1 x VDDB
* 3 = -2 x VDDB
* The defaults are 4 and 2 yielding 0x24
*/
Annotation
- Immediate include surface: `linux/backlight.h`, `linux/bitops.h`, `linux/gpio/consumer.h`, `linux/module.h`, `linux/of.h`, `linux/regmap.h`, `linux/regulator/consumer.h`, `video/mipi_display.h`.
- Detected declarations: `struct nt35510_config`, `struct nt35510`, `function nt35510_send_long`, `function nt35510_read_id`, `function nt35510_setup_power`, `function nt35510_setup_display`, `function nt35510_set_brightness`, `function nt35510_power_on`, `function nt35510_power_off`, `function nt35510_unprepare`.
- 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.