1*b562e72bSNiklas Söderlund // SPDX-License-Identifier: GPL-2.0 2*b562e72bSNiklas Söderlund /* 3*b562e72bSNiklas Söderlund * Copyright (C) 2026 Renesas Electronics Corp. 4*b562e72bSNiklas Söderlund * Copyright (C) 2026 Ideas on Board Oy 5*b562e72bSNiklas Söderlund * Copyright (C) 2026 Ragnatech AB 6*b562e72bSNiklas Söderlund */ 7*b562e72bSNiklas Söderlund 8*b562e72bSNiklas Söderlund #include "rpp_module.h" 9*b562e72bSNiklas Söderlund 10*b562e72bSNiklas Söderlund #define DPF_VERSION_REG 0x0000 11*b562e72bSNiklas Söderlund 12*b562e72bSNiklas Söderlund #define DPF_MODE_REG 0x0004 13*b562e72bSNiklas Söderlund #define DPF_MODE_USE_NF_GAIN BIT(9) 14*b562e72bSNiklas Söderlund #define DPF_MODE_LSC_GAIN_COMP BIT(8) 15*b562e72bSNiklas Söderlund #define DPF_MODE_NLL_SEGMENTATION BIT(6) 16*b562e72bSNiklas Söderlund #define DPF_MODE_RB_FILTER_SIZE BIT(5) 17*b562e72bSNiklas Söderlund #define DPF_MODE_R_FILTER_OFF BIT(4) 18*b562e72bSNiklas Söderlund #define DPF_MODE_GR_FILTER_OFF BIT(3) 19*b562e72bSNiklas Söderlund #define DPF_MODE_GB_FILTER_OFF BIT(2) 20*b562e72bSNiklas Söderlund #define DPF_MODE_B_FILTER_OFF BIT(1) 21*b562e72bSNiklas Söderlund #define DPF_MODE_DPF_ENABLE BIT(0) 22*b562e72bSNiklas Söderlund 23*b562e72bSNiklas Söderlund #define DPF_STRENGTH_R_REG 0x0008 24*b562e72bSNiklas Söderlund #define DPF_STRENGTH_G_REG 0x000c 25*b562e72bSNiklas Söderlund #define DPF_STRENGTH_B_REG 0x0010 26*b562e72bSNiklas Söderlund #define DPF_S_WEIGHT_G_1_4_REG 0x0014 27*b562e72bSNiklas Söderlund #define DPF_S_WEIGHT_G_5_6_REG 0x0018 28*b562e72bSNiklas Söderlund #define DPF_S_WEIGHT_RB_1_4_REG 0x001c 29*b562e72bSNiklas Söderlund #define DPF_S_WEIGHT_RB_5_6_REG 0x0020 30*b562e72bSNiklas Söderlund 31*b562e72bSNiklas Söderlund #define DPF_NLL_G_COEFF_REG_NUM 17 32*b562e72bSNiklas Söderlund #define DPF_NLL_G_COEFF_REG(n) (0x0024 + (4 * (n))) 33*b562e72bSNiklas Söderlund 34*b562e72bSNiklas Söderlund #define DPF_NLL_RB_COEFF_REG_NUM 17 35*b562e72bSNiklas Söderlund #define DPF_NLL_RB_COEFF_REG(n) (0x0068 + (4 * (n))) 36*b562e72bSNiklas Söderlund 37*b562e72bSNiklas Söderlund #define DPF_NF_GAIN_R_REG 0x00ac 38*b562e72bSNiklas Söderlund #define DPF_NF_GAIN_GR_REG 0x00b0 39*b562e72bSNiklas Söderlund #define DPF_NF_GAIN_GB_REG 0x00b4 40*b562e72bSNiklas Söderlund #define DPF_NF_GAIN_B_REG 0x00b8 41*b562e72bSNiklas Söderlund 42*b562e72bSNiklas Söderlund static int rppx1_bd_probe(struct rpp_module *mod) 43*b562e72bSNiklas Söderlund { 44*b562e72bSNiklas Söderlund /* Version check. */ 45*b562e72bSNiklas Söderlund if (rpp_module_read(mod, DPF_VERSION_REG) != 5) 46*b562e72bSNiklas Söderlund return -EINVAL; 47*b562e72bSNiklas Söderlund 48*b562e72bSNiklas Söderlund return 0; 49*b562e72bSNiklas Söderlund } 50*b562e72bSNiklas Söderlund 51*b562e72bSNiklas Söderlund const struct rpp_module_ops rppx1_bd_ops = { 52*b562e72bSNiklas Söderlund .probe = rppx1_bd_probe, 53*b562e72bSNiklas Söderlund }; 54