Lines Matching +full:sdi +full:- +full:enabled

1 // SPDX-License-Identifier: GPL-2.0-or-later
5 * Copyright (C) 2015-2016 Nexvision
6 * Author: Charles-Antoine Couret <charles-[email protected]>
19 #include <media/v4l2-common.h>
20 #include <media/v4l2-ctrls.h>
21 #include <media/v4l2-device.h>
22 #include <media/v4l2-subdev.h>
23 #include <media/v4l2-dv-timings.h>
24 #include <linux/v4l2-dv-timings.h>
50 int enabled; member
206 ret = gs_read_register(spi, reg->reg & 0xFFFF, &val); in gs_g_register()
207 reg->val = val; in gs_g_register()
208 reg->size = 2; in gs_g_register()
217 return gs_write_register(spi, reg->reg & 0xFFFF, reg->val & 0xFFFF); in gs_s_register()
233 return -ERANGE; in gs_status_format()
261 return -EINVAL; in gs_s_dv_timings()
265 return -EINVAL; in gs_s_dv_timings()
267 gs->current_timings = *timings; in gs_s_dv_timings()
277 return -EINVAL; in gs_g_dv_timings()
279 *timings = gs->current_timings; in gs_g_dv_timings()
292 return -EINVAL; in gs_query_dv_timings()
294 if (gs->enabled) in gs_query_dv_timings()
295 return -EBUSY; in gs_query_dv_timings()
302 gs_read_register(gs->pdev, REG_LINES_PER_FRAME + i, &reg_value); in gs_query_dv_timings()
309 return -ENOLINK; in gs_query_dv_timings()
311 gs_read_register(gs->pdev, REG_STATUS, &reg_value); in gs_query_dv_timings()
313 return -ENOLCK; in gs_query_dv_timings()
315 return -ERANGE; in gs_query_dv_timings()
329 if (timings->index >= ARRAY_SIZE(fmt_cap)) in gs_enum_dv_timings()
330 return -EINVAL; in gs_enum_dv_timings()
332 if (timings->pad != 0) in gs_enum_dv_timings()
333 return -EINVAL; in gs_enum_dv_timings()
335 timings->timings = fmt_cap[timings->index]; in gs_enum_dv_timings()
344 if (gs->enabled == enable) in gs_s_stream()
347 gs->enabled = enable; in gs_s_stream()
351 reg_value = get_register_timings(&gs->current_timings); in gs_s_stream()
352 return gs_write_register(gs->pdev, REG_FORCE_FMT, reg_value); in gs_s_stream()
355 /* To renable auto-detection mode */ in gs_s_stream()
356 return gs_write_register(gs->pdev, REG_FORCE_FMT, 0x0); in gs_s_stream()
370 ret = gs_read_register(gs->pdev, in gs_g_input_status()
384 ret = gs_read_register(gs->pdev, REG_STATUS, &reg_value); in gs_g_input_status()
398 if (cap->pad != 0) in gs_dv_timings_cap()
399 return -EINVAL; in gs_dv_timings_cap()
439 gs = devm_kzalloc(&spi->dev, sizeof(struct gs), GFP_KERNEL); in gs_probe()
441 return -ENOMEM; in gs_probe()
443 gs->pdev = spi; in gs_probe()
444 sd = &gs->sd; in gs_probe()
446 spi->mode = SPI_MODE_0; in gs_probe()
447 spi->irq = -1; in gs_probe()
448 spi->max_speed_hz = 10000000; in gs_probe()
449 spi->bits_per_word = 16; in gs_probe()
453 gs->current_timings = reg_fmt[0].format; in gs_probe()
454 gs->enabled = 0; in gs_probe()
482 MODULE_AUTHOR("Charles-Antoine Couret <charles-[email protected]>");
483 MODULE_DESCRIPTION("Gennum GS1662 HD/SD-SDI Serializer driver");