drivers/iio/light/apds9160.c

Source file repositories/reference/linux-study-clean/drivers/iio/light/apds9160.c

File Facts

System
Linux kernel
Corpus path
drivers/iio/light/apds9160.c
Extension
.c
Size
37487 bytes
Lines
1593
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.

Dependency Surface

Detected Declarations

Annotated Snippet

struct apds9160_scale {
	int itime;
	int gain;
	int scale1;
	int scale2;
};

/* Scale mapping extracted from datasheet */
static const struct apds9160_scale apds9160_als_scale_map[] = {
	{
		.itime = 25,
		.gain = 1,
		.scale1 = 3,
		.scale2 = 272000,
	},
	{
		.itime = 25,
		.gain = 3,
		.scale1 = 1,
		.scale2 = 77000,
	},
	{
		.itime = 25,
		.gain = 6,
		.scale1 = 0,
		.scale2 = 525000,
	},
	{
		.itime = 25,
		.gain = 18,
		.scale1 = 0,
		.scale2 = 169000,
	},
	{
		.itime = 25,
		.gain = 54,
		.scale1 = 0,
		.scale2 = 49000,
	},
	{
		.itime = 50,
		.gain = 1,
		.scale1 = 1,
		.scale2 = 639000,
	},
	{
		.itime = 50,
		.gain = 3,
		.scale1 = 0,
		.scale2 = 538000,
	},
	{
		.itime = 50,
		.gain = 6,
		.scale1 = 0,
		.scale2 = 263000,
	},
	{
		.itime = 50,
		.gain = 18,
		.scale1 = 0,
		.scale2 = 84000,
	},
	{
		.itime = 50,
		.gain = 54,
		.scale1 = 0,
		.scale2 = 25000,
	},
	{
		.itime = 100,
		.gain = 1,
		.scale1 = 0,
		.scale2 = 819000,
	},
	{
		.itime = 100,
		.gain = 3,
		.scale1 = 0,
		.scale2 = 269000,
	},
	{
		.itime = 100,
		.gain = 6,
		.scale1 = 0,
		.scale2 = 131000,
	},
	{
		.itime = 100,
		.gain = 18,

Annotation

Implementation Notes