static int vrtc_mrst_rpmsg_probe(struct rpmsg_channel *rpdev) { int ret; if (rpdev == NULL) { pr_err("vrtc_mrst rpmsg channel not created\n"); ret = -ENODEV; goto out; } dev_info(&rpdev->dev, "Probed vrtc_mrst rpmsg device\n"); /* Allocate rpmsg instance for fw_update*/ ret = alloc_rpmsg_instance(rpdev, &vrtc_mrst_instance); if (!vrtc_mrst_instance) { dev_err(&rpdev->dev, "kzalloc vrtc_mrst instance failed\n"); goto out; } /* Initialize rpmsg instance */ init_rpmsg_instance(vrtc_mrst_instance); ret = vrtc_mrst_init(); if (ret) free_rpmsg_instance(rpdev, &vrtc_mrst_instance); out: return ret; }
static int mip_rpmsg_probe(struct rpmsg_channel *rpdev) { int ret = 0; if (rpdev == NULL) { pr_err("rpmsg channel not created\n"); ret = -ENODEV; goto out; } dev_info(&rpdev->dev, "Probed mip rpmsg device\n"); /* Allocate rpmsg instance for mip*/ ret = alloc_rpmsg_instance(rpdev, &mip_instance); if (!mip_instance) { dev_err(&rpdev->dev, "kzalloc mip instance failed\n"); goto out; } /* Initialize rpmsg instance */ init_rpmsg_instance(mip_instance); /* Init mip base */ intel_mip_base = ioremap_nocache(IPC_MIP_BASE, IPC_MIP_MAX_ADDR); if (!intel_mip_base) { ret = -ENOMEM; goto rpmsg_err; } /* Create debugfs for mip regs */ scu_mip_kobj = kobject_create_and_add(mip_attr_group.name, kernel_kobj); if (!scu_mip_kobj) { ret = -ENOMEM; goto mip_base_err; } ret = sysfs_create_group(scu_mip_kobj, &mip_attr_group); if (ret) { kobject_put(scu_mip_kobj); goto mip_base_err; } ret = scu_mip_init(); goto out; mip_base_err: iounmap(intel_mip_base); rpmsg_err: free_rpmsg_instance(rpdev, &mip_instance); out: return ret; }
static int rpmsg_ipc_probe(struct rpmsg_channel *rpdev) { int ret = 0; int i; struct rpmsg_device_data *ddata = rpmsg_ddata; if (rpdev == NULL) { pr_err("rpmsg channel %s not created\n", rpdev->id.name); ret = -ENODEV; goto out; } dev_info(&rpdev->dev, "Probed rpmsg_ipc device %s\n", rpdev->id.name); for (i = RPMSG_IPC_COMMAND; i < RPMSG_IPC_COMMAND_TYPE_NUM; i++) { if (!strncmp(rpdev->id.name, ddata[i].name, RPMSG_NAME_SIZE)) { /* Allocate rpmsg instance for kernel IPC calls*/ ret = alloc_rpmsg_instance(rpdev, &ddata[i].rpmsg_instance); if (!ddata[i].rpmsg_instance) { dev_err(&rpdev->dev, "alloc rpmsg instance failed\n"); goto out; } /* Initialize rpmsg instance */ init_rpmsg_instance(ddata[i].rpmsg_instance); ddata[i].rpdev = rpdev; break; } } out: return ret; }