add nct7904 driver installs
diff --git a/objects/control_bmc_barreleye.c b/objects/control_bmc_barreleye.c
index 1bfb4c4..d8fa63b 100644
--- a/objects/control_bmc_barreleye.c
+++ b/objects/control_bmc_barreleye.c
@@ -14,6 +14,7 @@
static const gchar* dbus_object_path = "/org/openbmc/control";
static const gchar* instance_name = "bmc0";
static const gchar* dbus_name = "org.openbmc.control.Bmc";
+static const gchar* i2c_dev = "/sys/bus/i2c/devices";
//this probably should come from some global SOC config
@@ -101,6 +102,28 @@
close(mem_fd);
}
+int init_i2c_driver(int i2c_bus, const char* device, int address,bool delete)
+{
+ char dev[255];
+ if (!delete) {
+ sprintf(dev,"%s/%d/new_device",i2c_dev,i2c_bus);
+ } else {
+ sprintf(dev,"%s/%d/delete_device",i2c_dev,i2c_bus);
+ }
+ int fd = open(dev, O_WRONLY);
+ if (fd == -1) {
+ return 1;
+ }
+ sprintf(dev,"%s %02x",device,address);
+ int rc = write(fd,dev,strlen(dev));
+ close(fd);
+ if (rc != strlen(dev)) {
+ return 2;
+ }
+ return 0;
+}
+
+
static gboolean
on_init (Control *control,
GDBusMethodInvocation *invocation,
@@ -120,6 +143,14 @@
Control* control = object_get_control((Object*)cmd->user_data);
#ifdef __arm__
reg_init();
+ init_i2c_driver(6,"nct7904",0x2d,false);
+ init_i2c_driver(6,"nct7904",0x2d,true);
+ init_i2c_driver(6,"nct7904",0x2d,false);
+
+ init_i2c_driver(6,"nct7904",0x2e,false);
+ init_i2c_driver(6,"nct7904",0x2e,true);
+ init_i2c_driver(6,"nct7904",0x2e,false);
+
#endif
control_emit_goto_system_state(control,"BMC_STARTING");