drivers/platform/x86/x86-android-tablets/acer.c
Source file repositories/reference/linux-study-clean/drivers/platform/x86/x86-android-tablets/acer.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/platform/x86/x86-android-tablets/acer.c- Extension
.c- Size
- 6993 bytes
- Lines
- 248
- 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.
- 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/gpio/machine.hlinux/gpio/property.hlinux/platform_device.hlinux/property.hshared-psy-info.hx86-android-tablets.h
Detected Declarations
function acer_a1_840_initfunction acer_a1_840_exit
Annotated Snippet
// SPDX-License-Identifier: GPL-2.0-or-later
/*
* Board info for Acer X86 tablets which ship with Android as the factory image
* and which have broken DSDT tables. The factory kernels shipped on these
* devices typically have a bunch of things hardcoded, rather than specified
* in their DSDT.
*
* Copyright (C) 2021-2025 Hans de Goede <hansg@kernel.org>
*/
#include <linux/gpio/machine.h>
#include <linux/gpio/property.h>
#include <linux/platform_device.h>
#include <linux/property.h>
#include "shared-psy-info.h"
#include "x86-android-tablets.h"
/* Acer Iconia One 8 A1-840 (non FHD version) */
static const struct property_entry acer_a1_840_bq24190_props[] = {
PROPERTY_ENTRY_REF("monitored-battery", &generic_lipo_4v2_battery_node),
PROPERTY_ENTRY_BOOL("omit-battery-class"),
PROPERTY_ENTRY_BOOL("disable-reset"),
{ }
};
static const struct software_node acer_a1_840_bq24190_node = {
.properties = acer_a1_840_bq24190_props,
};
static const struct property_entry acer_a1_840_touchscreen_props[] = {
PROPERTY_ENTRY_U32("touchscreen-size-x", 800),
PROPERTY_ENTRY_U32("touchscreen-size-y", 1280),
PROPERTY_ENTRY_GPIO("reset-gpios", &baytrail_gpiochip_nodes[1], 26, GPIO_ACTIVE_LOW),
{ }
};
static const struct software_node acer_a1_840_touchscreen_node = {
.properties = acer_a1_840_touchscreen_props,
};
static const struct x86_i2c_client_info acer_a1_840_i2c_clients[] __initconst = {
{
/* BQ24297 charger IC */
.board_info = {
.type = "bq24297",
.addr = 0x6b,
.dev_name = "bq24297",
.swnode = &acer_a1_840_bq24190_node,
.platform_data = &bq24190_pdata,
},
.adapter_path = "\\_SB_.I2C1",
.irq_data = {
.type = X86_ACPI_IRQ_TYPE_GPIOINT,
.chip = "INT33FC:02",
.index = 2,
.trigger = ACPI_EDGE_SENSITIVE,
.polarity = ACPI_ACTIVE_LOW,
.con_id = "bq24297_irq",
},
}, {
/* MPU6515 sensors */
.board_info = {
.type = "mpu6515",
.addr = 0x69,
.dev_name = "mpu6515",
},
.adapter_path = "\\_SB_.I2C3",
.irq_data = {
.type = X86_ACPI_IRQ_TYPE_APIC,
.index = 0x47,
.trigger = ACPI_EDGE_SENSITIVE,
.polarity = ACPI_ACTIVE_HIGH,
},
}, {
/* FT5416 touchscreen controller */
.board_info = {
.type = "edt-ft5x06",
.addr = 0x38,
.dev_name = "ft5416",
.swnode = &acer_a1_840_touchscreen_node,
},
.adapter_path = "\\_SB_.I2C4",
.irq_data = {
.type = X86_ACPI_IRQ_TYPE_APIC,
.index = 0x45,
.trigger = ACPI_EDGE_SENSITIVE,
.polarity = ACPI_ACTIVE_HIGH,
},
}
Annotation
- Immediate include surface: `linux/gpio/machine.h`, `linux/gpio/property.h`, `linux/platform_device.h`, `linux/property.h`, `shared-psy-info.h`, `x86-android-tablets.h`.
- Detected declarations: `function acer_a1_840_init`, `function acer_a1_840_exit`.
- Atlas domain: Driver Families / drivers/platform.
- 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.