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-antoine.couret@nexvision.fr>
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
214 ret = gs_read_register(spi, reg->reg & 0xFFFF, &val); in gs_g_register()
215 reg->val = val; in gs_g_register()
216 reg->size = 2; in gs_g_register()
225 return gs_write_register(spi, reg->reg & 0xFFFF, reg->val & 0xFFFF); in gs_s_register()
241 return -ERANGE; in gs_status_format()
270 return -EINVAL; in gs_s_dv_timings()
272 gs->current_timings = *timings; in gs_s_dv_timings()
281 *timings = gs->current_timings; in gs_g_dv_timings()
293 if (gs->enabled) in gs_query_dv_timings()
294 return -EBUSY; in gs_query_dv_timings()
301 gs_read_register(gs->pdev, REG_LINES_PER_FRAME + i, ®_value); in gs_query_dv_timings()
308 return -ENOLINK; in gs_query_dv_timings()
310 gs_read_register(gs->pdev, REG_STATUS, ®_value); in gs_query_dv_timings()
312 return -ENOLCK; in gs_query_dv_timings()
314 return -ERANGE; in gs_query_dv_timings()
328 if (timings->index >= ARRAY_SIZE(fmt_cap)) in gs_enum_dv_timings()
329 return -EINVAL; in gs_enum_dv_timings()
331 if (timings->pad != 0) in gs_enum_dv_timings()
332 return -EINVAL; in gs_enum_dv_timings()
334 timings->timings = fmt_cap[timings->index]; in gs_enum_dv_timings()
343 if (gs->enabled == enable) in gs_s_stream()
346 gs->enabled = enable; in gs_s_stream()
350 reg_value = get_register_timings(&gs->current_timings); in gs_s_stream()
351 return gs_write_register(gs->pdev, REG_FORCE_FMT, reg_value); in gs_s_stream()
354 /* To renable auto-detection mode */ in gs_s_stream()
355 return gs_write_register(gs->pdev, REG_FORCE_FMT, 0x0); in gs_s_stream()
369 ret = gs_read_register(gs->pdev, in gs_g_input_status()
383 ret = gs_read_register(gs->pdev, REG_STATUS, ®_value); in gs_g_input_status()
397 if (cap->pad != 0) in gs_dv_timings_cap()
398 return -EINVAL; in gs_dv_timings_cap()
438 gs = devm_kzalloc(&spi->dev, sizeof(struct gs), GFP_KERNEL); in gs_probe()
440 return -ENOMEM; in gs_probe()
442 gs->pdev = spi; in gs_probe()
443 sd = &gs->sd; in gs_probe()
445 spi->mode = SPI_MODE_0; in gs_probe()
446 spi->irq = -1; in gs_probe()
447 spi->max_speed_hz = 10000000; in gs_probe()
448 spi->bits_per_word = 16; in gs_probe()
452 gs->current_timings = reg_fmt[0].format; in gs_probe()
453 gs->enabled = 0; in gs_probe()
481 MODULE_AUTHOR("Charles-Antoine Couret <charles-antoine.couret@nexvision.fr>");
482 MODULE_DESCRIPTION("Gennum GS1662 HD/SD-SDI Serializer driver");