include/linux/rmi.h
Source file repositories/reference/linux-study-clean/include/linux/rmi.h
File Facts
- System
- Linux kernel
- Corpus path
include/linux/rmi.h- Extension
.h- Size
- 12330 bytes
- Lines
- 378
- Domain
- Core OS
- Bucket
- Core Kernel Interface
- Inferred role
- Core OS: operation-table or driver-model contract
- Status
- pattern 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.
- Defines an operation table; this is where Linux turns generic core objects into subsystem-specific behavior.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/kernel.hlinux/device.hlinux/interrupt.hlinux/input.hlinux/kfifo.hlinux/list.hlinux/module.hlinux/types.h
Detected Declarations
struct rmi_2d_axis_alignmentstruct rmi_2d_sensor_platform_datastruct rmi_gpio_datastruct rmi_f01_power_managementstruct rmi_device_platform_data_spistruct rmi_device_platform_datastruct rmi_function_descriptorstruct rmi_devicestruct rmi_transport_devstruct rmi_transport_opsstruct rmi_driverstruct rmi_devicestruct rmi4_attn_datastruct rmi_driver_dataenum rmi_sensor_typeenum rmi_reg_state
Annotated Snippet
struct device_driver driver;
int (*reset_handler)(struct rmi_device *rmi_dev);
int (*clear_irq_bits)(struct rmi_device *rmi_dev, unsigned long *mask);
int (*set_irq_bits)(struct rmi_device *rmi_dev, unsigned long *mask);
int (*store_productid)(struct rmi_device *rmi_dev);
int (*set_input_params)(struct rmi_device *rmi_dev,
struct input_dev *input);
void *data;
};
/**
* struct rmi_device - represents an RMI4 sensor device on the RMI bus.
*
* @dev: The device created for the RMI bus
* @number: Unique number for the device on the bus.
* @driver: Pointer to associated driver
* @xport: Pointer to the transport interface
*
*/
struct rmi_device {
struct device dev;
int number;
struct rmi_driver *driver;
struct rmi_transport_dev *xport;
};
struct rmi4_attn_data {
unsigned long irq_status;
size_t size;
void *data;
};
struct rmi_driver_data {
struct list_head function_list;
struct rmi_device *rmi_dev;
struct rmi_function *f01_container;
struct rmi_function *f34_container;
bool bootloader_mode;
int num_of_irq_regs;
int irq_count;
void *irq_memory;
unsigned long *irq_status;
unsigned long *fn_irq_bits;
unsigned long *current_irq_mask;
unsigned long *new_irq_mask;
struct mutex irq_mutex;
struct input_dev *input;
struct irq_domain *irqdomain;
u8 pdt_props;
u8 num_rx_electrodes;
u8 num_tx_electrodes;
bool enabled;
struct mutex enabled_mutex;
struct rmi4_attn_data attn_data;
DECLARE_KFIFO(attn_fifo, struct rmi4_attn_data, 16);
};
int rmi_register_transport_device(struct rmi_transport_dev *xport);
void rmi_unregister_transport_device(struct rmi_transport_dev *xport);
void rmi_set_attn_data(struct rmi_device *rmi_dev, unsigned long irq_status,
void *data, size_t size);
int rmi_driver_suspend(struct rmi_device *rmi_dev, bool enable_wake);
int rmi_driver_resume(struct rmi_device *rmi_dev, bool clear_wake);
#endif
Annotation
- Immediate include surface: `linux/kernel.h`, `linux/device.h`, `linux/interrupt.h`, `linux/input.h`, `linux/kfifo.h`, `linux/list.h`, `linux/module.h`, `linux/types.h`.
- Detected declarations: `struct rmi_2d_axis_alignment`, `struct rmi_2d_sensor_platform_data`, `struct rmi_gpio_data`, `struct rmi_f01_power_management`, `struct rmi_device_platform_data_spi`, `struct rmi_device_platform_data`, `struct rmi_function_descriptor`, `struct rmi_device`, `struct rmi_transport_dev`, `struct rmi_transport_ops`.
- Atlas domain: Core OS / Core Kernel Interface.
- Implementation status: pattern 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.