Searched refs:gsc (Results 1 - 17 of 17) sorted by relevance

/linux-4.4.14/drivers/media/platform/exynos-gsc/
H A DMakefile1 exynos-gsc-objs := gsc-core.o gsc-m2m.o gsc-regs.o
3 obj-$(CONFIG_VIDEO_SAMSUNG_EXYNOS_GSC) += exynos-gsc.o
H A Dgsc-m2m.c29 #include "gsc-core.h"
34 struct gsc_dev *gsc = ctx->gsc_dev; gsc_m2m_ctx_stop_req() local
37 curr_ctx = v4l2_m2m_get_curr_priv(gsc->m2m.m2m_dev); gsc_m2m_ctx_stop_req()
38 if (!gsc_m2m_pending(gsc) || (curr_ctx != ctx)) gsc_m2m_ctx_stop_req()
42 ret = wait_event_timeout(gsc->irq_queue, gsc_m2m_ctx_stop_req()
136 struct gsc_dev *gsc; gsc_m2m_device_run() local
144 gsc = ctx->gsc_dev; gsc_m2m_device_run()
145 spin_lock_irqsave(&gsc->slock, flags); gsc_m2m_device_run()
147 set_bit(ST_M2M_PEND, &gsc->state); gsc_m2m_device_run()
150 if (gsc->m2m.ctx != ctx) { gsc_m2m_device_run()
151 pr_debug("gsc->m2m.ctx = 0x%p, current_ctx = 0x%p", gsc_m2m_device_run()
152 gsc->m2m.ctx, ctx); gsc_m2m_device_run()
154 gsc->m2m.ctx = ctx; gsc_m2m_device_run()
161 wake_up(&gsc->irq_queue); gsc_m2m_device_run()
171 gsc_set_prefbuf(gsc, &ctx->s_frame); gsc_m2m_device_run()
172 gsc_hw_set_input_addr(gsc, &ctx->s_frame.addr, GSC_M2M_BUF_NUM); gsc_m2m_device_run()
173 gsc_hw_set_output_addr(gsc, &ctx->d_frame.addr, GSC_M2M_BUF_NUM); gsc_m2m_device_run()
176 gsc_hw_set_input_buf_masking(gsc, GSC_M2M_BUF_NUM, false); gsc_m2m_device_run()
177 gsc_hw_set_output_buf_masking(gsc, GSC_M2M_BUF_NUM, false); gsc_m2m_device_run()
178 gsc_hw_set_frm_done_irq_mask(gsc, false); gsc_m2m_device_run()
179 gsc_hw_set_gsc_irq_enable(gsc, true); gsc_m2m_device_run()
204 gsc_hw_enable_control(gsc, true); gsc_m2m_device_run()
206 spin_unlock_irqrestore(&gsc->slock, flags); gsc_m2m_device_run()
211 spin_unlock_irqrestore(&gsc->slock, flags); gsc_m2m_device_run()
281 struct gsc_dev *gsc = ctx->gsc_dev; gsc_m2m_querycap() local
283 strlcpy(cap->driver, gsc->pdev->name, sizeof(cap->driver)); gsc_m2m_querycap()
284 strlcpy(cap->card, gsc->pdev->name, sizeof(cap->card)); gsc_m2m_querycap()
365 struct gsc_dev *gsc = ctx->gsc_dev; gsc_m2m_reqbufs() local
369 gsc->variant->in_buf_cnt : gsc->variant->out_buf_cnt; gsc_m2m_reqbufs()
615 struct gsc_dev *gsc = video_drvdata(file); gsc_m2m_open() local
619 pr_debug("pid: %d, state: 0x%lx", task_pid_nr(current), gsc->state); gsc_m2m_open()
621 if (mutex_lock_interruptible(&gsc->lock)) gsc_m2m_open()
630 v4l2_fh_init(&ctx->fh, gsc->m2m.vfd); gsc_m2m_open()
640 ctx->gsc_dev = gsc; gsc_m2m_open()
650 ctx->m2m_ctx = v4l2_m2m_ctx_init(gsc->m2m.m2m_dev, ctx, queue_init); gsc_m2m_open()
657 if (gsc->m2m.refcnt++ == 0) gsc_m2m_open()
658 set_bit(ST_M2M_OPEN, &gsc->state); gsc_m2m_open()
660 pr_debug("gsc m2m driver is opened, ctx(0x%p)", ctx); gsc_m2m_open()
662 mutex_unlock(&gsc->lock); gsc_m2m_open()
672 mutex_unlock(&gsc->lock); gsc_m2m_open()
679 struct gsc_dev *gsc = ctx->gsc_dev; gsc_m2m_release() local
682 task_pid_nr(current), gsc->state, gsc->m2m.refcnt); gsc_m2m_release()
684 mutex_lock(&gsc->lock); gsc_m2m_release()
691 if (--gsc->m2m.refcnt <= 0) gsc_m2m_release()
692 clear_bit(ST_M2M_OPEN, &gsc->state); gsc_m2m_release()
695 mutex_unlock(&gsc->lock); gsc_m2m_release()
703 struct gsc_dev *gsc = ctx->gsc_dev; gsc_m2m_poll() local
706 if (mutex_lock_interruptible(&gsc->lock)) gsc_m2m_poll()
710 mutex_unlock(&gsc->lock); gsc_m2m_poll()
718 struct gsc_dev *gsc = ctx->gsc_dev; gsc_m2m_mmap() local
721 if (mutex_lock_interruptible(&gsc->lock)) gsc_m2m_mmap()
725 mutex_unlock(&gsc->lock); gsc_m2m_mmap()
744 int gsc_register_m2m_device(struct gsc_dev *gsc) gsc_register_m2m_device() argument
749 if (!gsc) gsc_register_m2m_device()
752 pdev = gsc->pdev; gsc_register_m2m_device()
754 gsc->vdev.fops = &gsc_m2m_fops; gsc_register_m2m_device()
755 gsc->vdev.ioctl_ops = &gsc_m2m_ioctl_ops; gsc_register_m2m_device()
756 gsc->vdev.release = video_device_release_empty; gsc_register_m2m_device()
757 gsc->vdev.lock = &gsc->lock; gsc_register_m2m_device()
758 gsc->vdev.vfl_dir = VFL_DIR_M2M; gsc_register_m2m_device()
759 gsc->vdev.v4l2_dev = &gsc->v4l2_dev; gsc_register_m2m_device()
760 snprintf(gsc->vdev.name, sizeof(gsc->vdev.name), "%s.%d:m2m", gsc_register_m2m_device()
761 GSC_MODULE_NAME, gsc->id); gsc_register_m2m_device()
763 video_set_drvdata(&gsc->vdev, gsc); gsc_register_m2m_device()
765 gsc->m2m.vfd = &gsc->vdev; gsc_register_m2m_device()
766 gsc->m2m.m2m_dev = v4l2_m2m_init(&gsc_m2m_ops); gsc_register_m2m_device()
767 if (IS_ERR(gsc->m2m.m2m_dev)) { gsc_register_m2m_device()
769 ret = PTR_ERR(gsc->m2m.m2m_dev); gsc_register_m2m_device()
773 ret = video_register_device(&gsc->vdev, VFL_TYPE_GRABBER, -1); gsc_register_m2m_device()
780 pr_debug("gsc m2m driver registered as /dev/video%d", gsc->vdev.num); gsc_register_m2m_device()
784 v4l2_m2m_release(gsc->m2m.m2m_dev); gsc_register_m2m_device()
786 video_device_release(gsc->m2m.vfd); gsc_register_m2m_device()
791 void gsc_unregister_m2m_device(struct gsc_dev *gsc) gsc_unregister_m2m_device() argument
793 if (gsc) gsc_unregister_m2m_device()
794 v4l2_m2m_release(gsc->m2m.m2m_dev); gsc_unregister_m2m_device()
H A Dgsc-core.c29 #include "gsc-core.h"
340 void gsc_set_prefbuf(struct gsc_dev *gsc, struct gsc_frame *frm) gsc_set_prefbuf() argument
392 struct gsc_dev *gsc = ctx->gsc_dev; gsc_try_fmt_mplane() local
393 struct gsc_variant *variant = gsc->variant; gsc_try_fmt_mplane()
522 struct gsc_dev *gsc = ctx->gsc_dev; gsc_try_crop() local
523 struct gsc_variant *variant = gsc->variant; gsc_try_crop()
702 struct gsc_dev *gsc = ctx->gsc_dev; __gsc_s_ctrl() local
703 struct gsc_variant *variant = gsc->variant; __gsc_s_ctrl()
866 struct gsc_dev *gsc = priv; gsc_irq_handler() local
870 gsc_irq = gsc_hw_get_irq_status(gsc); gsc_irq_handler()
871 gsc_hw_clear_irq(gsc, gsc_irq); gsc_irq_handler()
878 spin_lock(&gsc->slock); gsc_irq_handler()
880 if (test_and_clear_bit(ST_M2M_PEND, &gsc->state)) { gsc_irq_handler()
882 gsc_hw_enable_control(gsc, false); gsc_irq_handler()
884 if (test_and_clear_bit(ST_M2M_SUSPENDING, &gsc->state)) { gsc_irq_handler()
885 set_bit(ST_M2M_SUSPENDED, &gsc->state); gsc_irq_handler()
886 wake_up(&gsc->irq_queue); gsc_irq_handler()
889 ctx = v4l2_m2m_get_curr_priv(gsc->m2m.m2m_dev); gsc_irq_handler()
894 spin_unlock(&gsc->slock); gsc_irq_handler()
900 wake_up(&gsc->irq_queue); gsc_irq_handler()
906 spin_unlock(&gsc->slock); gsc_irq_handler()
972 .name = "exynos-gsc",
981 .compatible = "samsung,exynos5-gsc",
1006 static void gsc_clk_put(struct gsc_dev *gsc) gsc_clk_put() argument
1008 if (!IS_ERR(gsc->clock)) gsc_clk_put()
1009 clk_unprepare(gsc->clock); gsc_clk_put()
1012 static int gsc_clk_get(struct gsc_dev *gsc) gsc_clk_get() argument
1016 dev_dbg(&gsc->pdev->dev, "gsc_clk_get Called\n"); gsc_clk_get()
1018 gsc->clock = devm_clk_get(&gsc->pdev->dev, GSC_CLOCK_GATE_NAME); gsc_clk_get()
1019 if (IS_ERR(gsc->clock)) { gsc_clk_get()
1020 dev_err(&gsc->pdev->dev, "failed to get clock~~~: %s\n", gsc_clk_get()
1022 return PTR_ERR(gsc->clock); gsc_clk_get()
1025 ret = clk_prepare(gsc->clock); gsc_clk_get()
1027 dev_err(&gsc->pdev->dev, "clock prepare failed for clock: %s\n", gsc_clk_get()
1029 gsc->clock = ERR_PTR(-EINVAL); gsc_clk_get()
1036 static int gsc_m2m_suspend(struct gsc_dev *gsc) gsc_m2m_suspend() argument
1041 spin_lock_irqsave(&gsc->slock, flags); gsc_m2m_suspend()
1042 if (!gsc_m2m_pending(gsc)) { gsc_m2m_suspend()
1043 spin_unlock_irqrestore(&gsc->slock, flags); gsc_m2m_suspend()
1046 clear_bit(ST_M2M_SUSPENDED, &gsc->state); gsc_m2m_suspend()
1047 set_bit(ST_M2M_SUSPENDING, &gsc->state); gsc_m2m_suspend()
1048 spin_unlock_irqrestore(&gsc->slock, flags); gsc_m2m_suspend()
1050 timeout = wait_event_timeout(gsc->irq_queue, gsc_m2m_suspend()
1051 test_bit(ST_M2M_SUSPENDED, &gsc->state), gsc_m2m_suspend()
1054 clear_bit(ST_M2M_SUSPENDING, &gsc->state); gsc_m2m_suspend()
1058 static int gsc_m2m_resume(struct gsc_dev *gsc) gsc_m2m_resume() argument
1063 spin_lock_irqsave(&gsc->slock, flags); gsc_m2m_resume()
1065 ctx = gsc->m2m.ctx; gsc_m2m_resume()
1066 gsc->m2m.ctx = NULL; gsc_m2m_resume()
1067 spin_unlock_irqrestore(&gsc->slock, flags); gsc_m2m_resume()
1069 if (test_and_clear_bit(ST_M2M_SUSPENDED, &gsc->state)) gsc_m2m_resume()
1077 struct gsc_dev *gsc; gsc_probe() local
1083 gsc = devm_kzalloc(dev, sizeof(struct gsc_dev), GFP_KERNEL); gsc_probe()
1084 if (!gsc) gsc_probe()
1088 gsc->id = of_alias_get_id(pdev->dev.of_node, "gsc"); gsc_probe()
1090 gsc->id = pdev->id; gsc_probe()
1092 if (gsc->id >= drv_data->num_entities) { gsc_probe()
1093 dev_err(dev, "Invalid platform device id: %d\n", gsc->id); gsc_probe()
1097 gsc->variant = drv_data->variant[gsc->id]; gsc_probe()
1098 gsc->pdev = pdev; gsc_probe()
1099 gsc->pdata = dev->platform_data; gsc_probe()
1101 init_waitqueue_head(&gsc->irq_queue); gsc_probe()
1102 spin_lock_init(&gsc->slock); gsc_probe()
1103 mutex_init(&gsc->lock); gsc_probe()
1104 gsc->clock = ERR_PTR(-EINVAL); gsc_probe()
1107 gsc->regs = devm_ioremap_resource(dev, res); gsc_probe()
1108 if (IS_ERR(gsc->regs)) gsc_probe()
1109 return PTR_ERR(gsc->regs); gsc_probe()
1117 ret = gsc_clk_get(gsc); gsc_probe()
1122 0, pdev->name, gsc); gsc_probe()
1128 ret = v4l2_device_register(dev, &gsc->v4l2_dev); gsc_probe()
1132 ret = gsc_register_m2m_device(gsc); gsc_probe()
1136 platform_set_drvdata(pdev, gsc); gsc_probe()
1143 gsc->alloc_ctx = vb2_dma_contig_init_ctx(dev); gsc_probe()
1144 if (IS_ERR(gsc->alloc_ctx)) { gsc_probe()
1145 ret = PTR_ERR(gsc->alloc_ctx); gsc_probe()
1149 dev_dbg(dev, "gsc-%d registered successfully\n", gsc->id); gsc_probe()
1156 gsc_unregister_m2m_device(gsc); gsc_probe()
1158 v4l2_device_unregister(&gsc->v4l2_dev); gsc_probe()
1160 gsc_clk_put(gsc); gsc_probe()
1166 struct gsc_dev *gsc = platform_get_drvdata(pdev); gsc_remove() local
1168 gsc_unregister_m2m_device(gsc); gsc_remove()
1169 v4l2_device_unregister(&gsc->v4l2_dev); gsc_remove()
1171 vb2_dma_contig_cleanup_ctx(gsc->alloc_ctx); gsc_remove()
1173 gsc_clk_put(gsc); gsc_remove()
1181 struct gsc_dev *gsc = dev_get_drvdata(dev); gsc_runtime_resume() local
1184 pr_debug("gsc%d: state: 0x%lx", gsc->id, gsc->state); gsc_runtime_resume()
1186 ret = clk_enable(gsc->clock); gsc_runtime_resume()
1190 gsc_hw_set_sw_reset(gsc); gsc_runtime_resume()
1191 gsc_wait_reset(gsc); gsc_runtime_resume()
1193 return gsc_m2m_resume(gsc); gsc_runtime_resume()
1198 struct gsc_dev *gsc = dev_get_drvdata(dev); gsc_runtime_suspend() local
1201 ret = gsc_m2m_suspend(gsc); gsc_runtime_suspend()
1203 clk_disable(gsc->clock); gsc_runtime_suspend()
1205 pr_debug("gsc%d: state: 0x%lx", gsc->id, gsc->state); gsc_runtime_suspend()
1211 struct gsc_dev *gsc = dev_get_drvdata(dev); gsc_resume() local
1214 pr_debug("gsc%d: state: 0x%lx", gsc->id, gsc->state); gsc_resume()
1217 spin_lock_irqsave(&gsc->slock, flags); gsc_resume()
1218 if (!test_and_clear_bit(ST_SUSPEND, &gsc->state) || gsc_resume()
1219 !gsc_m2m_opened(gsc)) { gsc_resume()
1220 spin_unlock_irqrestore(&gsc->slock, flags); gsc_resume()
1223 spin_unlock_irqrestore(&gsc->slock, flags); gsc_resume()
1233 struct gsc_dev *gsc = dev_get_drvdata(dev); gsc_suspend() local
1235 pr_debug("gsc%d: state: 0x%lx", gsc->id, gsc->state); gsc_suspend()
1237 if (test_and_set_bit(ST_SUSPEND, &gsc->state)) gsc_suspend()
H A Dgsc-core.h29 #include "gsc-regs.h"
32 #define GSC_MODULE_NAME "exynos-gsc"
385 void gsc_set_prefbuf(struct gsc_dev *gsc, struct gsc_frame *frm);
386 int gsc_register_m2m_device(struct gsc_dev *gsc);
387 void gsc_unregister_m2m_device(struct gsc_dev *gsc);
H A Dgsc-regs.c16 #include "gsc-core.h"
/linux-4.4.14/drivers/parisc/
H A Dgsc.h2 * drivers/parisc/gsc.h
3 * Declarations for functions in gsc.c
29 struct parisc_device *gsc; member in struct:gsc_asic
H A Dgsc.c27 #include "gsc.h"
210 gsc_asic->gsc = parent; gsc_common_setup()
H A Dasp.c22 #include "gsc.h"
H A Dwax.c25 #include "gsc.h"
H A Dlasi.c29 #include "gsc.h"
H A Ddino.c61 #include "gsc.h"
/linux-4.4.14/drivers/gpu/drm/exynos/
H A Dexynos_drm_gsc.c22 #include "regs-gsc.h"
124 * A structure of gsc context.
130 * @gsc_clk: gsc gate clock.
132 * @id: gsc id.
416 DRM_ERROR("failed to reset gsc h/w.\n"); gsc_sw_reset()
1234 DRM_DEBUG_KMS("gsc id[%d]\n", ctx->id); gsc_get_src_buf_index()
1269 DRM_DEBUG_KMS("gsc id[%d]\n", ctx->id); gsc_get_dst_buf_index()
1308 DRM_DEBUG_KMS("gsc id[%d]\n", ctx->id); gsc_irq_handler()
1669 dev_err(dev, "failed to get gsc clock.\n"); gsc_probe()
1721 dev_err(dev, "failed to register drm gsc device.\n"); gsc_probe()
1725 dev_info(dev, "drm gsc registered successfully.\n"); gsc_probe()
1804 .name = "exynos-drm-gsc",
H A Dregs-gsc.h1 /* linux/drivers/gpu/drm/exynos/regs-gsc.h
/linux-4.4.14/arch/parisc/kernel/
H A Dsetup.c51 /* Intended for ccio/sba/cpu statistics under /proc/bus/{runway|gsc} */
222 proc_gsc_root = proc_mkdir("bus/gsc", NULL); parisc_proc_mkdir()
246 * I'm assuming they have neither gsc nor runway */ parisc_proc_mkdir()
H A Dpci-dma.c399 proc_gsc_root = proc_mkdir("gsc", NULL); pcxl_dma_init()
402 "pcxl_dma_init: Unable to create gsc /proc dir entry\n"); pcxl_dma_init()
/linux-4.4.14/drivers/scsi/
H A Dzalon.c13 #include "../parisc/gsc.h"
/linux-4.4.14/drivers/input/serio/
H A Dgscps2.c359 snprintf(serio->name, sizeof(serio->name), "gsc-ps2-%s", gscps2_probe()

Completed in 717 milliseconds