gcam 183 drivers/staging/greybus/camera.c #define gcam_dbg(gcam, format...) dev_dbg(&gcam->bundle->dev, format) gcam 184 drivers/staging/greybus/camera.c #define gcam_info(gcam, format...) dev_info(&gcam->bundle->dev, format) gcam 185 drivers/staging/greybus/camera.c #define gcam_err(gcam, format...) dev_err(&gcam->bundle->dev, format) gcam 222 drivers/staging/greybus/camera.c static int gb_camera_get_max_pkt_size(struct gb_camera *gcam, gcam 235 drivers/staging/greybus/camera.c gcam_err(gcam, "unsupported greybus image format: %d\n", gcam 244 drivers/staging/greybus/camera.c gcam_err(gcam, gcam 253 drivers/staging/greybus/camera.c gcam_err(gcam, gcam 271 drivers/staging/greybus/camera.c struct gb_camera *gcam, gcam 279 drivers/staging/greybus/camera.c gcam_err(gcam, "response padding != 0\n"); gcam 284 drivers/staging/greybus/camera.c gcam_err(gcam, "got #streams %u > request %u\n", gcam 293 drivers/staging/greybus/camera.c gcam_err(gcam, "stream #%u padding != 0\n", i); gcam 305 drivers/staging/greybus/camera.c static int gb_camera_set_intf_power_mode(struct gb_camera *gcam, u8 intf_id, gcam 308 drivers/staging/greybus/camera.c struct gb_svc *svc = gcam->connection->hd->svc; gcam 336 drivers/staging/greybus/camera.c static int gb_camera_set_power_mode(struct gb_camera *gcam, bool hs) gcam 338 drivers/staging/greybus/camera.c struct gb_interface *intf = gcam->connection->intf; gcam 339 drivers/staging/greybus/camera.c struct gb_svc *svc = gcam->connection->hd->svc; gcam 342 drivers/staging/greybus/camera.c ret = gb_camera_set_intf_power_mode(gcam, intf->interface_id, hs); gcam 344 drivers/staging/greybus/camera.c gcam_err(gcam, "failed to set module interface to %s (%d)\n", gcam 349 drivers/staging/greybus/camera.c ret = gb_camera_set_intf_power_mode(gcam, svc->ap_intf_id, hs); gcam 351 drivers/staging/greybus/camera.c gb_camera_set_intf_power_mode(gcam, intf->interface_id, !hs); gcam 352 drivers/staging/greybus/camera.c gcam_err(gcam, "failed to set AP interface to %s (%d)\n", gcam 380 drivers/staging/greybus/camera.c static int gb_camera_setup_data_connection(struct gb_camera *gcam, gcam 393 drivers/staging/greybus/camera.c conn = gb_connection_create_offloaded(gcam->bundle, gcam->data_cport_id, gcam 399 drivers/staging/greybus/camera.c gcam->data_connection = conn; gcam 400 drivers/staging/greybus/camera.c gb_connection_set_data(conn, gcam); gcam 407 drivers/staging/greybus/camera.c ret = gb_camera_set_power_mode(gcam, true); gcam 428 drivers/staging/greybus/camera.c ret = gb_camera_get_max_pkt_size(gcam, resp); gcam 435 drivers/staging/greybus/camera.c ret = gb_hd_output(gcam->connection->hd, &csi_cfg, gcam 439 drivers/staging/greybus/camera.c gcam_err(gcam, "failed to start the CSI transmitter\n"); gcam 451 drivers/staging/greybus/camera.c gb_camera_set_power_mode(gcam, false); gcam 453 drivers/staging/greybus/camera.c gb_connection_disable(gcam->data_connection); gcam 455 drivers/staging/greybus/camera.c gb_connection_destroy(gcam->data_connection); gcam 456 drivers/staging/greybus/camera.c gcam->data_connection = NULL; gcam 460 drivers/staging/greybus/camera.c static void gb_camera_teardown_data_connection(struct gb_camera *gcam) gcam 469 drivers/staging/greybus/camera.c ret = gb_hd_output(gcam->connection->hd, &csi_cfg, gcam 474 drivers/staging/greybus/camera.c gcam_err(gcam, "failed to stop the CSI transmitter\n"); gcam 477 drivers/staging/greybus/camera.c gb_camera_set_power_mode(gcam, false); gcam 480 drivers/staging/greybus/camera.c gb_connection_disable(gcam->data_connection); gcam 481 drivers/staging/greybus/camera.c gb_connection_destroy(gcam->data_connection); gcam 482 drivers/staging/greybus/camera.c gcam->data_connection = NULL; gcam 489 drivers/staging/greybus/camera.c static int gb_camera_capabilities(struct gb_camera *gcam, gcam 494 drivers/staging/greybus/camera.c ret = gb_pm_runtime_get_sync(gcam->bundle); gcam 498 drivers/staging/greybus/camera.c mutex_lock(&gcam->mutex); gcam 500 drivers/staging/greybus/camera.c if (!gcam->connection) { gcam 505 drivers/staging/greybus/camera.c ret = gb_camera_operation_sync_flags(gcam->connection, gcam 511 drivers/staging/greybus/camera.c gcam_err(gcam, "failed to retrieve capabilities: %d\n", ret); gcam 514 drivers/staging/greybus/camera.c mutex_unlock(&gcam->mutex); gcam 516 drivers/staging/greybus/camera.c gb_pm_runtime_put_autosuspend(gcam->bundle); gcam 521 drivers/staging/greybus/camera.c static int gb_camera_configure_streams(struct gb_camera *gcam, gcam 562 drivers/staging/greybus/camera.c mutex_lock(&gcam->mutex); gcam 564 drivers/staging/greybus/camera.c ret = gb_pm_runtime_get_sync(gcam->bundle); gcam 568 drivers/staging/greybus/camera.c if (!gcam->connection) { gcam 573 drivers/staging/greybus/camera.c ret = gb_camera_operation_sync_flags(gcam->connection, gcam 581 drivers/staging/greybus/camera.c ret = gb_camera_configure_streams_validate_response(gcam, resp, gcam 605 drivers/staging/greybus/camera.c if (gcam->state == GB_CAMERA_STATE_CONFIGURED) { gcam 606 drivers/staging/greybus/camera.c gb_camera_teardown_data_connection(gcam); gcam 607 drivers/staging/greybus/camera.c gcam->state = GB_CAMERA_STATE_UNCONFIGURED; gcam 616 drivers/staging/greybus/camera.c gb_pm_runtime_put_noidle(gcam->bundle); gcam 626 drivers/staging/greybus/camera.c gb_pm_runtime_get_noresume(gcam->bundle); gcam 629 drivers/staging/greybus/camera.c ret = gb_camera_setup_data_connection(gcam, resp, csi_params); gcam 632 drivers/staging/greybus/camera.c gb_operation_sync(gcam->connection, gcam 638 drivers/staging/greybus/camera.c gb_pm_runtime_put_noidle(gcam->bundle); gcam 642 drivers/staging/greybus/camera.c gcam->state = GB_CAMERA_STATE_CONFIGURED; gcam 645 drivers/staging/greybus/camera.c gb_pm_runtime_put_autosuspend(gcam->bundle); gcam 648 drivers/staging/greybus/camera.c mutex_unlock(&gcam->mutex); gcam 654 drivers/staging/greybus/camera.c static int gb_camera_capture(struct gb_camera *gcam, u32 request_id, gcam 676 drivers/staging/greybus/camera.c mutex_lock(&gcam->mutex); gcam 678 drivers/staging/greybus/camera.c if (!gcam->connection) { gcam 683 drivers/staging/greybus/camera.c ret = gb_operation_sync(gcam->connection, GB_CAMERA_TYPE_CAPTURE, gcam 686 drivers/staging/greybus/camera.c mutex_unlock(&gcam->mutex); gcam 693 drivers/staging/greybus/camera.c static int gb_camera_flush(struct gb_camera *gcam, u32 *request_id) gcam 698 drivers/staging/greybus/camera.c mutex_lock(&gcam->mutex); gcam 700 drivers/staging/greybus/camera.c if (!gcam->connection) { gcam 705 drivers/staging/greybus/camera.c ret = gb_operation_sync(gcam->connection, GB_CAMERA_TYPE_FLUSH, NULL, 0, gcam 715 drivers/staging/greybus/camera.c mutex_unlock(&gcam->mutex); gcam 722 drivers/staging/greybus/camera.c struct gb_camera *gcam = gb_connection_get_data(op->connection); gcam 727 drivers/staging/greybus/camera.c gcam_err(gcam, "Unsupported unsolicited event: %u\n", op->type); gcam 734 drivers/staging/greybus/camera.c gcam_err(gcam, "Wrong event size received (%zu < %zu)\n", gcam 741 drivers/staging/greybus/camera.c gcam_dbg(gcam, "received metadata for request %u, frame %u, stream %u\n", gcam 774 drivers/staging/greybus/camera.c struct gb_camera *gcam = priv; gcam 778 drivers/staging/greybus/camera.c ret = gb_camera_capabilities(gcam, data, &capabilities_len); gcam 789 drivers/staging/greybus/camera.c struct gb_camera *gcam = priv; gcam 813 drivers/staging/greybus/camera.c ret = gb_camera_configure_streams(gcam, &gb_nstreams, gcam 847 drivers/staging/greybus/camera.c struct gb_camera *gcam = priv; gcam 849 drivers/staging/greybus/camera.c return gb_camera_capture(gcam, request_id, streams, num_frames, gcam 855 drivers/staging/greybus/camera.c struct gb_camera *gcam = priv; gcam 857 drivers/staging/greybus/camera.c return gb_camera_flush(gcam, request_id); gcam 871 drivers/staging/greybus/camera.c static ssize_t gb_camera_debugfs_capabilities(struct gb_camera *gcam, gcam 875 drivers/staging/greybus/camera.c &gcam->debugfs.buffers[GB_CAMERA_DEBUGFS_BUFFER_CAPABILITIES]; gcam 885 drivers/staging/greybus/camera.c ret = gb_camera_capabilities(gcam, caps, &size); gcam 907 drivers/staging/greybus/camera.c static ssize_t gb_camera_debugfs_configure_streams(struct gb_camera *gcam, gcam 911 drivers/staging/greybus/camera.c &gcam->debugfs.buffers[GB_CAMERA_DEBUGFS_BUFFER_STREAMS]; gcam 976 drivers/staging/greybus/camera.c ret = gb_camera_configure_streams(gcam, &nstreams, &flags, streams, gcam 1001 drivers/staging/greybus/camera.c static ssize_t gb_camera_debugfs_capture(struct gb_camera *gcam, gcam 1034 drivers/staging/greybus/camera.c ret = gb_camera_capture(gcam, request_id, streams_mask, num_frames, 0, gcam 1042 drivers/staging/greybus/camera.c static ssize_t gb_camera_debugfs_flush(struct gb_camera *gcam, gcam 1046 drivers/staging/greybus/camera.c &gcam->debugfs.buffers[GB_CAMERA_DEBUGFS_BUFFER_FLUSH]; gcam 1050 drivers/staging/greybus/camera.c ret = gb_camera_flush(gcam, &req_id); gcam 1063 drivers/staging/greybus/camera.c ssize_t (*execute)(struct gb_camera *gcam, char *buf, size_t len); gcam 1094 drivers/staging/greybus/camera.c struct gb_camera *gcam = file_inode(file)->i_private; gcam 1100 drivers/staging/greybus/camera.c ret = op->execute(gcam, NULL, 0); gcam 1105 drivers/staging/greybus/camera.c buffer = &gcam->debugfs.buffers[op->buffer]; gcam 1116 drivers/staging/greybus/camera.c struct gb_camera *gcam = file_inode(file)->i_private; gcam 1134 drivers/staging/greybus/camera.c ret = op->execute(gcam, kbuf, len); gcam 1164 drivers/staging/greybus/camera.c static int gb_camera_debugfs_init(struct gb_camera *gcam) gcam 1166 drivers/staging/greybus/camera.c struct gb_connection *connection = gcam->connection; gcam 1174 drivers/staging/greybus/camera.c gcam->bundle->id); gcam 1176 drivers/staging/greybus/camera.c gcam->debugfs.root = debugfs_create_dir(dirname, gb_debugfs_get()); gcam 1178 drivers/staging/greybus/camera.c gcam->debugfs.buffers = gcam 1180 drivers/staging/greybus/camera.c sizeof(*gcam->debugfs.buffers))); gcam 1181 drivers/staging/greybus/camera.c if (!gcam->debugfs.buffers) gcam 1188 drivers/staging/greybus/camera.c gcam->debugfs.buffers[i].length = 0; gcam 1191 drivers/staging/greybus/camera.c gcam->debugfs.root, gcam, gcam 1198 drivers/staging/greybus/camera.c static void gb_camera_debugfs_cleanup(struct gb_camera *gcam) gcam 1200 drivers/staging/greybus/camera.c debugfs_remove_recursive(gcam->debugfs.root); gcam 1202 drivers/staging/greybus/camera.c vfree(gcam->debugfs.buffers); gcam 1209 drivers/staging/greybus/camera.c static void gb_camera_cleanup(struct gb_camera *gcam) gcam 1211 drivers/staging/greybus/camera.c gb_camera_debugfs_cleanup(gcam); gcam 1213 drivers/staging/greybus/camera.c mutex_lock(&gcam->mutex); gcam 1214 drivers/staging/greybus/camera.c if (gcam->data_connection) { gcam 1215 drivers/staging/greybus/camera.c gb_connection_disable(gcam->data_connection); gcam 1216 drivers/staging/greybus/camera.c gb_connection_destroy(gcam->data_connection); gcam 1217 drivers/staging/greybus/camera.c gcam->data_connection = NULL; gcam 1220 drivers/staging/greybus/camera.c if (gcam->connection) { gcam 1221 drivers/staging/greybus/camera.c gb_connection_disable(gcam->connection); gcam 1222 drivers/staging/greybus/camera.c gb_connection_destroy(gcam->connection); gcam 1223 drivers/staging/greybus/camera.c gcam->connection = NULL; gcam 1225 drivers/staging/greybus/camera.c mutex_unlock(&gcam->mutex); gcam 1239 drivers/staging/greybus/camera.c struct gb_camera *gcam; gcam 1270 drivers/staging/greybus/camera.c gcam = kzalloc(sizeof(*gcam), GFP_KERNEL); gcam 1271 drivers/staging/greybus/camera.c if (!gcam) gcam 1274 drivers/staging/greybus/camera.c mutex_init(&gcam->mutex); gcam 1276 drivers/staging/greybus/camera.c gcam->bundle = bundle; gcam 1277 drivers/staging/greybus/camera.c gcam->state = GB_CAMERA_STATE_UNCONFIGURED; gcam 1278 drivers/staging/greybus/camera.c gcam->data_cport_id = data_cport_id; gcam 1287 drivers/staging/greybus/camera.c gcam->connection = conn; gcam 1288 drivers/staging/greybus/camera.c gb_connection_set_data(conn, gcam); gcam 1294 drivers/staging/greybus/camera.c ret = gb_camera_debugfs_init(gcam); gcam 1298 drivers/staging/greybus/camera.c gcam->module.priv = gcam; gcam 1299 drivers/staging/greybus/camera.c gcam->module.ops = &gb_cam_ops; gcam 1300 drivers/staging/greybus/camera.c gcam->module.interface_id = gcam->connection->intf->interface_id; gcam 1301 drivers/staging/greybus/camera.c gcam->module.release = gb_camera_release_module; gcam 1302 drivers/staging/greybus/camera.c ret = gb_camera_register(&gcam->module); gcam 1306 drivers/staging/greybus/camera.c greybus_set_drvdata(bundle, gcam); gcam 1308 drivers/staging/greybus/camera.c gb_pm_runtime_put_autosuspend(gcam->bundle); gcam 1313 drivers/staging/greybus/camera.c gb_camera_cleanup(gcam); gcam 1314 drivers/staging/greybus/camera.c kfree(gcam); gcam 1320 drivers/staging/greybus/camera.c struct gb_camera *gcam = greybus_get_drvdata(bundle); gcam 1327 drivers/staging/greybus/camera.c gb_camera_cleanup(gcam); gcam 1328 drivers/staging/greybus/camera.c gb_camera_unregister(&gcam->module); gcam 1340 drivers/staging/greybus/camera.c struct gb_camera *gcam = greybus_get_drvdata(bundle); gcam 1342 drivers/staging/greybus/camera.c if (gcam->data_connection) gcam 1343 drivers/staging/greybus/camera.c gb_connection_disable(gcam->data_connection); gcam 1345 drivers/staging/greybus/camera.c gb_connection_disable(gcam->connection); gcam 1353 drivers/staging/greybus/camera.c struct gb_camera *gcam = greybus_get_drvdata(bundle); gcam 1356 drivers/staging/greybus/camera.c ret = gb_connection_enable(gcam->connection); gcam 1358 drivers/staging/greybus/camera.c gcam_err(gcam, "failed to enable connection: %d\n", ret); gcam 1362 drivers/staging/greybus/camera.c if (gcam->data_connection) { gcam 1363 drivers/staging/greybus/camera.c ret = gb_connection_enable(gcam->data_connection); gcam 1365 drivers/staging/greybus/camera.c gcam_err(gcam,