Lines Matching defs:dbc_dev

40 static int send_dbc_cmd(struct psp_dbc_device *dbc_dev,
45 dbc_dev->mbox->req.header.status = 0;
46 ret = psp_send_platform_access_msg(msg, (struct psp_request *)dbc_dev->mbox);
50 dev_dbg(dbc_dev->dev,
52 msg, dbc_dev->mbox->req.header.status);
55 if (dbc_dev->mbox->req.header.status == error_codes[i].psp)
63 static int send_dbc_nonce(struct psp_dbc_device *dbc_dev)
67 dbc_dev->mbox->req.header.payload_size = sizeof(dbc_dev->mbox->dbc_nonce);
68 ret = send_dbc_cmd(dbc_dev, PSP_DYNAMIC_BOOST_GET_NONCE);
70 dev_dbg(dbc_dev->dev, "retrying get nonce\n");
71 ret = send_dbc_cmd(dbc_dev, PSP_DYNAMIC_BOOST_GET_NONCE);
77 static int send_dbc_parameter(struct psp_dbc_device *dbc_dev)
79 dbc_dev->mbox->req.header.payload_size = sizeof(dbc_dev->mbox->dbc_param);
81 switch (dbc_dev->mbox->dbc_param.user.msg_index) {
85 return send_dbc_cmd(dbc_dev, PSP_DYNAMIC_BOOST_SET_PARAMETER);
95 return send_dbc_cmd(dbc_dev, PSP_DYNAMIC_BOOST_GET_PARAMETER);
103 struct psp_dbc_device *dbc_dev = psp->dbc_data;
105 if (!dbc_dev)
108 misc_deregister(&dbc_dev->char_dev);
109 mutex_destroy(&dbc_dev->ioctl_mutex);
117 struct psp_dbc_device *dbc_dev;
122 dbc_dev = psp_master->dbc_data;
124 mutex_lock(&dbc_dev->ioctl_mutex);
128 if (copy_from_user(&dbc_dev->mbox->dbc_nonce.user, argp,
134 ret = send_dbc_nonce(dbc_dev);
138 if (copy_to_user(argp, &dbc_dev->mbox->dbc_nonce.user,
145 dbc_dev->mbox->req.header.payload_size = sizeof(dbc_dev->mbox->dbc_set_uid);
146 if (copy_from_user(&dbc_dev->mbox->dbc_set_uid.user, argp,
152 ret = send_dbc_cmd(dbc_dev, PSP_DYNAMIC_BOOST_SET_UID);
156 if (copy_to_user(argp, &dbc_dev->mbox->dbc_set_uid.user,
163 if (copy_from_user(&dbc_dev->mbox->dbc_param.user, argp,
169 ret = send_dbc_parameter(dbc_dev);
173 if (copy_to_user(argp, &dbc_dev->mbox->dbc_param.user,
184 mutex_unlock(&dbc_dev->ioctl_mutex);
197 struct psp_dbc_device *dbc_dev;
203 dbc_dev = devm_kzalloc(dev, sizeof(*dbc_dev), GFP_KERNEL);
204 if (!dbc_dev)
208 dbc_dev->mbox = (void *)devm_get_free_pages(dev, GFP_KERNEL | __GFP_ZERO, 0);
209 if (!dbc_dev->mbox) {
214 psp->dbc_data = dbc_dev;
215 dbc_dev->dev = dev;
217 ret = send_dbc_nonce(dbc_dev);
219 dev_dbg(dbc_dev->dev,
223 dev_dbg(dbc_dev->dev, "dynamic boost control is %savailable\n",
230 dbc_dev->char_dev.minor = MISC_DYNAMIC_MINOR;
231 dbc_dev->char_dev.name = "dbc";
232 dbc_dev->char_dev.fops = &dbc_fops;
233 dbc_dev->char_dev.mode = 0600;
234 ret = misc_register(&dbc_dev->char_dev);
238 mutex_init(&dbc_dev->ioctl_mutex);
243 devm_free_pages(dev, (unsigned long)dbc_dev->mbox);
247 devm_kfree(dev, dbc_dev);