media: rockchip: rkisp1: destage Rockchip ISP1 driver

All the items in the TODO list were addressed, uapi was reviewed,
documentation written, checkpatch errors fixed, several bugs fixed.

There is no big reason to keep this driver in staging, so move it out.

Dt-bindings Verified with:
make ARCH=arm64 dt_binding_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/media/rockchip-isp1.yaml

Fields of MAINTAINERS file sorted according to output of
./scripts/parse-maintainers.pl --input=MAINTAINERS --output=MAINTAINERS
--order

[dt-bindings: media: rkisp1: move rockchip-isp1 bindings out of staging]
[dt-bindings: media: rkisp1: move rockchip-isp1 bindings out of staging]
[hverkuil: fix various checkpatch alignment warnings]

Signed-off-by: Helen Koike <helen.koike@collabora.com>
Acked-by: Rob Herring <robh@kernel.org>
Reviewed-by: Tomasz Figa <tfiga@chromium.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
Helen Koike 2020-11-06 13:19:37 +01:00 committed by Mauro Carvalho Chehab
parent df22026aeb
commit e6938cc1cb
20 changed files with 72 additions and 80 deletions

View File

@ -46,4 +46,4 @@ important tuning tools using software control loop.
rkisp1 uAPI data types rkisp1 uAPI data types
====================== ======================
.. kernel-doc:: drivers/staging/media/rkisp1/uapi/rkisp1-config.h .. kernel-doc:: include/uapi/linux/rkisp1-config.h

View File

@ -15034,10 +15034,13 @@ ROCKCHIP ISP V1 DRIVER
M: Helen Koike <helen.koike@collabora.com> M: Helen Koike <helen.koike@collabora.com>
M: Dafna Hirschfeld <dafna.hirschfeld@collabora.com> M: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
L: linux-rockchip@lists.infradead.org
S: Maintained S: Maintained
F: Documentation/admin-guide/media/rkisp1.rst F: Documentation/admin-guide/media/rkisp1.rst
F: Documentation/devicetree/bindings/media/rockchip-isp1.yaml
F: Documentation/userspace-api/media/v4l/pixfmt-meta-rkisp1.rst F: Documentation/userspace-api/media/v4l/pixfmt-meta-rkisp1.rst
F: drivers/staging/media/rkisp1/ F: drivers/media/platform/rockchip/rkisp1
F: include/uapi/linux/rkisp1-config.h
ROCKCHIP RASTER 2D GRAPHIC ACCELERATION UNIT DRIVER ROCKCHIP RASTER 2D GRAPHIC ACCELERATION UNIT DRIVER
M: Jacob Chen <jacob-chen@iotwrt.com> M: Jacob Chen <jacob-chen@iotwrt.com>

View File

@ -147,6 +147,24 @@ config VIDEO_RENESAS_CEU
help help
This is a v4l2 driver for the Renesas CEU Interface This is a v4l2 driver for the Renesas CEU Interface
config VIDEO_ROCKCHIP_ISP1
tristate "Rockchip Image Signal Processing v1 Unit driver"
depends on VIDEO_V4L2 && OF
depends on ARCH_ROCKCHIP || COMPILE_TEST
select MEDIA_CONTROLLER
select VIDEO_V4L2_SUBDEV_API
select VIDEOBUF2_DMA_CONTIG
select VIDEOBUF2_VMALLOC
select V4L2_FWNODE
select GENERIC_PHY_MIPI_DPHY
default n
help
Enable this to support the Image Signal Processing (ISP) module
present in RK3399 SoCs.
To compile this driver as a module, choose M here: the module
will be called rockchip-isp1.
source "drivers/media/platform/exynos4-is/Kconfig" source "drivers/media/platform/exynos4-is/Kconfig"
source "drivers/media/platform/am437x/Kconfig" source "drivers/media/platform/am437x/Kconfig"
source "drivers/media/platform/xilinx/Kconfig" source "drivers/media/platform/xilinx/Kconfig"

View File

@ -52,6 +52,7 @@ obj-$(CONFIG_VIDEO_RENESAS_FDP1) += rcar_fdp1.o
obj-$(CONFIG_VIDEO_RENESAS_JPU) += rcar_jpu.o obj-$(CONFIG_VIDEO_RENESAS_JPU) += rcar_jpu.o
obj-$(CONFIG_VIDEO_RENESAS_VSP1) += vsp1/ obj-$(CONFIG_VIDEO_RENESAS_VSP1) += vsp1/
obj-$(CONFIG_VIDEO_ROCKCHIP_ISP1) += rockchip/rkisp1/
obj-$(CONFIG_VIDEO_ROCKCHIP_RGA) += rockchip/rga/ obj-$(CONFIG_VIDEO_ROCKCHIP_RGA) += rockchip/rga/
obj-y += omap/ obj-y += omap/

View File

@ -13,6 +13,7 @@
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/rkisp1-config.h>
#include <media/media-device.h> #include <media/media-device.h>
#include <media/media-entity.h> #include <media/media-entity.h>
#include <media/v4l2-ctrls.h> #include <media/v4l2-ctrls.h>
@ -20,7 +21,6 @@
#include <media/videobuf2-v4l2.h> #include <media/videobuf2-v4l2.h>
#include "rkisp1-regs.h" #include "rkisp1-regs.h"
#include "uapi/rkisp1-config.h"
/* /*
* flags on the 'direction' field in struct 'rkisp1_isp_mbus_info' that indicate * flags on the 'direction' field in struct 'rkisp1_isp_mbus_info' that indicate

View File

@ -255,7 +255,8 @@ static int rkisp1_subdev_notifier(struct rkisp1_device *rkisp1)
struct fwnode_handle *ep; struct fwnode_handle *ep;
ep = fwnode_graph_get_endpoint_by_id(dev_fwnode(rkisp1->dev), ep = fwnode_graph_get_endpoint_by_id(dev_fwnode(rkisp1->dev),
0, next_id, FWNODE_GRAPH_ENDPOINT_NEXT); 0, next_id,
FWNODE_GRAPH_ENDPOINT_NEXT);
if (!ep) if (!ep)
break; break;

View File

@ -1157,5 +1157,4 @@ void rkisp1_isp_isr(struct rkisp1_device *rkisp1)
*/ */
rkisp1_params_isr(rkisp1); rkisp1_params_isr(rkisp1);
} }
} }

View File

@ -186,7 +186,7 @@ static void rkisp1_bls_config(struct rkisp1_params *params,
/* ISP LS correction interface function */ /* ISP LS correction interface function */
static void static void
rkisp1_lsc_correct_matrix_config(struct rkisp1_params *params, rkisp1_lsc_correct_matrix_config(struct rkisp1_params *params,
const struct rkisp1_cif_isp_lsc_config *pconfig) const struct rkisp1_cif_isp_lsc_config *pconfig)
{ {
unsigned int isp_lsc_status, sram_addr, isp_lsc_table_sel, i, j, data; unsigned int isp_lsc_status, sram_addr, isp_lsc_table_sel, i, j, data;
@ -434,7 +434,7 @@ static void rkisp1_ctk_enable(struct rkisp1_params *params, bool en)
/* ISP White Balance Mode */ /* ISP White Balance Mode */
static void rkisp1_awb_meas_config(struct rkisp1_params *params, static void rkisp1_awb_meas_config(struct rkisp1_params *params,
const struct rkisp1_cif_isp_awb_meas_config *arg) const struct rkisp1_cif_isp_awb_meas_config *arg)
{ {
u32 reg_val = 0; u32 reg_val = 0;
/* based on the mode,configure the awb module */ /* based on the mode,configure the awb module */
@ -902,8 +902,8 @@ rkisp1_isp_isr_other_config(struct rkisp1_params *params,
RKISP1_CIF_ISP_DPCC_ENA); RKISP1_CIF_ISP_DPCC_ENA);
else else
rkisp1_param_clear_bits(params, rkisp1_param_clear_bits(params,
RKISP1_CIF_ISP_DPCC_MODE, RKISP1_CIF_ISP_DPCC_MODE,
RKISP1_CIF_ISP_DPCC_ENA); RKISP1_CIF_ISP_DPCC_ENA);
} }
} }
@ -936,12 +936,12 @@ rkisp1_isp_isr_other_config(struct rkisp1_params *params,
if (module_en_update & RKISP1_CIF_ISP_MODULE_SDG) { if (module_en_update & RKISP1_CIF_ISP_MODULE_SDG) {
if (module_ens & RKISP1_CIF_ISP_MODULE_SDG) if (module_ens & RKISP1_CIF_ISP_MODULE_SDG)
rkisp1_param_set_bits(params, rkisp1_param_set_bits(params,
RKISP1_CIF_ISP_CTRL, RKISP1_CIF_ISP_CTRL,
RKISP1_CIF_ISP_CTRL_ISP_GAMMA_IN_ENA); RKISP1_CIF_ISP_CTRL_ISP_GAMMA_IN_ENA);
else else
rkisp1_param_clear_bits(params, rkisp1_param_clear_bits(params,
RKISP1_CIF_ISP_CTRL, RKISP1_CIF_ISP_CTRL,
RKISP1_CIF_ISP_CTRL_ISP_GAMMA_IN_ENA); RKISP1_CIF_ISP_CTRL_ISP_GAMMA_IN_ENA);
} }
} }
@ -955,12 +955,12 @@ rkisp1_isp_isr_other_config(struct rkisp1_params *params,
if (module_en_update & RKISP1_CIF_ISP_MODULE_LSC) { if (module_en_update & RKISP1_CIF_ISP_MODULE_LSC) {
if (module_ens & RKISP1_CIF_ISP_MODULE_LSC) if (module_ens & RKISP1_CIF_ISP_MODULE_LSC)
rkisp1_param_set_bits(params, rkisp1_param_set_bits(params,
RKISP1_CIF_ISP_LSC_CTRL, RKISP1_CIF_ISP_LSC_CTRL,
RKISP1_CIF_ISP_LSC_CTRL_ENA); RKISP1_CIF_ISP_LSC_CTRL_ENA);
else else
rkisp1_param_clear_bits(params, rkisp1_param_clear_bits(params,
RKISP1_CIF_ISP_LSC_CTRL, RKISP1_CIF_ISP_LSC_CTRL,
RKISP1_CIF_ISP_LSC_CTRL_ENA); RKISP1_CIF_ISP_LSC_CTRL_ENA);
} }
} }
@ -969,17 +969,17 @@ rkisp1_isp_isr_other_config(struct rkisp1_params *params,
/* update awb gains */ /* update awb gains */
if (module_cfg_update & RKISP1_CIF_ISP_MODULE_AWB_GAIN) if (module_cfg_update & RKISP1_CIF_ISP_MODULE_AWB_GAIN)
rkisp1_awb_gain_config(params, rkisp1_awb_gain_config(params,
&new_params->others.awb_gain_config); &new_params->others.awb_gain_config);
if (module_en_update & RKISP1_CIF_ISP_MODULE_AWB_GAIN) { if (module_en_update & RKISP1_CIF_ISP_MODULE_AWB_GAIN) {
if (module_ens & RKISP1_CIF_ISP_MODULE_AWB_GAIN) if (module_ens & RKISP1_CIF_ISP_MODULE_AWB_GAIN)
rkisp1_param_set_bits(params, rkisp1_param_set_bits(params,
RKISP1_CIF_ISP_CTRL, RKISP1_CIF_ISP_CTRL,
RKISP1_CIF_ISP_CTRL_ISP_AWB_ENA); RKISP1_CIF_ISP_CTRL_ISP_AWB_ENA);
else else
rkisp1_param_clear_bits(params, rkisp1_param_clear_bits(params,
RKISP1_CIF_ISP_CTRL, RKISP1_CIF_ISP_CTRL,
RKISP1_CIF_ISP_CTRL_ISP_AWB_ENA); RKISP1_CIF_ISP_CTRL_ISP_AWB_ENA);
} }
} }
@ -993,12 +993,12 @@ rkisp1_isp_isr_other_config(struct rkisp1_params *params,
if (module_en_update & RKISP1_CIF_ISP_MODULE_BDM) { if (module_en_update & RKISP1_CIF_ISP_MODULE_BDM) {
if (module_ens & RKISP1_CIF_ISP_MODULE_BDM) if (module_ens & RKISP1_CIF_ISP_MODULE_BDM)
rkisp1_param_set_bits(params, rkisp1_param_set_bits(params,
RKISP1_CIF_ISP_DEMOSAIC, RKISP1_CIF_ISP_DEMOSAIC,
RKISP1_CIF_ISP_DEMOSAIC_BYPASS); RKISP1_CIF_ISP_DEMOSAIC_BYPASS);
else else
rkisp1_param_clear_bits(params, rkisp1_param_clear_bits(params,
RKISP1_CIF_ISP_DEMOSAIC, RKISP1_CIF_ISP_DEMOSAIC,
RKISP1_CIF_ISP_DEMOSAIC_BYPASS); RKISP1_CIF_ISP_DEMOSAIC_BYPASS);
} }
} }
@ -1016,8 +1016,8 @@ rkisp1_isp_isr_other_config(struct rkisp1_params *params,
RKISP1_CIF_ISP_FLT_ENA); RKISP1_CIF_ISP_FLT_ENA);
else else
rkisp1_param_clear_bits(params, rkisp1_param_clear_bits(params,
RKISP1_CIF_ISP_FILT_MODE, RKISP1_CIF_ISP_FILT_MODE,
RKISP1_CIF_ISP_FLT_ENA); RKISP1_CIF_ISP_FLT_ENA);
} }
} }
@ -1030,7 +1030,7 @@ rkisp1_isp_isr_other_config(struct rkisp1_params *params,
if (module_en_update & RKISP1_CIF_ISP_MODULE_CTK) if (module_en_update & RKISP1_CIF_ISP_MODULE_CTK)
rkisp1_ctk_enable(params, rkisp1_ctk_enable(params,
!!(module_ens & RKISP1_CIF_ISP_MODULE_CTK)); !!(module_ens & RKISP1_CIF_ISP_MODULE_CTK));
} }
if ((module_en_update & RKISP1_CIF_ISP_MODULE_GOC) || if ((module_en_update & RKISP1_CIF_ISP_MODULE_GOC) ||
@ -1043,12 +1043,12 @@ rkisp1_isp_isr_other_config(struct rkisp1_params *params,
if (module_en_update & RKISP1_CIF_ISP_MODULE_GOC) { if (module_en_update & RKISP1_CIF_ISP_MODULE_GOC) {
if (module_ens & RKISP1_CIF_ISP_MODULE_GOC) if (module_ens & RKISP1_CIF_ISP_MODULE_GOC)
rkisp1_param_set_bits(params, rkisp1_param_set_bits(params,
RKISP1_CIF_ISP_CTRL, RKISP1_CIF_ISP_CTRL,
RKISP1_CIF_ISP_CTRL_ISP_GAMMA_OUT_ENA); RKISP1_CIF_ISP_CTRL_ISP_GAMMA_OUT_ENA);
else else
rkisp1_param_clear_bits(params, rkisp1_param_clear_bits(params,
RKISP1_CIF_ISP_CTRL, RKISP1_CIF_ISP_CTRL,
RKISP1_CIF_ISP_CTRL_ISP_GAMMA_OUT_ENA); RKISP1_CIF_ISP_CTRL_ISP_GAMMA_OUT_ENA);
} }
} }
@ -1063,12 +1063,12 @@ rkisp1_isp_isr_other_config(struct rkisp1_params *params,
if (module_en_update & RKISP1_CIF_ISP_MODULE_CPROC) { if (module_en_update & RKISP1_CIF_ISP_MODULE_CPROC) {
if (module_ens & RKISP1_CIF_ISP_MODULE_CPROC) if (module_ens & RKISP1_CIF_ISP_MODULE_CPROC)
rkisp1_param_set_bits(params, rkisp1_param_set_bits(params,
RKISP1_CIF_C_PROC_CTRL, RKISP1_CIF_C_PROC_CTRL,
RKISP1_CIF_C_PROC_CTR_ENABLE); RKISP1_CIF_C_PROC_CTR_ENABLE);
else else
rkisp1_param_clear_bits(params, rkisp1_param_clear_bits(params,
RKISP1_CIF_C_PROC_CTRL, RKISP1_CIF_C_PROC_CTRL,
RKISP1_CIF_C_PROC_CTR_ENABLE); RKISP1_CIF_C_PROC_CTR_ENABLE);
} }
} }
@ -1081,7 +1081,7 @@ rkisp1_isp_isr_other_config(struct rkisp1_params *params,
if (module_en_update & RKISP1_CIF_ISP_MODULE_IE) if (module_en_update & RKISP1_CIF_ISP_MODULE_IE)
rkisp1_ie_enable(params, rkisp1_ie_enable(params,
!!(module_ens & RKISP1_CIF_ISP_MODULE_IE)); !!(module_ens & RKISP1_CIF_ISP_MODULE_IE));
} }
if ((module_en_update & RKISP1_CIF_ISP_MODULE_DPF) || if ((module_en_update & RKISP1_CIF_ISP_MODULE_DPF) ||
@ -1094,12 +1094,12 @@ rkisp1_isp_isr_other_config(struct rkisp1_params *params,
if (module_en_update & RKISP1_CIF_ISP_MODULE_DPF) { if (module_en_update & RKISP1_CIF_ISP_MODULE_DPF) {
if (module_ens & RKISP1_CIF_ISP_MODULE_DPF) if (module_ens & RKISP1_CIF_ISP_MODULE_DPF)
rkisp1_param_set_bits(params, rkisp1_param_set_bits(params,
RKISP1_CIF_ISP_DPF_MODE, RKISP1_CIF_ISP_DPF_MODE,
RKISP1_CIF_ISP_DPF_MODE_EN); RKISP1_CIF_ISP_DPF_MODE_EN);
else else
rkisp1_param_clear_bits(params, rkisp1_param_clear_bits(params,
RKISP1_CIF_ISP_DPF_MODE, RKISP1_CIF_ISP_DPF_MODE,
RKISP1_CIF_ISP_DPF_MODE_EN); RKISP1_CIF_ISP_DPF_MODE_EN);
} }
} }
@ -1107,7 +1107,7 @@ rkisp1_isp_isr_other_config(struct rkisp1_params *params,
(module_cfg_update & RKISP1_CIF_ISP_MODULE_DPF_STRENGTH)) { (module_cfg_update & RKISP1_CIF_ISP_MODULE_DPF_STRENGTH)) {
/* update dpf strength config */ /* update dpf strength config */
rkisp1_dpf_strength_config(params, rkisp1_dpf_strength_config(params,
&new_params->others.dpf_strength_config); &new_params->others.dpf_strength_config);
} }
} }
@ -1125,12 +1125,12 @@ static void rkisp1_isp_isr_meas_config(struct rkisp1_params *params,
/* update awb config */ /* update awb config */
if (module_cfg_update & RKISP1_CIF_ISP_MODULE_AWB) if (module_cfg_update & RKISP1_CIF_ISP_MODULE_AWB)
rkisp1_awb_meas_config(params, rkisp1_awb_meas_config(params,
&new_params->meas.awb_meas_config); &new_params->meas.awb_meas_config);
if (module_en_update & RKISP1_CIF_ISP_MODULE_AWB) if (module_en_update & RKISP1_CIF_ISP_MODULE_AWB)
rkisp1_awb_meas_enable(params, rkisp1_awb_meas_enable(params,
&new_params->meas.awb_meas_config, &new_params->meas.awb_meas_config,
!!(module_ens & RKISP1_CIF_ISP_MODULE_AWB)); !!(module_ens & RKISP1_CIF_ISP_MODULE_AWB));
} }
if ((module_en_update & RKISP1_CIF_ISP_MODULE_AFC) || if ((module_en_update & RKISP1_CIF_ISP_MODULE_AFC) ||
@ -1161,8 +1161,8 @@ static void rkisp1_isp_isr_meas_config(struct rkisp1_params *params,
if (module_en_update & RKISP1_CIF_ISP_MODULE_HST) if (module_en_update & RKISP1_CIF_ISP_MODULE_HST)
rkisp1_hst_enable(params, rkisp1_hst_enable(params,
&new_params->meas.hst_config, &new_params->meas.hst_config,
!!(module_ens & RKISP1_CIF_ISP_MODULE_HST)); !!(module_ens & RKISP1_CIF_ISP_MODULE_HST));
} }
if ((module_en_update & RKISP1_CIF_ISP_MODULE_AEC) || if ((module_en_update & RKISP1_CIF_ISP_MODULE_AEC) ||

View File

@ -610,8 +610,8 @@ static void rkisp1_rsz_set_sink_fmt(struct rkisp1_resizer *rsz,
RKISP1_ISP_MIN_WIDTH, RKISP1_ISP_MIN_WIDTH,
RKISP1_ISP_MAX_WIDTH); RKISP1_ISP_MAX_WIDTH);
sink_fmt->height = clamp_t(u32, format->height, sink_fmt->height = clamp_t(u32, format->height,
RKISP1_ISP_MIN_HEIGHT, RKISP1_ISP_MIN_HEIGHT,
RKISP1_ISP_MAX_HEIGHT); RKISP1_ISP_MAX_HEIGHT);
*format = *sink_fmt; *format = *sink_fmt;

View File

@ -44,6 +44,4 @@ source "drivers/staging/media/tegra-video/Kconfig"
source "drivers/staging/media/ipu3/Kconfig" source "drivers/staging/media/ipu3/Kconfig"
source "drivers/staging/media/rkisp1/Kconfig"
endif endif

View File

@ -10,5 +10,4 @@ obj-$(CONFIG_VIDEO_TEGRA) += tegra-video/
obj-$(CONFIG_TEGRA_VDE) += tegra-vde/ obj-$(CONFIG_TEGRA_VDE) += tegra-vde/
obj-$(CONFIG_VIDEO_HANTRO) += hantro/ obj-$(CONFIG_VIDEO_HANTRO) += hantro/
obj-$(CONFIG_VIDEO_IPU3_IMGU) += ipu3/ obj-$(CONFIG_VIDEO_IPU3_IMGU) += ipu3/
obj-$(CONFIG_VIDEO_ROCKCHIP_ISP1) += rkisp1/
obj-$(CONFIG_VIDEO_ZORAN) += zoran/ obj-$(CONFIG_VIDEO_ZORAN) += zoran/

View File

@ -1,19 +0,0 @@
# SPDX-License-Identifier: GPL-2.0-only
config VIDEO_ROCKCHIP_ISP1
tristate "Rockchip Image Signal Processing v1 Unit driver"
depends on VIDEO_V4L2 && OF
depends on ARCH_ROCKCHIP || COMPILE_TEST
select MEDIA_CONTROLLER
select VIDEO_V4L2_SUBDEV_API
select VIDEOBUF2_DMA_CONTIG
select VIDEOBUF2_VMALLOC
select V4L2_FWNODE
select GENERIC_PHY_MIPI_DPHY
default n
help
Enable this to support the Image Signal Processing (ISP) module
present in RK3399 SoCs.
To compile this driver as a module, choose M here: the module
will be called rockchip-isp1.

View File

@ -1,8 +0,0 @@
* Fix checkpatch errors.
NOTES:
* All v4l2-compliance test must pass.
* Stats and params can be tested with libcamera and ChromiumOS stack.
Please CC patches to Linux Media <linux-media@vger.kernel.org> and
Helen Koike <helen.koike@collabora.com>.