drivers/platform/x86/x86-android-tablets/x86-android-tablets.h

Source file repositories/reference/linux-study-clean/drivers/platform/x86/x86-android-tablets/x86-android-tablets.h

File Facts

System
Linux kernel
Corpus path
drivers/platform/x86/x86-android-tablets/x86-android-tablets.h
Extension
.h
Size
4502 bytes
Lines
138
Domain
Driver Families
Bucket
drivers/platform
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.

Dependency Surface

Detected Declarations

Annotated Snippet

struct x86_acpi_irq_data {
	char *chip;   /* GPIO chip label (GPIOINT) or PMIC ACPI path (PMIC) */
	enum x86_acpi_irq_type type;
	enum irq_domain_bus_token domain;
	int index;
	int trigger;  /* ACPI_EDGE_SENSITIVE / ACPI_LEVEL_SENSITIVE */
	int polarity; /* ACPI_ACTIVE_HIGH / ACPI_ACTIVE_LOW / ACPI_ACTIVE_BOTH */
	bool free_gpio; /* Release GPIO after getting IRQ (for TYPE_GPIOINT) */
	const char *con_id;
};

/* Structs to describe devices to instantiate */
struct x86_i2c_client_info {
	struct i2c_board_info board_info;
	char *adapter_path;
	struct x86_acpi_irq_data irq_data;
};

struct x86_spi_dev_info {
	struct spi_board_info board_info;
	char *ctrl_path;
	struct x86_acpi_irq_data irq_data;
};

struct x86_serdev_info {
	union {
		struct {
			const char *hid;
			const char *uid;
		} acpi;
		struct {
			unsigned int devfn;
		} pci;
	} ctrl;
	const char *ctrl_devname;
	/*
	 * ATM the serdev core only supports of or ACPI matching; and so far all
	 * Android x86 tablets DSDTs have usable serdev nodes, but sometimes
	 * under the wrong controller. So we just tie the existing serdev ACPI
	 * node to the right controller.
	 */
	const char *serdev_hid;
};

struct x86_dev_info {
	const char * const *modules;
	const struct software_node **swnode_group;
	const struct x86_i2c_client_info *i2c_client_info;
	const struct x86_spi_dev_info *spi_dev_info;
	const struct platform_device_info *pdev_info;
	const struct x86_serdev_info *serdev_info;
	const struct software_node **gpio_button_swnodes;
	int i2c_client_count;
	int spi_dev_count;
	int pdev_count;
	int serdev_count;
	int (*init)(struct device *dev);
	void (*exit)(void);
	bool use_pci;
	enum x86_gpiochip_type gpiochip_type;
};

int x86_android_tablet_get_gpiod(const char *chip, int pin, const char *con_id,
				 bool active_low, enum gpiod_flags dflags,
				 struct gpio_desc **desc);
int x86_acpi_irq_helper_get(const struct x86_acpi_irq_data *data);

/* Software nodes representing GPIO chips used by various tablets */
extern const struct software_node baytrail_gpiochip_nodes[];
extern const struct software_node cherryview_gpiochip_nodes[];

/*
 * Extern declarations of x86_dev_info structs so there can be a single
 * MODULE_DEVICE_TABLE(dmi, ...), while splitting the board descriptions.
 */
extern const struct x86_dev_info acer_a1_840_info;
extern const struct x86_dev_info acer_b1_750_info;
extern const struct x86_dev_info advantech_mica_071_info;
extern const struct x86_dev_info asus_me176c_info;
extern const struct x86_dev_info asus_tf103c_info;
extern const struct x86_dev_info chuwi_hi8_info;
extern const struct x86_dev_info cyberbook_t116_info;
extern const struct x86_dev_info czc_p10t;
extern const struct x86_dev_info lenovo_yogabook_x90_info;
extern const struct x86_dev_info lenovo_yogabook_x91_info;
extern const struct x86_dev_info lenovo_yoga_tab2_830_1050_info;
extern const struct x86_dev_info lenovo_yoga_tab2_1380_info;
extern const struct x86_dev_info lenovo_yt3_info;
extern const struct x86_dev_info medion_lifetab_s10346_info;
extern const struct x86_dev_info nextbook_ares8_info;

Annotation

Implementation Notes