summaryrefslogtreecommitdiff
path: root/inahwmon.c
diff options
context:
space:
mode:
Diffstat (limited to 'inahwmon.c')
-rw-r--r--inahwmon.c75
1 files changed, 75 insertions, 0 deletions
diff --git a/inahwmon.c b/inahwmon.c
new file mode 100644
index 0000000..a43d5e1
--- /dev/null
+++ b/inahwmon.c
@@ -0,0 +1,75 @@
+#include "linux/module.h"
+#include "linux/kernel.h"
+#include <linux/hwmon.h>
+#include "linux/i2c.h"
+
+
+static const struct hwmon_channel_info power = {
+ .type = hwmon_power,
+ .config = HWMON_P_INPUT
+};
+
+
+static const struct hwmon_channel_info * const ina260_info[] = {
+ &power,
+ NULL
+};
+
+static const struct hwmon_ops ina260_hwmon_ops = {
+ //.is_visible = ina238_is_visible,
+ .read = NULL,
+ .write = NULL,
+};
+
+static const struct hwmon_chip_info ina260_chip_info = {
+ .ops = &ina260_hwmon_ops,
+ .info = ina260_info,
+};
+
+static int ina260_probe_new(struct i2c_client *client){
+
+ hwmon_device_register_with_info(&client->dev,client->name,NULL,
+ &ina260_chip_info,NULL);
+}
+
+static int ina260_remove(struct i2c_client *client){
+ hwmon_device_unregister(&client->dev);
+ return 0;
+}
+
+
+
+static const struct i2c_device_id ina260_ids[] = {
+ { "ina260", 0 },
+ { }
+};
+MODULE_DEVICE_TABLE(i2c,ina260_ids);
+
+static struct i2c_driver ina260_driver = {
+ .driver = {
+ .name = "ina260HWMON"
+ },
+ .probe_new = ina260_probe_new,
+ .remove = ina260_remove,
+ .id_table = ina260_ids
+};
+
+
+static int __init ina260_init(void){
+ printk("Init\n");
+ i2c_add_driver(&ina260_driver);
+
+ return 0;
+}
+
+static void __exit ina260_exit(void){
+ printk("Quit\n");
+ i2c_del_driver(&ina260_driver);
+}
+
+module_init(ina260_init);
+module_exit(ina260_exit);
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Loïc Guegan");
+MODULE_DESCRIPTION("INA260 Texas Instruments");
+MODULE_VERSION("1.0");