drivers/iio/adc/axp20x_adc.c
Source file repositories/reference/linux-study-clean/drivers/iio/adc/axp20x_adc.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/iio/adc/axp20x_adc.c- Extension
.c- Size
- 29690 bytes
- Lines
- 1194
- Domain
- Driver Families
- Bucket
- drivers/iio
- 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/unaligned.hlinux/bitfield.hlinux/completion.hlinux/interrupt.hlinux/io.hlinux/module.hlinux/mod_devicetable.hlinux/platform_device.hlinux/pm_runtime.hlinux/property.hlinux/regmap.hlinux/thermal.hlinux/iio/iio.hlinux/iio/driver.hlinux/iio/machine.hlinux/mfd/axp20x.h
Detected Declarations
struct axp_datastruct axp20x_adc_iiostruct axp_dataenum axp192_adc_channel_venum axp192_adc_channel_ienum axp20x_adc_channel_venum axp20x_adc_channel_ienum axp22x_adc_channel_venum axp22x_adc_channel_ienum axp717_adc_channel_venum axp717_adc_channel_ienum axp813_adc_channel_vfunction axp192_adc_rawfunction axp20x_adc_rawfunction axp22x_adc_rawfunction axp717_adc_rawfunction axp813_adc_rawfunction axp192_adc_scale_voltagefunction axp20x_adc_scale_voltagefunction axp22x_adc_scale_voltagefunction axp813_adc_scale_voltagefunction axp20x_adc_scale_currentfunction axp192_adc_scalefunction axp20x_adc_scalefunction axp22x_adc_scalefunction axp717_adc_scalefunction axp813_adc_scalefunction axp192_adc_offset_voltagefunction axp20x_adc_offset_voltagefunction axp192_adc_offsetfunction axp20x_adc_offsetfunction axp192_read_rawfunction axp20x_read_rawfunction axp22x_read_rawfunction axp717_read_rawfunction axp813_read_rawfunction axp192_write_rawfunction axp20x_write_rawfunction axp20x_adc_ratefunction axp22x_adc_ratefunction axp813_adc_ratefunction axp20x_probefunction axp20x_remove
Annotated Snippet
struct axp20x_adc_iio {
struct regmap *regmap;
const struct axp_data *data;
};
enum axp192_adc_channel_v {
AXP192_ACIN_V = 0,
AXP192_VBUS_V,
AXP192_TS_IN,
AXP192_GPIO0_V,
AXP192_GPIO1_V,
AXP192_GPIO2_V,
AXP192_GPIO3_V,
AXP192_IPSOUT_V,
AXP192_BATT_V,
};
enum axp192_adc_channel_i {
AXP192_ACIN_I = 0,
AXP192_VBUS_I,
AXP192_BATT_CHRG_I,
AXP192_BATT_DISCHRG_I,
};
enum axp20x_adc_channel_v {
AXP20X_ACIN_V = 0,
AXP20X_VBUS_V,
AXP20X_TS_IN,
AXP20X_GPIO0_V,
AXP20X_GPIO1_V,
AXP20X_IPSOUT_V,
AXP20X_BATT_V,
};
enum axp20x_adc_channel_i {
AXP20X_ACIN_I = 0,
AXP20X_VBUS_I,
AXP20X_BATT_CHRG_I,
AXP20X_BATT_DISCHRG_I,
};
enum axp22x_adc_channel_v {
AXP22X_TS_IN = 0,
AXP22X_BATT_V,
};
enum axp22x_adc_channel_i {
AXP22X_BATT_CHRG_I = 1,
AXP22X_BATT_DISCHRG_I,
};
enum axp717_adc_channel_v {
AXP717_BATT_V = 0,
AXP717_TS_IN,
AXP717_VBUS_V,
AXP717_VSYS_V,
AXP717_DIE_TEMP_V,
AXP717_VMID_V = 6,
AXP717_BKUP_BATT_V,
};
enum axp717_adc_channel_i {
AXP717_BATT_CHRG_I = 5,
};
enum axp813_adc_channel_v {
AXP813_TS_IN = 0,
AXP813_GPIO0_V,
AXP813_BATT_V,
};
static const struct iio_map axp20x_maps[] = {
IIO_MAP("vbus_v", "axp20x-usb-power-supply", "vbus_v"),
IIO_MAP("vbus_i", "axp20x-usb-power-supply", "vbus_i"),
IIO_MAP("acin_v", "axp20x-ac-power-supply", "acin_v"),
IIO_MAP("acin_i", "axp20x-ac-power-supply", "acin_i"),
IIO_MAP("batt_v", "axp20x-battery-power-supply", "batt_v"),
IIO_MAP("batt_chrg_i", "axp20x-battery-power-supply", "batt_chrg_i"),
IIO_MAP("batt_dischrg_i", "axp20x-battery-power-supply", "batt_dischrg_i"),
{ }
};
static const struct iio_map axp22x_maps[] = {
IIO_MAP("batt_v", "axp20x-battery-power-supply", "batt_v"),
IIO_MAP("batt_chrg_i", "axp20x-battery-power-supply", "batt_chrg_i"),
IIO_MAP("batt_dischrg_i", "axp20x-battery-power-supply", "batt_dischrg_i"),
{ }
};
static const struct iio_map axp717_maps[] = {
Annotation
- Immediate include surface: `linux/unaligned.h`, `linux/bitfield.h`, `linux/completion.h`, `linux/interrupt.h`, `linux/io.h`, `linux/module.h`, `linux/mod_devicetable.h`, `linux/platform_device.h`.
- Detected declarations: `struct axp_data`, `struct axp20x_adc_iio`, `struct axp_data`, `enum axp192_adc_channel_v`, `enum axp192_adc_channel_i`, `enum axp20x_adc_channel_v`, `enum axp20x_adc_channel_i`, `enum axp22x_adc_channel_v`, `enum axp22x_adc_channel_i`, `enum axp717_adc_channel_v`.
- Atlas domain: Driver Families / drivers/iio.
- 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.