drivers/regulator/isl9305.c

Source file repositories/reference/linux-study-clean/drivers/regulator/isl9305.c

File Facts

System
Linux kernel
Corpus path
drivers/regulator/isl9305.c
Extension
.c
Size
5186 bytes
Lines
210
Domain
Driver Families
Bucket
drivers/regulator
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

if (IS_ERR(rdev)) {
			ret = PTR_ERR(rdev);
			dev_err(&i2c->dev, "Failed to register %s: %d\n",
				isl9305_regulators[i].name, ret);
			return ret;
		}
	}

	return 0;
}

#ifdef CONFIG_OF
static const struct of_device_id isl9305_dt_ids[] = {
	{ .compatible = "isl,isl9305" }, /* for backward compat., don't use */
	{ .compatible = "isil,isl9305" },
	{ .compatible = "isl,isl9305h" }, /* for backward compat., don't use */
	{ .compatible = "isil,isl9305h" },
	{},
};
MODULE_DEVICE_TABLE(of, isl9305_dt_ids);
#endif

static const struct i2c_device_id isl9305_i2c_id[] = {
	{ "isl9305", },
	{ "isl9305h", },
	{ }
};
MODULE_DEVICE_TABLE(i2c, isl9305_i2c_id);

static struct i2c_driver isl9305_regulator_driver = {
	.driver = {
		.name = "isl9305",
		.probe_type = PROBE_PREFER_ASYNCHRONOUS,
		.of_match_table	= of_match_ptr(isl9305_dt_ids),
	},
	.probe = isl9305_i2c_probe,
	.id_table = isl9305_i2c_id,
};

module_i2c_driver(isl9305_regulator_driver);

MODULE_AUTHOR("Mark Brown");
MODULE_DESCRIPTION("Intersil ISL9305 DCDC regulator");
MODULE_LICENSE("GPL");

Annotation

Implementation Notes