[PATCH v2 44/55] media: rkisp1: Add infrastructure to support ISP features
Dafna Hirschfeld
dafna at fastmail.com
Sun Jul 10 19:29:19 PDT 2022
On 01.07.2022 02:07, Laurent Pinchart wrote:
>Different ISP versions implement different sets of features. The driver
>already takes the version into account in several places, but this
>approach won't scale well for features that are found in different
>versions. Introduce a new mechanism using a features bitmask in the
>rkisp1_info structure to indicate which features the ISP support.
>
>The first feature bit tells if the ISP has an internal CSI-2 receiver,
>which is not available in all ISP versions.
>
>Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Dafna Hirschfeld <dafna at fastmail.com>
>---
> .../platform/rockchip/rkisp1/rkisp1-common.h | 15 +++++++++++++++
> .../media/platform/rockchip/rkisp1/rkisp1-dev.c | 2 ++
> 2 files changed, 17 insertions(+)
>
>diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
>index e436f1572566..dedfcf3466c8 100644
>--- a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
>+++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
>@@ -98,6 +98,19 @@ enum rkisp1_isp_pad {
> RKISP1_ISP_PAD_MAX
> };
>
>+/*
>+ * enum rkisp1_feature - ISP features
>+ *
>+ * @RKISP1_FEATURE_MIPI_CSI2: The ISP has an internal MIPI CSI-2 receiver
>+ *
>+ * The ISP features are stored in a bitmask in &rkisp1_info.features and allow
>+ * the driver to implement support for features present in some ISP versions
>+ * only.
>+ */
>+enum rkisp1_feature {
>+ RKISP1_FEATURE_MIPI_CSI2 = BIT(0),
>+};
>+
> /*
> * struct rkisp1_info - Model-specific ISP Information
> *
>@@ -106,6 +119,7 @@ enum rkisp1_isp_pad {
> * @isrs: array of ISP interrupt descriptors
> * @isr_size: number of entries in the @isrs array
> * @isp_ver: ISP version
>+ * @features: bitmatk of rkisp1_feature features implemented by the ISP
> *
> * This structure contains information about the ISP specific to a particular
> * ISP model, version, or integration in a particular SoC.
>@@ -116,6 +130,7 @@ struct rkisp1_info {
> const struct rkisp1_isr_data *isrs;
> unsigned int isr_size;
> enum rkisp1_cif_isp_version isp_ver;
>+ unsigned int features;
> };
>
> /*
>diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c
>index 1dcade2fd2a7..bc278b49fefc 100644
>--- a/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c
>+++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c
>@@ -460,6 +460,7 @@ static const struct rkisp1_info px30_isp_info = {
> .isrs = px30_isp_isrs,
> .isr_size = ARRAY_SIZE(px30_isp_isrs),
> .isp_ver = RKISP1_V12,
>+ .features = RKISP1_FEATURE_MIPI_CSI2,
> };
>
> static const char * const rk3399_isp_clks[] = {
>@@ -478,6 +479,7 @@ static const struct rkisp1_info rk3399_isp_info = {
> .isrs = rk3399_isp_isrs,
> .isr_size = ARRAY_SIZE(rk3399_isp_isrs),
> .isp_ver = RKISP1_V10,
>+ .features = RKISP1_FEATURE_MIPI_CSI2,
> };
>
> static const struct of_device_id rkisp1_of_match[] = {
>--
>Regards,
>
>Laurent Pinchart
>
>
>_______________________________________________
>Linux-rockchip mailing list
>Linux-rockchip at lists.infradead.org
>http://lists.infradead.org/mailman/listinfo/linux-rockchip
More information about the Linux-rockchip
mailing list