gsc 340 drivers/media/platform/exynos-gsc/gsc-core.c void gsc_set_prefbuf(struct gsc_dev *gsc, struct gsc_frame *frm) gsc 392 drivers/media/platform/exynos-gsc/gsc-core.c struct gsc_dev *gsc = ctx->gsc_dev; gsc 393 drivers/media/platform/exynos-gsc/gsc-core.c struct gsc_variant *variant = gsc->variant; gsc 521 drivers/media/platform/exynos-gsc/gsc-core.c struct gsc_dev *gsc = ctx->gsc_dev; gsc 522 drivers/media/platform/exynos-gsc/gsc-core.c struct gsc_variant *variant = gsc->variant; gsc 701 drivers/media/platform/exynos-gsc/gsc-core.c struct gsc_dev *gsc = ctx->gsc_dev; gsc 702 drivers/media/platform/exynos-gsc/gsc-core.c struct gsc_variant *variant = gsc->variant; gsc 863 drivers/media/platform/exynos-gsc/gsc-core.c struct gsc_dev *gsc = priv; gsc 867 drivers/media/platform/exynos-gsc/gsc-core.c gsc_irq = gsc_hw_get_irq_status(gsc); gsc 868 drivers/media/platform/exynos-gsc/gsc-core.c gsc_hw_clear_irq(gsc, gsc_irq); gsc 875 drivers/media/platform/exynos-gsc/gsc-core.c spin_lock(&gsc->slock); gsc 877 drivers/media/platform/exynos-gsc/gsc-core.c if (test_and_clear_bit(ST_M2M_PEND, &gsc->state)) { gsc 879 drivers/media/platform/exynos-gsc/gsc-core.c gsc_hw_enable_control(gsc, false); gsc 881 drivers/media/platform/exynos-gsc/gsc-core.c if (test_and_clear_bit(ST_M2M_SUSPENDING, &gsc->state)) { gsc 882 drivers/media/platform/exynos-gsc/gsc-core.c set_bit(ST_M2M_SUSPENDED, &gsc->state); gsc 883 drivers/media/platform/exynos-gsc/gsc-core.c wake_up(&gsc->irq_queue); gsc 886 drivers/media/platform/exynos-gsc/gsc-core.c ctx = v4l2_m2m_get_curr_priv(gsc->m2m.m2m_dev); gsc 891 drivers/media/platform/exynos-gsc/gsc-core.c spin_unlock(&gsc->slock); gsc 897 drivers/media/platform/exynos-gsc/gsc-core.c wake_up(&gsc->irq_queue); gsc 903 drivers/media/platform/exynos-gsc/gsc-core.c spin_unlock(&gsc->slock); gsc 1108 drivers/media/platform/exynos-gsc/gsc-core.c struct gsc_dev *gsc; gsc 1115 drivers/media/platform/exynos-gsc/gsc-core.c gsc = devm_kzalloc(dev, sizeof(struct gsc_dev), GFP_KERNEL); gsc 1116 drivers/media/platform/exynos-gsc/gsc-core.c if (!gsc) gsc 1126 drivers/media/platform/exynos-gsc/gsc-core.c gsc->id = ret; gsc 1127 drivers/media/platform/exynos-gsc/gsc-core.c if (gsc->id >= drv_data->num_entities) { gsc 1128 drivers/media/platform/exynos-gsc/gsc-core.c dev_err(dev, "Invalid platform device id: %d\n", gsc->id); gsc 1132 drivers/media/platform/exynos-gsc/gsc-core.c gsc->num_clocks = drv_data->num_clocks; gsc 1133 drivers/media/platform/exynos-gsc/gsc-core.c gsc->variant = drv_data->variant[gsc->id]; gsc 1134 drivers/media/platform/exynos-gsc/gsc-core.c gsc->pdev = pdev; gsc 1136 drivers/media/platform/exynos-gsc/gsc-core.c init_waitqueue_head(&gsc->irq_queue); gsc 1137 drivers/media/platform/exynos-gsc/gsc-core.c spin_lock_init(&gsc->slock); gsc 1138 drivers/media/platform/exynos-gsc/gsc-core.c mutex_init(&gsc->lock); gsc 1141 drivers/media/platform/exynos-gsc/gsc-core.c gsc->regs = devm_ioremap_resource(dev, res); gsc 1142 drivers/media/platform/exynos-gsc/gsc-core.c if (IS_ERR(gsc->regs)) gsc 1143 drivers/media/platform/exynos-gsc/gsc-core.c return PTR_ERR(gsc->regs); gsc 1151 drivers/media/platform/exynos-gsc/gsc-core.c for (i = 0; i < gsc->num_clocks; i++) { gsc 1152 drivers/media/platform/exynos-gsc/gsc-core.c gsc->clock[i] = devm_clk_get(dev, drv_data->clk_names[i]); gsc 1153 drivers/media/platform/exynos-gsc/gsc-core.c if (IS_ERR(gsc->clock[i])) { gsc 1156 drivers/media/platform/exynos-gsc/gsc-core.c return PTR_ERR(gsc->clock[i]); gsc 1160 drivers/media/platform/exynos-gsc/gsc-core.c for (i = 0; i < gsc->num_clocks; i++) { gsc 1161 drivers/media/platform/exynos-gsc/gsc-core.c ret = clk_prepare_enable(gsc->clock[i]); gsc 1166 drivers/media/platform/exynos-gsc/gsc-core.c clk_disable_unprepare(gsc->clock[i]); gsc 1172 drivers/media/platform/exynos-gsc/gsc-core.c 0, pdev->name, gsc); gsc 1178 drivers/media/platform/exynos-gsc/gsc-core.c ret = v4l2_device_register(dev, &gsc->v4l2_dev); gsc 1182 drivers/media/platform/exynos-gsc/gsc-core.c ret = gsc_register_m2m_device(gsc); gsc 1186 drivers/media/platform/exynos-gsc/gsc-core.c platform_set_drvdata(pdev, gsc); gsc 1188 drivers/media/platform/exynos-gsc/gsc-core.c gsc_hw_set_sw_reset(gsc); gsc 1189 drivers/media/platform/exynos-gsc/gsc-core.c gsc_wait_reset(gsc); gsc 1193 drivers/media/platform/exynos-gsc/gsc-core.c dev_dbg(dev, "gsc-%d registered successfully\n", gsc->id); gsc 1201 drivers/media/platform/exynos-gsc/gsc-core.c v4l2_device_unregister(&gsc->v4l2_dev); gsc 1203 drivers/media/platform/exynos-gsc/gsc-core.c for (i = gsc->num_clocks - 1; i >= 0; i--) gsc 1204 drivers/media/platform/exynos-gsc/gsc-core.c clk_disable_unprepare(gsc->clock[i]); gsc 1210 drivers/media/platform/exynos-gsc/gsc-core.c struct gsc_dev *gsc = platform_get_drvdata(pdev); gsc 1215 drivers/media/platform/exynos-gsc/gsc-core.c gsc_unregister_m2m_device(gsc); gsc 1216 drivers/media/platform/exynos-gsc/gsc-core.c v4l2_device_unregister(&gsc->v4l2_dev); gsc 1219 drivers/media/platform/exynos-gsc/gsc-core.c for (i = 0; i < gsc->num_clocks; i++) gsc 1220 drivers/media/platform/exynos-gsc/gsc-core.c clk_disable_unprepare(gsc->clock[i]); gsc 1230 drivers/media/platform/exynos-gsc/gsc-core.c static int gsc_m2m_suspend(struct gsc_dev *gsc) gsc 1235 drivers/media/platform/exynos-gsc/gsc-core.c spin_lock_irqsave(&gsc->slock, flags); gsc 1236 drivers/media/platform/exynos-gsc/gsc-core.c if (!gsc_m2m_pending(gsc)) { gsc 1237 drivers/media/platform/exynos-gsc/gsc-core.c spin_unlock_irqrestore(&gsc->slock, flags); gsc 1240 drivers/media/platform/exynos-gsc/gsc-core.c clear_bit(ST_M2M_SUSPENDED, &gsc->state); gsc 1241 drivers/media/platform/exynos-gsc/gsc-core.c set_bit(ST_M2M_SUSPENDING, &gsc->state); gsc 1242 drivers/media/platform/exynos-gsc/gsc-core.c spin_unlock_irqrestore(&gsc->slock, flags); gsc 1244 drivers/media/platform/exynos-gsc/gsc-core.c timeout = wait_event_timeout(gsc->irq_queue, gsc 1245 drivers/media/platform/exynos-gsc/gsc-core.c test_bit(ST_M2M_SUSPENDED, &gsc->state), gsc 1248 drivers/media/platform/exynos-gsc/gsc-core.c clear_bit(ST_M2M_SUSPENDING, &gsc->state); gsc 1252 drivers/media/platform/exynos-gsc/gsc-core.c static void gsc_m2m_resume(struct gsc_dev *gsc) gsc 1257 drivers/media/platform/exynos-gsc/gsc-core.c spin_lock_irqsave(&gsc->slock, flags); gsc 1259 drivers/media/platform/exynos-gsc/gsc-core.c ctx = gsc->m2m.ctx; gsc 1260 drivers/media/platform/exynos-gsc/gsc-core.c gsc->m2m.ctx = NULL; gsc 1261 drivers/media/platform/exynos-gsc/gsc-core.c spin_unlock_irqrestore(&gsc->slock, flags); gsc 1263 drivers/media/platform/exynos-gsc/gsc-core.c if (test_and_clear_bit(ST_M2M_SUSPENDED, &gsc->state)) gsc 1269 drivers/media/platform/exynos-gsc/gsc-core.c struct gsc_dev *gsc = dev_get_drvdata(dev); gsc 1273 drivers/media/platform/exynos-gsc/gsc-core.c pr_debug("gsc%d: state: 0x%lx\n", gsc->id, gsc->state); gsc 1275 drivers/media/platform/exynos-gsc/gsc-core.c for (i = 0; i < gsc->num_clocks; i++) { gsc 1276 drivers/media/platform/exynos-gsc/gsc-core.c ret = clk_prepare_enable(gsc->clock[i]); gsc 1279 drivers/media/platform/exynos-gsc/gsc-core.c clk_disable_unprepare(gsc->clock[i]); gsc 1284 drivers/media/platform/exynos-gsc/gsc-core.c gsc_hw_set_sw_reset(gsc); gsc 1285 drivers/media/platform/exynos-gsc/gsc-core.c gsc_wait_reset(gsc); gsc 1286 drivers/media/platform/exynos-gsc/gsc-core.c gsc_m2m_resume(gsc); gsc 1293 drivers/media/platform/exynos-gsc/gsc-core.c struct gsc_dev *gsc = dev_get_drvdata(dev); gsc 1297 drivers/media/platform/exynos-gsc/gsc-core.c ret = gsc_m2m_suspend(gsc); gsc 1301 drivers/media/platform/exynos-gsc/gsc-core.c for (i = gsc->num_clocks - 1; i >= 0; i--) gsc 1302 drivers/media/platform/exynos-gsc/gsc-core.c clk_disable_unprepare(gsc->clock[i]); gsc 1304 drivers/media/platform/exynos-gsc/gsc-core.c pr_debug("gsc%d: state: 0x%lx\n", gsc->id, gsc->state); gsc 378 drivers/media/platform/exynos-gsc/gsc-core.h void gsc_set_prefbuf(struct gsc_dev *gsc, struct gsc_frame *frm); gsc 379 drivers/media/platform/exynos-gsc/gsc-core.h int gsc_register_m2m_device(struct gsc_dev *gsc); gsc 380 drivers/media/platform/exynos-gsc/gsc-core.h void gsc_unregister_m2m_device(struct gsc_dev *gsc); gsc 30 drivers/media/platform/exynos-gsc/gsc-m2m.c struct gsc_dev *gsc = ctx->gsc_dev; gsc 33 drivers/media/platform/exynos-gsc/gsc-m2m.c curr_ctx = v4l2_m2m_get_curr_priv(gsc->m2m.m2m_dev); gsc 34 drivers/media/platform/exynos-gsc/gsc-m2m.c if (!gsc_m2m_pending(gsc) || (curr_ctx != ctx)) gsc 38 drivers/media/platform/exynos-gsc/gsc-m2m.c ret = wait_event_timeout(gsc->irq_queue, gsc 149 drivers/media/platform/exynos-gsc/gsc-m2m.c struct gsc_dev *gsc; gsc 157 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc = ctx->gsc_dev; gsc 158 drivers/media/platform/exynos-gsc/gsc-m2m.c spin_lock_irqsave(&gsc->slock, flags); gsc 160 drivers/media/platform/exynos-gsc/gsc-m2m.c set_bit(ST_M2M_PEND, &gsc->state); gsc 163 drivers/media/platform/exynos-gsc/gsc-m2m.c if (gsc->m2m.ctx != ctx) { gsc 165 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc->m2m.ctx, ctx); gsc 167 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc->m2m.ctx = ctx; gsc 174 drivers/media/platform/exynos-gsc/gsc-m2m.c wake_up(&gsc->irq_queue); gsc 184 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc_set_prefbuf(gsc, &ctx->s_frame); gsc 185 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc_hw_set_input_addr(gsc, &ctx->s_frame.addr, GSC_M2M_BUF_NUM); gsc 186 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc_hw_set_output_addr(gsc, &ctx->d_frame.addr, GSC_M2M_BUF_NUM); gsc 189 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc_hw_set_input_buf_masking(gsc, GSC_M2M_BUF_NUM, false); gsc 190 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc_hw_set_output_buf_masking(gsc, GSC_M2M_BUF_NUM, false); gsc 191 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc_hw_set_frm_done_irq_mask(gsc, false); gsc 192 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc_hw_set_gsc_irq_enable(gsc, true); gsc 217 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc_hw_enable_control(gsc, true); gsc 219 drivers/media/platform/exynos-gsc/gsc-m2m.c spin_unlock_irqrestore(&gsc->slock, flags); gsc 224 drivers/media/platform/exynos-gsc/gsc-m2m.c spin_unlock_irqrestore(&gsc->slock, flags); gsc 291 drivers/media/platform/exynos-gsc/gsc-m2m.c struct gsc_dev *gsc = ctx->gsc_dev; gsc 296 drivers/media/platform/exynos-gsc/gsc-m2m.c dev_name(&gsc->pdev->dev)); gsc 372 drivers/media/platform/exynos-gsc/gsc-m2m.c struct gsc_dev *gsc = ctx->gsc_dev; gsc 376 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc->variant->in_buf_cnt : gsc->variant->out_buf_cnt; gsc 615 drivers/media/platform/exynos-gsc/gsc-m2m.c struct gsc_dev *gsc = video_drvdata(file); gsc 619 drivers/media/platform/exynos-gsc/gsc-m2m.c pr_debug("pid: %d, state: 0x%lx", task_pid_nr(current), gsc->state); gsc 621 drivers/media/platform/exynos-gsc/gsc-m2m.c if (mutex_lock_interruptible(&gsc->lock)) gsc 630 drivers/media/platform/exynos-gsc/gsc-m2m.c v4l2_fh_init(&ctx->fh, gsc->m2m.vfd); gsc 640 drivers/media/platform/exynos-gsc/gsc-m2m.c ctx->gsc_dev = gsc; gsc 650 drivers/media/platform/exynos-gsc/gsc-m2m.c ctx->m2m_ctx = v4l2_m2m_ctx_init(gsc->m2m.m2m_dev, ctx, queue_init); gsc 657 drivers/media/platform/exynos-gsc/gsc-m2m.c if (gsc->m2m.refcnt++ == 0) gsc 658 drivers/media/platform/exynos-gsc/gsc-m2m.c set_bit(ST_M2M_OPEN, &gsc->state); gsc 662 drivers/media/platform/exynos-gsc/gsc-m2m.c mutex_unlock(&gsc->lock); gsc 672 drivers/media/platform/exynos-gsc/gsc-m2m.c mutex_unlock(&gsc->lock); gsc 679 drivers/media/platform/exynos-gsc/gsc-m2m.c struct gsc_dev *gsc = ctx->gsc_dev; gsc 682 drivers/media/platform/exynos-gsc/gsc-m2m.c task_pid_nr(current), gsc->state, gsc->m2m.refcnt); gsc 684 drivers/media/platform/exynos-gsc/gsc-m2m.c mutex_lock(&gsc->lock); gsc 691 drivers/media/platform/exynos-gsc/gsc-m2m.c if (--gsc->m2m.refcnt <= 0) gsc 692 drivers/media/platform/exynos-gsc/gsc-m2m.c clear_bit(ST_M2M_OPEN, &gsc->state); gsc 695 drivers/media/platform/exynos-gsc/gsc-m2m.c mutex_unlock(&gsc->lock); gsc 703 drivers/media/platform/exynos-gsc/gsc-m2m.c struct gsc_dev *gsc = ctx->gsc_dev; gsc 706 drivers/media/platform/exynos-gsc/gsc-m2m.c if (mutex_lock_interruptible(&gsc->lock)) gsc 710 drivers/media/platform/exynos-gsc/gsc-m2m.c mutex_unlock(&gsc->lock); gsc 718 drivers/media/platform/exynos-gsc/gsc-m2m.c struct gsc_dev *gsc = ctx->gsc_dev; gsc 721 drivers/media/platform/exynos-gsc/gsc-m2m.c if (mutex_lock_interruptible(&gsc->lock)) gsc 725 drivers/media/platform/exynos-gsc/gsc-m2m.c mutex_unlock(&gsc->lock); gsc 744 drivers/media/platform/exynos-gsc/gsc-m2m.c int gsc_register_m2m_device(struct gsc_dev *gsc) gsc 749 drivers/media/platform/exynos-gsc/gsc-m2m.c if (!gsc) gsc 752 drivers/media/platform/exynos-gsc/gsc-m2m.c pdev = gsc->pdev; gsc 754 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc->vdev.fops = &gsc_m2m_fops; gsc 755 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc->vdev.ioctl_ops = &gsc_m2m_ioctl_ops; gsc 756 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc->vdev.release = video_device_release_empty; gsc 757 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc->vdev.lock = &gsc->lock; gsc 758 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc->vdev.vfl_dir = VFL_DIR_M2M; gsc 759 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc->vdev.v4l2_dev = &gsc->v4l2_dev; gsc 760 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc->vdev.device_caps = V4L2_CAP_STREAMING | gsc 762 drivers/media/platform/exynos-gsc/gsc-m2m.c snprintf(gsc->vdev.name, sizeof(gsc->vdev.name), "%s.%d:m2m", gsc 763 drivers/media/platform/exynos-gsc/gsc-m2m.c GSC_MODULE_NAME, gsc->id); gsc 765 drivers/media/platform/exynos-gsc/gsc-m2m.c video_set_drvdata(&gsc->vdev, gsc); gsc 767 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc->m2m.vfd = &gsc->vdev; gsc 768 drivers/media/platform/exynos-gsc/gsc-m2m.c gsc->m2m.m2m_dev = v4l2_m2m_init(&gsc_m2m_ops); gsc 769 drivers/media/platform/exynos-gsc/gsc-m2m.c if (IS_ERR(gsc->m2m.m2m_dev)) { gsc 771 drivers/media/platform/exynos-gsc/gsc-m2m.c return PTR_ERR(gsc->m2m.m2m_dev); gsc 774 drivers/media/platform/exynos-gsc/gsc-m2m.c ret = video_register_device(&gsc->vdev, VFL_TYPE_GRABBER, -1); gsc 781 drivers/media/platform/exynos-gsc/gsc-m2m.c pr_debug("gsc m2m driver registered as /dev/video%d", gsc->vdev.num); gsc 785 drivers/media/platform/exynos-gsc/gsc-m2m.c v4l2_m2m_release(gsc->m2m.m2m_dev); gsc 790 drivers/media/platform/exynos-gsc/gsc-m2m.c void gsc_unregister_m2m_device(struct gsc_dev *gsc) gsc 792 drivers/media/platform/exynos-gsc/gsc-m2m.c if (gsc) { gsc 793 drivers/media/platform/exynos-gsc/gsc-m2m.c v4l2_m2m_release(gsc->m2m.m2m_dev); gsc 794 drivers/media/platform/exynos-gsc/gsc-m2m.c video_unregister_device(&gsc->vdev); gsc 206 drivers/parisc/gsc.c gsc_asic->gsc = parent; gsc 28 drivers/parisc/gsc.h struct parisc_device *gsc;