static int bcove_ipc_byte_reg_read(void *context, unsigned int reg,
                                    unsigned int *val)
 {
+       struct intel_soc_pmic *pmic = context;
        u8 ipc_out;
        int ret;
 
-       ret = intel_scu_ipc_ioread8(reg, &ipc_out);
+       ret = intel_scu_ipc_dev_ioread8(pmic->scu, reg, &ipc_out);
        if (ret)
                return ret;
 
 static int bcove_ipc_byte_reg_write(void *context, unsigned int reg,
                                     unsigned int val)
 {
+       struct intel_soc_pmic *pmic = context;
        u8 ipc_in = val;
        int ret;
 
-       ret = intel_scu_ipc_iowrite8(reg, ipc_in);
+       ret = intel_scu_ipc_dev_iowrite8(pmic->scu, reg, ipc_in);
        if (ret)
                return ret;
 
        if (!pmic)
                return -ENOMEM;
 
+       pmic->scu = devm_intel_scu_ipc_dev_get(dev);
+       if (!pmic->scu)
+               return -ENOMEM;
+
        platform_set_drvdata(pdev, pmic);
        pmic->dev = &pdev->dev;