include/linux/mfd/abx500/ab8500.h
Source file repositories/reference/linux-study-clean/include/linux/mfd/abx500/ab8500.h
File Facts
- System
- Linux kernel
- Corpus path
include/linux/mfd/abx500/ab8500.h- Extension
.h- Size
- 16796 bytes
- Lines
- 506
- Domain
- Core OS
- Bucket
- Core Kernel Interface
- Inferred role
- Core OS: implementation source
- Status
- source 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.
- 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/atomic.hlinux/mutex.hlinux/irqdomain.h
Detected Declarations
struct devicestruct ab8500struct ab8500_codec_platform_datastruct ab8500_sysctrl_platform_datastruct ab8500_platform_dataenum ab8500_versionfunction is_ab8500function is_ab8505function is_ab9540function is_ab8540function is_ab8500_1p0_or_earlierfunction is_ab8500_1p1_or_earlierfunction is_ab8500_2p0_or_earlierfunction is_ab8500_3p3_or_earlierfunction is_ab8500_2p0function is_ab8505_1p0_or_earlierfunction is_ab8505_2p0function is_ab9540_1p0_or_earlierfunction is_ab9540_2p0function is_ab9540_3p0function is_ab8540_1p0_or_earlierfunction is_ab8540_1p1_or_earlierfunction is_ab8540_1p2_or_earlierfunction is_ab8540_2p0_or_earlierfunction is_ab8540_2p0function is_ab8505_2p0_earlierfunction is_ab9540_2p0_or_earlierfunction ab8500_dump_all_banks
Annotated Snippet
struct ab8500 {
struct device *dev;
struct mutex lock;
struct mutex irq_lock;
atomic_t transfer_ongoing;
int irq;
struct irq_domain *domain;
enum ab8500_version version;
u8 chip_id;
int (*write)(struct ab8500 *ab8500, u16 addr, u8 data);
int (*write_masked)(struct ab8500 *ab8500, u16 addr, u8 mask, u8 data);
int (*read)(struct ab8500 *ab8500, u16 addr);
unsigned long tx_buf[4];
unsigned long rx_buf[4];
u8 *mask;
u8 *oldmask;
int mask_size;
const int *irq_reg_offset;
int it_latchhier_num;
};
struct ab8500_codec_platform_data;
struct ab8500_sysctrl_platform_data;
/**
* struct ab8500_platform_data - AB8500 platform data
* @irq_base: start of AB8500 IRQs, AB8500_NR_IRQS will be used
* @init: board-specific initialization after detection of ab8500
*/
struct ab8500_platform_data {
void (*init) (struct ab8500 *);
struct ab8500_codec_platform_data *codec;
struct ab8500_sysctrl_platform_data *sysctrl;
};
extern int ab8500_suspend(struct ab8500 *ab8500);
static inline int is_ab8500(struct ab8500 *ab)
{
return ab->version == AB8500_VERSION_AB8500;
}
static inline int is_ab8505(struct ab8500 *ab)
{
return ab->version == AB8500_VERSION_AB8505;
}
static inline int is_ab9540(struct ab8500 *ab)
{
return ab->version == AB8500_VERSION_AB9540;
}
static inline int is_ab8540(struct ab8500 *ab)
{
return ab->version == AB8500_VERSION_AB8540;
}
/* exclude also ab8505, ab9540... */
static inline int is_ab8500_1p0_or_earlier(struct ab8500 *ab)
{
return (is_ab8500(ab) && (ab->chip_id <= AB8500_CUT1P0));
}
/* exclude also ab8505, ab9540... */
static inline int is_ab8500_1p1_or_earlier(struct ab8500 *ab)
{
return (is_ab8500(ab) && (ab->chip_id <= AB8500_CUT1P1));
}
/* exclude also ab8505, ab9540... */
static inline int is_ab8500_2p0_or_earlier(struct ab8500 *ab)
{
return (is_ab8500(ab) && (ab->chip_id <= AB8500_CUT2P0));
}
static inline int is_ab8500_3p3_or_earlier(struct ab8500 *ab)
{
return (is_ab8500(ab) && (ab->chip_id <= AB8500_CUT3P3));
}
/* exclude also ab8505, ab9540... */
static inline int is_ab8500_2p0(struct ab8500 *ab)
{
return (is_ab8500(ab) && (ab->chip_id == AB8500_CUT2P0));
}
static inline int is_ab8505_1p0_or_earlier(struct ab8500 *ab)
Annotation
- Immediate include surface: `linux/atomic.h`, `linux/mutex.h`, `linux/irqdomain.h`.
- Detected declarations: `struct device`, `struct ab8500`, `struct ab8500_codec_platform_data`, `struct ab8500_sysctrl_platform_data`, `struct ab8500_platform_data`, `enum ab8500_version`, `function is_ab8500`, `function is_ab8505`, `function is_ab9540`, `function is_ab8540`.
- Atlas domain: Core OS / Core Kernel Interface.
- 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.