aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-06-15 18:17:15 +0200
committerLoek Le Blansch <loek@pipeframe.xyz>2024-06-15 18:17:15 +0200
commit5254cc646177e0934db75550b44e297b4337ea75 (patch)
treee8b0235bfe650234912ebe4dc280f07f4260abf9
parentdc3e1220a3bc60c2f845477b3d5babd3e00e6ea8 (diff)
i2c driver load + probe works
-rw-r--r--driver/main.c49
-rw-r--r--driver/main.h2
-rw-r--r--dts/am335x-boneblack-uboot.dts10
3 files changed, 8 insertions, 53 deletions
diff --git a/driver/main.c b/driver/main.c
index 2097edd..4dd4b88 100644
--- a/driver/main.c
+++ b/driver/main.c
@@ -2,54 +2,7 @@
#include <linux/i2c.h>
#include "main.h"
-#include "platform.h"
-struct device *dev;
-struct class *class;
-dev_t node = 0; // do not register /dev/lork
-
-static int mod_init(void) {
- int err;
-
- // create /sys/class/lork
- class = class_create("lork");
- if (IS_ERR_OR_NULL(class)) {
- err = PTR_ERR(class);
- goto free_class;
- }
-
- // create device (required for device attributes under /sys/class)
- dev = device_create(class, NULL, node, NULL, "lork");
- if (IS_ERR_OR_NULL(dev)) {
- err = PTR_ERR(dev);
- goto free_device;
- }
-
- // create platform driver
- err = i2c_add_driver(&lork_driver);
- if (err) goto free_platform_driver;
-
- printk("%s() OK\n", __PRETTY_FUNCTION__);
- return 0;
-
-free_platform_driver:
- i2c_del_driver(&lork_driver);
-free_device:
- device_destroy(class, node);
-free_class:
- class_destroy(class);
- printk("%s() -> %d\n", __PRETTY_FUNCTION__, err);
- return err;
-}
-
-static void mod_exit(void) {
- i2c_del_driver(&lork_driver);
- device_destroy(class, node);
- class_destroy(class);
- printk("%s()\n", __PRETTY_FUNCTION__);
-}
-
-module_init(mod_init);
-module_exit(mod_exit);
+module_i2c_driver(lork_driver);
MODULE_LICENSE("Dual MIT/GPL");
diff --git a/driver/main.h b/driver/main.h
index 666bcc1..77ebad5 100644
--- a/driver/main.h
+++ b/driver/main.h
@@ -11,7 +11,7 @@ static const struct of_device_id lork_match[] = {
};
static const struct i2c_device_id lork_ids[] = {
- { "foo", 0 },
+ { "lork", 0 },
{},
};
diff --git a/dts/am335x-boneblack-uboot.dts b/dts/am335x-boneblack-uboot.dts
index 9cdeada..64f2cea 100644
--- a/dts/am335x-boneblack-uboot.dts
+++ b/dts/am335x-boneblack-uboot.dts
@@ -2242,11 +2242,13 @@
};
};
- // NOTE: this is in i2c2, so I2C2_SCL = P9.19 and I2C2_SDA = P9.20
- lork {
- compatible = "lork-i2c"; // load my driver
- addr = <0x22>; // i2c slave address (see ../arduino/main.cpp)
+ // node name must match one in ../driver/main.h i2c_device_id struct
+ // reg and node address must match i2c address (see ../arduino/main.cpp)
+ lork_i2c: lork@22 {
+ compatible = "lork-i2c";
+ reg = <0x22>;
};
+ // NOTE: this is in i2c2, so I2C2_SCL = P9.19 and I2C2_SDA = P9.20
};
};