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