]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/platform/x86/intel_scu_ipc.c
Merge branch 'master' into tk71
[mv-sheeva.git] / drivers / platform / x86 / intel_scu_ipc.c
index 6abe18e638e976f325ba92c9892bd2cc1501f4a8..a91d510a798b2a9e5f2e35c67c369979b273900f 100644 (file)
@@ -23,6 +23,7 @@
 #include <linux/pm.h>
 #include <linux/pci.h>
 #include <linux/interrupt.h>
+#include <linux/sfi.h>
 #include <asm/mrst.h>
 #include <asm/intel_scu_ipc.h>
 
@@ -159,7 +160,7 @@ static int pwr_reg_rdwr(u16 *addr, u8 *data, u32 count, u32 op, u32 id)
 {
        int i, nc, bytes, d;
        u32 offset = 0;
-       u32 err = 0;
+       int err;
        u8 cbuf[IPC_WWBUF_SIZE] = { };
        u32 *wbuf = (u32 *)&cbuf;
 
@@ -402,7 +403,7 @@ EXPORT_SYMBOL(intel_scu_ipc_update_register);
  */
 int intel_scu_ipc_simple_command(int cmd, int sub)
 {
-       u32 err = 0;
+       int err;
 
        mutex_lock(&ipclock);
        if (ipcdev.pdev == NULL) {
@@ -432,8 +433,7 @@ EXPORT_SYMBOL(intel_scu_ipc_simple_command);
 int intel_scu_ipc_command(int cmd, int sub, u32 *in, int inlen,
                                                        u32 *out, int outlen)
 {
-       u32 err = 0;
-       int i = 0;
+       int i, err;
 
        mutex_lock(&ipclock);
        if (ipcdev.pdev == NULL) {
@@ -495,7 +495,7 @@ int intel_scu_ipc_i2c_cntrl(u32 addr, u32 *data)
                        "intel_scu_ipc: I2C INVALID_CMD = 0x%x\n", cmd);
 
                mutex_unlock(&ipclock);
-               return -1;
+               return -EIO;
        }
        mutex_unlock(&ipclock);
        return 0;
@@ -640,7 +640,7 @@ update_end:
 
        if (status == IPC_FW_UPDATE_SUCCESS)
                return 0;
-       return -1;
+       return -EIO;
 }
 EXPORT_SYMBOL(intel_scu_ipc_fw_update);
 
@@ -698,6 +698,9 @@ static int ipc_probe(struct pci_dev *dev, const struct pci_device_id *id)
                iounmap(ipcdev.ipc_base);
                return -ENOMEM;
        }
+
+       intel_scu_devices_create();
+
        return 0;
 }
 
@@ -719,6 +722,7 @@ static void ipc_remove(struct pci_dev *pdev)
        iounmap(ipcdev.ipc_base);
        iounmap(ipcdev.i2c_base);
        ipcdev.pdev = NULL;
+       intel_scu_devices_destroy();
 }
 
 static const struct pci_device_id pci_ids[] = {