include/linux/lcd.h
Source file repositories/reference/linux-study-clean/include/linux/lcd.h
File Facts
- System
- Linux kernel
- Corpus path
include/linux/lcd.h- Extension
.h- Size
- 4715 bytes
- Lines
- 152
- Domain
- Core OS
- Bucket
- Core Kernel Interface
- Inferred role
- Core OS: implementation source
- Status
- source implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- 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
linux/device.hlinux/mutex.h
Detected Declarations
struct lcd_devicestruct lcd_propertiesstruct lcd_opsstruct lcd_devicestruct lcd_platform_datafunction lcd_set_powerfunction lcd_notify_blank_all
Annotated Snippet
struct lcd_properties {
/* The maximum value for contrast (read-only) */
int max_contrast;
};
struct lcd_ops {
/* Get the LCD panel power status (0: full on, 1..3: controller
power on, flat panel power off, 4: full off), see FB_BLANK_XXX */
int (*get_power)(struct lcd_device *);
/* Enable or disable power to the LCD (0: on; 4: off, see FB_BLANK_XXX) */
int (*set_power)(struct lcd_device *, int power);
/* Get the current contrast setting (0-max_contrast) */
int (*get_contrast)(struct lcd_device *);
/* Set LCD panel contrast */
int (*set_contrast)(struct lcd_device *, int contrast);
/*
* Set LCD panel mode (resolutions ...)
*/
int (*set_mode)(struct lcd_device *lcd, u32 xres, u32 yres);
/*
* Check if the LCD controls the given display device. This
* operation is optional and if not implemented it is assumed that
* the display is always the one controlled by the LCD.
*
* RETURNS:
*
* If display_dev is NULL or display_dev matches the device controlled by
* the LCD, return true. Otherwise return false.
*/
bool (*controls_device)(struct lcd_device *lcd, struct device *display_device);
};
struct lcd_device {
struct lcd_properties props;
/* This protects the 'ops' field. If 'ops' is NULL, the driver that
registered this device has been unloaded, and if class_get_devdata()
points to something in the body of that driver, it is also invalid. */
struct mutex ops_lock;
/* If this is NULL, the backing module is unloaded */
const struct lcd_ops *ops;
/* Serialise access to set_power method */
struct mutex update_lock;
/**
* @entry: List entry of all registered lcd devices
*/
struct list_head entry;
struct device dev;
};
struct lcd_platform_data {
/* reset lcd panel device. */
int (*reset)(struct lcd_device *ld);
/* on or off to lcd panel. if 'enable' is 0 then
lcd power off and 1, lcd power on. */
int (*power_on)(struct lcd_device *ld, int enable);
/* it indicates whether lcd panel was enabled
from bootloader or not. */
int lcd_enabled;
/* it means delay for stable time when it becomes low to high
or high to low that is dependent on whether reset gpio is
low active or high active. */
unsigned int reset_delay;
/* stable time needing to become lcd power on. */
unsigned int power_on_delay;
/* stable time needing to become lcd power off. */
unsigned int power_off_delay;
/* it could be used for any purpose. */
void *pdata;
};
static inline void lcd_set_power(struct lcd_device *ld, int power)
{
mutex_lock(&ld->update_lock);
if (ld->ops && ld->ops->set_power)
ld->ops->set_power(ld, power);
mutex_unlock(&ld->update_lock);
}
extern struct lcd_device *lcd_device_register(const char *name,
struct device *parent, void *devdata, const struct lcd_ops *ops);
extern struct lcd_device *devm_lcd_device_register(struct device *dev,
const char *name, struct device *parent,
void *devdata, const struct lcd_ops *ops);
extern void lcd_device_unregister(struct lcd_device *ld);
Annotation
- Immediate include surface: `linux/device.h`, `linux/mutex.h`.
- Detected declarations: `struct lcd_device`, `struct lcd_properties`, `struct lcd_ops`, `struct lcd_device`, `struct lcd_platform_data`, `function lcd_set_power`, `function lcd_notify_blank_all`.
- Atlas domain: Core OS / Core Kernel Interface.
- 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.