diff options
Diffstat (limited to 'inahwmon.c')
| -rw-r--r-- | inahwmon.c | 75 |
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"); |
