Lines Matching defs:ace

179 	/* runtime PM link from ace to csi */
195 static int construct_command(struct mei_ace *ace, struct ace_cmd *cmd,
211 hdr->firmware_id = ace->firmware_id;
215 hdr->firmware_id = ace->firmware_id;
225 static int mei_ace_send(struct mei_ace *ace, struct ace_cmd *cmd,
228 union ace_notif_hdr *resp_hdr = &ace->cmd_response.hdr;
229 union ace_notif_hdr *ack_hdr = &ace->cmd_ack.hdr;
233 mutex_lock(&ace->lock);
235 reinit_completion(&ace->cmd_completion);
237 ret = mei_cldev_send(ace->cldev, (u8 *)cmd, len);
241 ret = wait_for_completion_killable_timeout(&ace->cmd_completion,
265 ret = wait_for_completion_killable_timeout(&ace->cmd_completion,
280 mutex_unlock(&ace->lock);
285 static int ace_set_camera_owner(struct mei_ace *ace,
298 cmd_size = construct_command(ace, &cmd, cmd_id);
300 ret = mei_ace_send(ace, &cmd, cmd_size, false);
308 static inline int ace_get_firmware_id(struct mei_ace *ace)
314 cmd_size = construct_command(ace, &cmd, ACE_GET_FW_ID);
316 ret = mei_ace_send(ace, &cmd, cmd_size, true);
323 static void handle_command_response(struct mei_ace *ace,
331 memcpy(&ace->cmd_response, resp, len);
332 complete(&ace->cmd_completion);
341 static void handle_command_ack(struct mei_ace *ace,
348 ace->firmware_id = ack->cont.firmware_id;
352 memcpy(&ace->cmd_ack, ack, len);
353 complete(&ace->cmd_completion);
363 struct mei_ace *ace = mei_cldev_get_drvdata(cldev);
375 handle_command_ack(ace, &event, ret);
381 handle_command_response(ace, &event, ret);
395 static int mei_ace_setup_dev_link(struct mei_ace *ace)
397 struct device *dev = &ace->cldev->dev;
415 ace->csi_link = device_link_add(csi_dev, dev, DL_FLAG_PM_RUNTIME |
417 if (!ace->csi_link) {
423 ace->csi_dev = csi_dev;
438 struct mei_ace *ace;
442 ace = container_of(work, struct mei_ace, work);
443 dev = &ace->cldev->dev;
445 ret = ace_set_camera_owner(ace, ACE_CAMERA_HOST);
462 struct mei_ace *ace;
465 ace = devm_kzalloc(dev, sizeof(struct mei_ace), GFP_KERNEL);
466 if (!ace)
469 ace->cldev = cldev;
470 mutex_init(&ace->lock);
471 init_completion(&ace->cmd_completion);
472 INIT_WORK(&ace->work, mei_ace_post_probe_work);
474 mei_cldev_set_drvdata(cldev, ace);
488 ret = ace_get_firmware_id(ace);
497 ret = mei_ace_setup_dev_link(ace);
501 schedule_work(&ace->work);
513 mutex_destroy(&ace->lock);
520 struct mei_ace *ace = mei_cldev_get_drvdata(cldev);
522 cancel_work_sync(&ace->work);
524 device_link_del(ace->csi_link);
525 put_device(ace->csi_dev);
530 ace_set_camera_owner(ace, ACE_CAMERA_IVSC);
532 mutex_destroy(&ace->lock);
537 struct mei_ace *ace = dev_get_drvdata(dev);
539 return ace_set_camera_owner(ace, ACE_CAMERA_IVSC);
544 struct mei_ace *ace = dev_get_drvdata(dev);
546 return ace_set_camera_owner(ace, ACE_CAMERA_HOST);