drivers/peci/core.c

Source file repositories/reference/linux-study-clean/drivers/peci/core.c

File Facts

System
Linux kernel
Corpus path
drivers/peci/core.c
Extension
.c
Size
5518 bytes
Lines
236
Domain
Driver Families
Bucket
drivers/peci
Inferred role
Driver Families: operation-table or driver-model contract
Status
pattern 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

static int peci_bus_device_match(struct device *dev, const struct device_driver *drv)
{
	struct peci_device *device = to_peci_device(dev);
	const struct peci_driver *peci_drv = to_peci_driver(drv);

	if (dev->type != &peci_device_type)
		return 0;

	return !!peci_bus_match_device_id(peci_drv->id_table, device);
}

static int peci_bus_device_probe(struct device *dev)
{
	struct peci_device *device = to_peci_device(dev);
	struct peci_driver *driver = to_peci_driver(dev->driver);

	return driver->probe(device, peci_bus_match_device_id(driver->id_table, device));
}

static void peci_bus_device_remove(struct device *dev)
{
	struct peci_device *device = to_peci_device(dev);
	struct peci_driver *driver = to_peci_driver(dev->driver);

	if (driver->remove)
		driver->remove(device);
}

const struct bus_type peci_bus_type = {
	.name		= "peci",
	.match		= peci_bus_device_match,
	.probe		= peci_bus_device_probe,
	.remove		= peci_bus_device_remove,
	.bus_groups	= peci_bus_groups,
};

static int __init peci_init(void)
{
	int ret;

	ret = bus_register(&peci_bus_type);
	if (ret < 0) {
		pr_err("peci: failed to register PECI bus type!\n");
		return ret;
	}

	return 0;
}
module_init(peci_init);

static void __exit peci_exit(void)
{
	bus_unregister(&peci_bus_type);
}
module_exit(peci_exit);

MODULE_AUTHOR("Jason M Bills <jason.m.bills@linux.intel.com>");
MODULE_AUTHOR("Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>");
MODULE_AUTHOR("Iwona Winiarska <iwona.winiarska@intel.com>");
MODULE_DESCRIPTION("PECI bus core module");
MODULE_LICENSE("GPL");

Annotation

Implementation Notes