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 void mip_rpmsg_remove(struct rpmsg_channel *rpdev) { scu_mip_exit(); iounmap(intel_mip_base); free_rpmsg_instance(rpdev, &mip_instance); sysfs_remove_group(scu_mip_kobj, &mip_attr_group); kobject_put(scu_mip_kobj); dev_info(&rpdev->dev, "Removed mip rpmsg device\n"); }
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 void rpmsg_ipc_remove(struct rpmsg_channel *rpdev) { int i; struct rpmsg_device_data *ddata = rpmsg_ddata; for (i = RPMSG_IPC_COMMAND; i < RPMSG_IPC_COMMAND_TYPE_NUM; i++) { if (!strncmp(rpdev->id.name, ddata[i].name, RPMSG_NAME_SIZE)) { free_rpmsg_instance(rpdev, &ddata[i].rpmsg_instance); break; } } dev_info(&rpdev->dev, "Removed rpmsg_ipc device\n"); }
static void vrtc_mrst_rpmsg_remove(struct rpmsg_channel *rpdev) { vrtc_mrst_exit(); free_rpmsg_instance(rpdev, &vrtc_mrst_instance); dev_info(&rpdev->dev, "Removed vrtc_mrst rpmsg device\n"); }