Defining and registering the I2C driver
What we now have seen up to now doesn’t change. The additional factor we want is to outline struct of_device_id. struct of_device_id is outlined to match the corresponding node within the .dts file:
/* no additional information for this system */ static const struct of_device_id foobar_of_match[] = { { .appropriate = "packtpub,foobar-device" }, {} }; MODULE_DEVICE_TABLE(of, foobar_of_match);
Now, we outline i2c_driver as follows:
static struct i2c_driver foo_driver = { .driver = { .identify = "foo", .of_match_table = of_match_ptr(foobar_of_match), /* Solely this line is added */ }, .probe = foo_probe, .id_table = foo_id, };
You may then enhance the probe perform this manner:
static int my_probe(struct i2c_client *shopper, const struct i2c_device_id ...