本节不需要编写驱动,直接可以使用i2c-dev中编写号的驱动,来进行使用。
也就是说这是一个完全的应用程序。
程序在后面的代码仓库。这里说一下原理。
正常情况下,每一个adaptor,都会在i2c_dev_init函数调用时创建一个设备在/dev/i2c-x
这要求一个前提,adaptor必须在,i2c_dev_init执行之前先执行。
内核的策略就是adaptor使用subsys_initcall修饰,而i2c_dev_init则用module_init修饰。
static int __init i2c_adap_s3c_init(void)
{
return platform_driver_register(&s3c24xx_i2c_driver);
}
subsys_initcall(i2c_adap_s3c_init);
/* ------------------------------------------------------------------------- */
/*
* module load/unload record keeping
*/
static int __init i2c_dev_in