drivers/mux/adgs1408.c

Source file repositories/reference/linux-study-clean/drivers/mux/adgs1408.c

File Facts

System
Linux kernel
Corpus path
drivers/mux/adgs1408.c
Extension
.c
Size
2949 bytes
Lines
130
Domain
Driver Families
Bucket
drivers/mux
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 (idle_state < mux->states) {
			mux->idle_state = idle_state;
			break;
		}
		fallthrough;
	default:
		dev_err(dev, "invalid idle-state %d\n", idle_state);
		return -EINVAL;
	}

	return devm_mux_chip_register(dev, mux_chip);
}

static const struct spi_device_id adgs1408_spi_id[] = {
	{ "adgs1408", ADGS1408 },
	{ "adgs1409", ADGS1409 },
	{ }
};
MODULE_DEVICE_TABLE(spi, adgs1408_spi_id);

static const struct of_device_id adgs1408_of_match[] = {
	{ .compatible = "adi,adgs1408", .data = (void *)ADGS1408, },
	{ .compatible = "adi,adgs1409", .data = (void *)ADGS1409, },
	{ }
};
MODULE_DEVICE_TABLE(of, adgs1408_of_match);

static struct spi_driver adgs1408_driver = {
	.driver = {
		.name = "adgs1408",
		.of_match_table = adgs1408_of_match,
	},
	.probe = adgs1408_probe,
	.id_table = adgs1408_spi_id,
};
module_spi_driver(adgs1408_driver);

MODULE_AUTHOR("Mircea Caprioru <mircea.caprioru@analog.com>");
MODULE_DESCRIPTION("Analog Devices ADGS1408 MUX driver");
MODULE_LICENSE("GPL");

Annotation

Implementation Notes