/* API interfaces */ static long chd_dec_ioctl(struct file *fd, unsigned int cmd, unsigned long ua) { struct crystalhd_adp *adp = chd_get_adp(); crystalhd_cmd_proc cproc; struct crystalhd_user *uc; int ret; if (!adp || !fd) { BCMLOG_ERR("Invalid adp\n"); return -EINVAL; } uc = (struct crystalhd_user *)fd->private_data; if (!uc) { BCMLOG_ERR("Failed to get uc\n"); return -ENODATA; } lock_kernel(); cproc = crystalhd_get_cmd_proc(&adp->cmds, cmd, uc); if (!cproc) { BCMLOG_ERR("Unhandled command: %d\n", cmd); unlock_kernel(); return -EINVAL; } ret = chd_dec_api_cmd(adp, ua, uc->uid, cmd, cproc); unlock_kernel(); return ret; }
static long chd_dec_ioctl(struct file *fd, unsigned int cmd, unsigned long ua) #endif { struct crystalhd_adp *adp = chd_get_adp(); struct device *dev = &adp->pdev->dev; crystalhd_cmd_proc cproc; struct crystalhd_user *uc; dev_dbg(dev, "Entering %s\n", __func__); if (!adp || !fd) { dev_err(chddev(), "Invalid adp\n"); return -EINVAL; } uc = fd->private_data; if (!uc) { dev_err(chddev(), "Failed to get uc\n"); return -ENODATA; } cproc = crystalhd_get_cmd_proc(&adp->cmds, cmd, uc); if (!cproc && !(adp->cmds.state & BC_LINK_SUSPEND)) { dev_err(chddev(), "Unhandled command: %d\n", cmd); return -EINVAL; } return chd_dec_api_cmd(adp, ua, uc->uid, cmd, cproc); }