drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
Source file repositories/reference/linux-study-clean/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/platform/rockchip/rkisp1/rkisp1-params.c- Extension
.c- Size
- 97122 bytes
- Lines
- 2951
- 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.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/bitfield.hlinux/build_bug.hlinux/math.hlinux/string.hmedia/v4l2-common.hmedia/v4l2-event.hmedia/v4l2-ioctl.hmedia/v4l2-isp.hmedia/videobuf2-core.hmedia/videobuf2-vmalloc.hrkisp1-common.h
Detected Declarations
struct csm_coeffsenum rkisp1_params_formatsfunction rkisp1_params_get_format_infofunction rkisp1_param_set_bitsfunction rkisp1_param_clear_bitsfunction rkisp1_dpcc_configfunction rkisp1_bls_configfunction rkisp1_lsc_matrix_config_v10function rkisp1_lsc_matrix_config_v12function rkisp1_lsc_configfunction rkisp1_flt_configfunction rkisp1_bdm_configfunction rkisp1_sdg_configfunction rkisp1_goc_config_v10function rkisp1_goc_config_v12function rkisp1_ctk_configfunction rkisp1_ctk_enablefunction rkisp1_awb_meas_config_v10function rkisp1_awb_meas_config_v12function rkisp1_awb_meas_enable_v10function rkisp1_awb_meas_enable_v12function rkisp1_awb_gain_config_v10function rkisp1_awb_gain_config_v12function rkisp1_aec_config_v10function rkisp1_aec_config_v12function rkisp1_cproc_configfunction rkisp1_hst_config_v10function rkisp1_hst_config_v12function rkisp1_hst_enable_v10function rkisp1_hst_enable_v12function rkisp1_afm_config_v10function rkisp1_afm_config_v12function rkisp1_ie_configfunction rkisp1_ie_enablefunction rkisp1_csm_configfunction rkisp1_dpf_configfunction rkisp1_dpf_strength_configfunction rkisp1_compand_write_px_curvefunction rkisp1_compand_write_curve_memfunction rkisp1_compand_bls_configfunction rkisp1_compand_expand_configfunction rkisp1_compand_compress_configfunction rkisp1_wdr_configfunction rkisp1_cac_configfunction rkisp1_isp_isr_other_configfunction rkisp1_isp_isr_lsc_configfunction rkisp1_isp_isr_meas_configfunction rkisp1_ext_params_bls
Annotated Snippet
struct csm_coeffs {
u16 limited[9];
u16 full[9];
};
static const struct csm_coeffs rec601_coeffs = {
.limited = {
0x0021, 0x0042, 0x000d,
0x01ed, 0x01db, 0x0038,
0x0038, 0x01d1, 0x01f7,
},
.full = {
0x0026, 0x004b, 0x000f,
0x01ea, 0x01d6, 0x0040,
0x0040, 0x01ca, 0x01f6,
},
};
static const struct csm_coeffs rec709_coeffs = {
.limited = {
0x0018, 0x0050, 0x0008,
0x01f3, 0x01d5, 0x0038,
0x0038, 0x01cd, 0x01fb,
},
.full = {
0x001b, 0x005c, 0x0009,
0x01f1, 0x01cf, 0x0040,
0x0040, 0x01c6, 0x01fa,
},
};
static const struct csm_coeffs rec2020_coeffs = {
.limited = {
0x001d, 0x004c, 0x0007,
0x01f0, 0x01d8, 0x0038,
0x0038, 0x01cd, 0x01fb,
},
.full = {
0x0022, 0x0057, 0x0008,
0x01ee, 0x01d2, 0x0040,
0x0040, 0x01c5, 0x01fb,
},
};
static const struct csm_coeffs smpte240m_coeffs = {
.limited = {
0x0018, 0x004f, 0x000a,
0x01f3, 0x01d5, 0x0038,
0x0038, 0x01ce, 0x01fa,
},
.full = {
0x001b, 0x005a, 0x000b,
0x01f1, 0x01cf, 0x0040,
0x0040, 0x01c7, 0x01f9,
},
};
const struct csm_coeffs *coeffs;
const u16 *csm;
unsigned int i;
switch (params->ycbcr_encoding) {
case V4L2_YCBCR_ENC_601:
default:
coeffs = &rec601_coeffs;
break;
case V4L2_YCBCR_ENC_709:
coeffs = &rec709_coeffs;
break;
case V4L2_YCBCR_ENC_BT2020:
coeffs = &rec2020_coeffs;
break;
case V4L2_YCBCR_ENC_SMPTE240M:
coeffs = &smpte240m_coeffs;
break;
}
if (params->quantization == V4L2_QUANTIZATION_FULL_RANGE) {
csm = coeffs->full;
rkisp1_param_set_bits(params, RKISP1_CIF_ISP_CTRL,
RKISP1_CIF_ISP_CTRL_ISP_CSM_Y_FULL_ENA |
RKISP1_CIF_ISP_CTRL_ISP_CSM_C_FULL_ENA);
} else {
csm = coeffs->limited;
rkisp1_param_clear_bits(params, RKISP1_CIF_ISP_CTRL,
RKISP1_CIF_ISP_CTRL_ISP_CSM_Y_FULL_ENA |
RKISP1_CIF_ISP_CTRL_ISP_CSM_C_FULL_ENA);
}
for (i = 0; i < 9; i++)
rkisp1_write(params->rkisp1, RKISP1_CIF_ISP_CC_COEFF_0 + i * 4,
csm[i]);
}
Annotation
- Immediate include surface: `linux/bitfield.h`, `linux/build_bug.h`, `linux/math.h`, `linux/string.h`, `media/v4l2-common.h`, `media/v4l2-event.h`, `media/v4l2-ioctl.h`, `media/v4l2-isp.h`.
- Detected declarations: `struct csm_coeffs`, `enum rkisp1_params_formats`, `function rkisp1_params_get_format_info`, `function rkisp1_param_set_bits`, `function rkisp1_param_clear_bits`, `function rkisp1_dpcc_config`, `function rkisp1_bls_config`, `function rkisp1_lsc_matrix_config_v10`, `function rkisp1_lsc_matrix_config_v12`, `function rkisp1_lsc_config`.
- 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.