drivers/staging/media/atomisp/pci/hive_isp_css_common/host/gp_device.c

Source file repositories/reference/linux-study-clean/drivers/staging/media/atomisp/pci/hive_isp_css_common/host/gp_device.c

File Facts

System
Linux kernel
Corpus path
drivers/staging/media/atomisp/pci/hive_isp_css_common/host/gp_device.c
Extension
.c
Size
3821 bytes
Lines
101
Domain
Driver Families
Bucket
drivers/staging
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

// SPDX-License-Identifier: GPL-2.0
/*
 * Support for Intel Camera Imaging ISP subsystem.
 * Copyright (c) 2010-2015, Intel Corporation.
 */

#include "assert_support.h"
#include "gp_device.h"

#ifndef __INLINE_GP_DEVICE__
#include "gp_device_private.h"
#endif /* __INLINE_GP_DEVICE__ */

void gp_device_get_state(
    const gp_device_ID_t		ID,
    gp_device_state_t			*state)
{
	assert(ID < N_GP_DEVICE_ID);
	assert(state);

	state->syncgen_enable = gp_device_reg_load(ID,
				_REG_GP_SYNCGEN_ENABLE_ADDR);
	state->syncgen_free_running = gp_device_reg_load(ID,
				      _REG_GP_SYNCGEN_FREE_RUNNING_ADDR);
	state->syncgen_pause = gp_device_reg_load(ID,
			       _REG_GP_SYNCGEN_PAUSE_ADDR);
	state->nr_frames = gp_device_reg_load(ID,
					      _REG_GP_NR_FRAMES_ADDR);
	state->syngen_nr_pix = gp_device_reg_load(ID,
			       _REG_GP_SYNGEN_NR_PIX_ADDR);
	state->syngen_nr_pix = gp_device_reg_load(ID,
			       _REG_GP_SYNGEN_NR_PIX_ADDR);
	state->syngen_nr_lines = gp_device_reg_load(ID,
				 _REG_GP_SYNGEN_NR_LINES_ADDR);
	state->syngen_hblank_cycles = gp_device_reg_load(ID,
				      _REG_GP_SYNGEN_HBLANK_CYCLES_ADDR);
	state->syngen_vblank_cycles = gp_device_reg_load(ID,
				      _REG_GP_SYNGEN_VBLANK_CYCLES_ADDR);
	state->isel_sof = gp_device_reg_load(ID,
					     _REG_GP_ISEL_SOF_ADDR);
	state->isel_eof = gp_device_reg_load(ID,
					     _REG_GP_ISEL_EOF_ADDR);
	state->isel_sol = gp_device_reg_load(ID,
					     _REG_GP_ISEL_SOL_ADDR);
	state->isel_eol = gp_device_reg_load(ID,
					     _REG_GP_ISEL_EOL_ADDR);
	state->isel_lfsr_enable = gp_device_reg_load(ID,
				  _REG_GP_ISEL_LFSR_ENABLE_ADDR);
	state->isel_lfsr_enable_b = gp_device_reg_load(ID,
				    _REG_GP_ISEL_LFSR_ENABLE_B_ADDR);
	state->isel_lfsr_reset_value = gp_device_reg_load(ID,
				       _REG_GP_ISEL_LFSR_RESET_VALUE_ADDR);
	state->isel_tpg_enable = gp_device_reg_load(ID,
				 _REG_GP_ISEL_TPG_ENABLE_ADDR);
	state->isel_tpg_enable_b = gp_device_reg_load(ID,
				   _REG_GP_ISEL_TPG_ENABLE_B_ADDR);
	state->isel_hor_cnt_mask = gp_device_reg_load(ID,
				   _REG_GP_ISEL_HOR_CNT_MASK_ADDR);
	state->isel_ver_cnt_mask = gp_device_reg_load(ID,
				   _REG_GP_ISEL_VER_CNT_MASK_ADDR);
	state->isel_xy_cnt_mask = gp_device_reg_load(ID,
				  _REG_GP_ISEL_XY_CNT_MASK_ADDR);
	state->isel_hor_cnt_delta = gp_device_reg_load(ID,
				    _REG_GP_ISEL_HOR_CNT_DELTA_ADDR);
	state->isel_ver_cnt_delta = gp_device_reg_load(ID,
				    _REG_GP_ISEL_VER_CNT_DELTA_ADDR);
	state->isel_tpg_mode = gp_device_reg_load(ID,
			       _REG_GP_ISEL_TPG_MODE_ADDR);
	state->isel_tpg_red1 = gp_device_reg_load(ID,
			       _REG_GP_ISEL_TPG_RED1_ADDR);
	state->isel_tpg_green1 = gp_device_reg_load(ID,
				 _REG_GP_ISEL_TPG_GREEN1_ADDR);
	state->isel_tpg_blue1 = gp_device_reg_load(ID,
				_REG_GP_ISEL_TPG_BLUE1_ADDR);
	state->isel_tpg_red2 = gp_device_reg_load(ID,
			       _REG_GP_ISEL_TPG_RED2_ADDR);
	state->isel_tpg_green2 = gp_device_reg_load(ID,
				 _REG_GP_ISEL_TPG_GREEN2_ADDR);
	state->isel_tpg_blue2 = gp_device_reg_load(ID,
				_REG_GP_ISEL_TPG_BLUE2_ADDR);
	state->isel_ch_id = gp_device_reg_load(ID,
					       _REG_GP_ISEL_CH_ID_ADDR);
	state->isel_fmt_type = gp_device_reg_load(ID,
			       _REG_GP_ISEL_FMT_TYPE_ADDR);
	state->isel_data_sel = gp_device_reg_load(ID,
			       _REG_GP_ISEL_DATA_SEL_ADDR);
	state->isel_sband_sel = gp_device_reg_load(ID,
				_REG_GP_ISEL_SBAND_SEL_ADDR);
	state->isel_sync_sel = gp_device_reg_load(ID,
			       _REG_GP_ISEL_SYNC_SEL_ADDR);

Annotation

Implementation Notes