drivers/misc/lis3lv02d/lis3lv02d.h
Source file repositories/reference/linux-study-clean/drivers/misc/lis3lv02d/lis3lv02d.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/misc/lis3lv02d/lis3lv02d.h- Extension
.h- Size
- 7149 bytes
- Lines
- 319
- Domain
- Driver Families
- Bucket
- drivers/misc
- 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
linux/device/faux.hlinux/input.hlinux/regulator/consumer.hlinux/miscdevice.hlinux/lis3lv02d.h
Detected Declarations
struct lis3lv02denum lis3_regenum lis302d_regenum lis3lv02d_regenum lis3_who_am_ienum lis3_typeenum lis3lv02d_ctrl1_12benum lis3lv02d_ctrl1_8benum lis3lv02d_ctrl1_3dcenum lis331dlh_ctrl1enum lis331dlh_ctrl2enum lis331dlh_ctrl4enum lis3lv02d_ctrl2enum lis3lv02d_ctrl4_3dcenum lis302d_ctrl2enum lis3lv02d_ctrl3enum lis3lv02d_status_regenum lis3lv02d_ff_wu_cfgenum lis3lv02d_ff_wu_srcenum lis3lv02d_dd_cfgenum lis3lv02d_dd_srcenum lis3lv02d_click_src_8benum lis3lv02d_reg_state
Annotated Snippet
struct lis3lv02d {
void *bus_priv; /* used by the bus layer only */
struct device *pm_dev; /* for pm_runtime purposes */
int (*init) (struct lis3lv02d *lis3);
int (*write) (struct lis3lv02d *lis3, int reg, u8 val);
int (*read) (struct lis3lv02d *lis3, int reg, u8 *ret);
int (*blkread) (struct lis3lv02d *lis3, int reg, int len, u8 *ret);
int (*reg_ctrl) (struct lis3lv02d *lis3, bool state);
int *odrs; /* Supported output data rates */
u8 *regs; /* Regs to store / restore */
int regs_size;
u8 *reg_cache;
bool regs_stored;
u8 odr_mask; /* ODR bit mask */
u8 whoami; /* indicates measurement precision */
s16 (*read_data) (struct lis3lv02d *lis3, int reg);
int mdps_max_val;
int pwron_delay;
int scale; /*
* relationship between 1 LBS and mG
* (1/1000th of earth gravity)
*/
struct input_dev *idev; /* input device */
struct faux_device *fdev; /* faux device */
struct regulator_bulk_data regulators[2];
atomic_t count; /* interrupt count after last read */
union axis_conversion ac; /* hw -> logical axis */
int mapped_btns[3];
u32 irq; /* IRQ number */
struct fasync_struct *async_queue; /* queue for the misc device */
wait_queue_head_t misc_wait; /* Wait queue for the misc device */
unsigned long misc_opened; /* bit0: whether the device is open */
struct miscdevice miscdev;
int data_ready_count[2];
atomic_t wake_thread;
unsigned char irq_cfg;
unsigned int shift_adj;
struct lis3lv02d_platform_data *pdata; /* for passing board config */
struct mutex mutex; /* Serialize poll and selftest */
#ifdef CONFIG_OF
struct device_node *of_node;
#endif
};
int lis3lv02d_init_device(struct lis3lv02d *lis3);
int lis3lv02d_joystick_enable(struct lis3lv02d *lis3);
void lis3lv02d_joystick_disable(struct lis3lv02d *lis3);
void lis3lv02d_poweroff(struct lis3lv02d *lis3);
int lis3lv02d_poweron(struct lis3lv02d *lis3);
void lis3lv02d_remove_fs(struct lis3lv02d *lis3);
int lis3lv02d_init_dt(struct lis3lv02d *lis3);
extern struct lis3lv02d lis3_dev;
Annotation
- Immediate include surface: `linux/device/faux.h`, `linux/input.h`, `linux/regulator/consumer.h`, `linux/miscdevice.h`, `linux/lis3lv02d.h`.
- Detected declarations: `struct lis3lv02d`, `enum lis3_reg`, `enum lis302d_reg`, `enum lis3lv02d_reg`, `enum lis3_who_am_i`, `enum lis3_type`, `enum lis3lv02d_ctrl1_12b`, `enum lis3lv02d_ctrl1_8b`, `enum lis3lv02d_ctrl1_3dc`, `enum lis331dlh_ctrl1`.
- Atlas domain: Driver Families / drivers/misc.
- 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.