drivers/media/platform/samsung/exynos4-is/fimc-is-param.c
Source file repositories/reference/linux-study-clean/drivers/media/platform/samsung/exynos4-is/fimc-is-param.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/platform/samsung/exynos4-is/fimc-is-param.c- Extension
.c- Size
- 23750 bytes
- Lines
- 885
- Domain
- Driver Families
- Bucket
- drivers/media
- 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.
- 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.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/bitops.hlinux/bug.hlinux/device.hlinux/errno.hlinux/kernel.hlinux/module.hlinux/platform_device.hlinux/slab.hlinux/types.hlinux/videodev2.hmedia/v4l2-device.hmedia/v4l2-ioctl.hfimc-is.hfimc-is-command.hfimc-is-errno.hfimc-is-param.hfimc-is-regs.hfimc-is-sensor.h
Detected Declarations
function Copyrightfunction __fimc_is_hw_update_param_global_shotmodefunction __fimc_is_hw_update_param_sensor_frameratefunction __fimc_is_hw_update_paramfunction __get_pending_param_countfunction __is_hw_update_paramsfunction __is_set_frame_sizefunction fimc_is_hw_get_sensor_max_frameratefunction __is_set_sensorfunction __is_set_init_isp_aafunction __is_set_isp_flashfunction __is_set_isp_awbfunction __is_set_isp_effectfunction __is_set_isp_isofunction __is_set_isp_adjustfunction __is_set_isp_meteringfunction __is_set_isp_afcfunction __is_set_drc_controlfunction __is_set_fd_controlfunction __is_set_fd_config_maxfacefunction __is_set_fd_config_rollanglefunction __is_set_fd_config_yawanglefunction __is_set_fd_config_smilemodefunction __is_set_fd_config_blinkmodefunction __is_set_fd_config_eyedetectfunction __is_set_fd_config_mouthdetectfunction __is_set_fd_config_orientationfunction __is_set_fd_config_orientation_valfunction fimc_is_set_initial_params
Annotated Snippet
// SPDX-License-Identifier: GPL-2.0-only
/*
* Samsung EXYNOS4x12 FIMC-IS (Imaging Subsystem) driver
*
* Copyright (C) 2013 Samsung Electronics Co., Ltd.
*
* Authors: Younghwan Joo <yhwan.joo@samsung.com>
* Sylwester Nawrocki <s.nawrocki@samsung.com>
*/
#define pr_fmt(fmt) "%s:%d " fmt, __func__, __LINE__
#include <linux/bitops.h>
#include <linux/bug.h>
#include <linux/device.h>
#include <linux/errno.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/videodev2.h>
#include <media/v4l2-device.h>
#include <media/v4l2-ioctl.h>
#include "fimc-is.h"
#include "fimc-is-command.h"
#include "fimc-is-errno.h"
#include "fimc-is-param.h"
#include "fimc-is-regs.h"
#include "fimc-is-sensor.h"
static void __hw_param_copy(void *dst, void *src)
{
memcpy(dst, src, FIMC_IS_PARAM_MAX_SIZE);
}
static void __fimc_is_hw_update_param_global_shotmode(struct fimc_is *is)
{
struct param_global_shotmode *dst, *src;
dst = &is->is_p_region->parameter.global.shotmode;
src = &is->config[is->config_index].global.shotmode;
__hw_param_copy(dst, src);
}
static void __fimc_is_hw_update_param_sensor_framerate(struct fimc_is *is)
{
struct param_sensor_framerate *dst, *src;
dst = &is->is_p_region->parameter.sensor.frame_rate;
src = &is->config[is->config_index].sensor.frame_rate;
__hw_param_copy(dst, src);
}
int __fimc_is_hw_update_param(struct fimc_is *is, u32 offset)
{
struct is_param_region *par = &is->is_p_region->parameter;
struct chain_config *cfg = &is->config[is->config_index];
switch (offset) {
case PARAM_ISP_CONTROL:
__hw_param_copy(&par->isp.control, &cfg->isp.control);
break;
case PARAM_ISP_OTF_INPUT:
__hw_param_copy(&par->isp.otf_input, &cfg->isp.otf_input);
break;
case PARAM_ISP_DMA1_INPUT:
__hw_param_copy(&par->isp.dma1_input, &cfg->isp.dma1_input);
break;
case PARAM_ISP_DMA2_INPUT:
__hw_param_copy(&par->isp.dma2_input, &cfg->isp.dma2_input);
break;
case PARAM_ISP_AA:
__hw_param_copy(&par->isp.aa, &cfg->isp.aa);
break;
case PARAM_ISP_FLASH:
__hw_param_copy(&par->isp.flash, &cfg->isp.flash);
break;
case PARAM_ISP_AWB:
__hw_param_copy(&par->isp.awb, &cfg->isp.awb);
break;
case PARAM_ISP_IMAGE_EFFECT:
Annotation
- Immediate include surface: `linux/bitops.h`, `linux/bug.h`, `linux/device.h`, `linux/errno.h`, `linux/kernel.h`, `linux/module.h`, `linux/platform_device.h`, `linux/slab.h`.
- Detected declarations: `function Copyright`, `function __fimc_is_hw_update_param_global_shotmode`, `function __fimc_is_hw_update_param_sensor_framerate`, `function __fimc_is_hw_update_param`, `function __get_pending_param_count`, `function __is_hw_update_params`, `function __is_set_frame_size`, `function fimc_is_hw_get_sensor_max_framerate`, `function __is_set_sensor`, `function __is_set_init_isp_aa`.
- Atlas domain: Driver Families / drivers/media.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.