From: changhuang.liang Date: Fri, 8 Jul 2022 02:34:19 +0000 (+0800) Subject: v4l2: delete csiphy1 and csi1 subdev X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2bd9501c2ff345105e1328cc13b67cd5e6221779;p=platform%2Fkernel%2Flinux-starfive.git v4l2: delete csiphy1 and csi1 subdev Signed-off-by: changhuang.liang --- diff --git a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi index 3175e12c..193cfe4 100644 --- a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi +++ b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi @@ -310,15 +310,14 @@ }; &vin_sysctl { - /* when use dvp open this pinctrl*/ status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; - port@2 { - reg = <2>; + port@0 { + reg = <0>; #address-cells = <1>; #size-cells = <0>; @@ -336,8 +335,8 @@ }; }; - port@3 { - reg = <3>; + port@1 { + reg = <1>; #address-cells = <1>; #size-cells = <0>; diff --git a/arch/riscv/boot/dts/starfive/jh7110.dtsi b/arch/riscv/boot/dts/starfive/jh7110.dtsi index 431adf4..b0cfdcb 100644 --- a/arch/riscv/boot/dts/starfive/jh7110.dtsi +++ b/arch/riscv/boot/dts/starfive/jh7110.dtsi @@ -763,13 +763,12 @@ reg = <0x0 0x19800000 0x0 0x10000>, <0x0 0x19810000 0x0 0x10000>, <0x0 0x19820000 0x0 0x10000>, - <0x0 0x19830000 0x0 0x10000>, <0x0 0x19840000 0x0 0x10000>, <0x0 0x19870000 0x0 0x30000>, <0x0 0x11840000 0x0 0x10000>, <0x0 0x17030000 0x0 0x10000>, <0x0 0x13020000 0x0 0x10000>; - reg-names = "mipi0", "vclk", "vrst", "mipi1", "sctrl", + reg-names = "csi2rx", "vclk", "vrst", "sctrl", "isp", "trst", "pmu", "syscrg"; clocks = <&clkisp JH7110_DOM4_APB_FUNC>, <&clkisp JH7110_U0_VIN_PCLK>, diff --git a/drivers/media/platform/starfive/v4l2_driver/stf_csi.c b/drivers/media/platform/starfive/v4l2_driver/stf_csi.c index 2eb6bea..6fef42a 100644 --- a/drivers/media/platform/starfive/v4l2_driver/stf_csi.c +++ b/drivers/media/platform/starfive/v4l2_driver/stf_csi.c @@ -31,12 +31,10 @@ static int csi_find_format(u32 code, return -EINVAL; } -int stf_csi_subdev_init(struct stfcamss *stfcamss, int id) +int stf_csi_subdev_init(struct stfcamss *stfcamss) { - struct stf_csi_dev *csi_dev = &stfcamss->csi_dev[id]; + struct stf_csi_dev *csi_dev = stfcamss->csi_dev; - csi_dev->id = id; - csi_dev->csiphy_id = id; csi_dev->s_type = SENSOR_VIN; csi_dev->hw_ops = &csi_ops; csi_dev->stfcamss = stfcamss; @@ -69,14 +67,10 @@ __csi_get_format(struct stf_csi_dev *csi_dev, static int csi_set_stream(struct v4l2_subdev *sd, int enable) { struct stf_csi_dev *csi_dev = v4l2_get_subdevdata(sd); - struct stf_csi_dev *csi0_dev = &csi_dev->stfcamss->csi_dev[0]; struct v4l2_mbus_framefmt *format; int ret = 0, is_raw10 = 0; u32 code; - if (csi_dev->id == 1) - csi_set_stream(&csi0_dev->subdev, enable); - format = __csi_get_format(csi_dev, NULL, STF_CSI_PAD_SRC, V4L2_SUBDEV_FORMAT_ACTIVE); if (format == NULL) @@ -97,7 +91,6 @@ static int csi_set_stream(struct v4l2_subdev *sd, int enable) mutex_lock(&csi_dev->stream_lock); if (enable) { if (csi_dev->stream_count == 0) { - //csi_dev->hw_ops->csi_config_set(csi_dev); csi_dev->hw_ops->csi_clk_enable(csi_dev); csi_dev->hw_ops->csi_set_format(csi_dev, format->height, @@ -307,8 +300,7 @@ static int csi_link_setup(struct media_entity *entity, csi_dev->s_type = SENSOR_VIN; if (line->sdev_type == ISP_DEV_TYPE) csi_dev->s_type = SENSOR_ISP; - st_info(ST_CSI, "CSI%d device sensor type: %d\n", - csi_dev->id, csi_dev->s_type); + st_info(ST_CSI, "CSI device sensor type: %d\n", csi_dev->s_type); } if ((local->flags & MEDIA_PAD_FL_SINK) && @@ -326,9 +318,7 @@ static int csi_link_setup(struct media_entity *entity, sd = media_entity_to_v4l2_subdev(remote->entity); csiphy_dev = v4l2_get_subdevdata(sd); - csi_dev->csiphy_id = csiphy_dev->id; - st_info(ST_CSI, "CSI%d link to csiphy%d\n", - csi_dev->id, csi_dev->csiphy_id); + st_info(ST_CSI, "CSI0 link to csiphy0\n"); } return 0; @@ -383,7 +373,7 @@ int stf_csi_register(struct stf_csi_dev *csi_dev, struct v4l2_device *v4l2_dev) sd->internal_ops = &csi_v4l2_internal_ops; sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; snprintf(sd->name, ARRAY_SIZE(sd->name), "%s%d", - STF_CSI_NAME, csi_dev->id); + STF_CSI_NAME, 0); v4l2_set_subdevdata(sd, csi_dev); ret = csi_init_formats(sd, NULL); diff --git a/drivers/media/platform/starfive/v4l2_driver/stf_csi.h b/drivers/media/platform/starfive/v4l2_driver/stf_csi.h index a3e2656..34279a1 100644 --- a/drivers/media/platform/starfive/v4l2_driver/stf_csi.h +++ b/drivers/media/platform/starfive/v4l2_driver/stf_csi.h @@ -28,7 +28,6 @@ struct csi_hw_ops { int (*csi_power_on)(struct stf_csi_dev *csi_dev, u8 on); int (*csi_clk_enable)(struct stf_csi_dev *csi_dev); int (*csi_clk_disable)(struct stf_csi_dev *csi_dev); - int (*csi_config_set)(struct stf_csi_dev *csi_dev); int (*csi_set_format)(struct stf_csi_dev *csi_dev, u32 vsize, u8 bpp, int is_raw10); int (*csi_stream_set)(struct stf_csi_dev *csi_dev, int on); @@ -36,8 +35,6 @@ struct csi_hw_ops { struct stf_csi_dev { struct stfcamss *stfcamss; - u8 id; - u8 csiphy_id; enum sensor_type s_type; struct v4l2_subdev subdev; struct media_pad pads[STF_CSI_PADS_NUM]; @@ -51,16 +48,11 @@ struct stf_csi_dev { struct regulator *mipirx_0p9; }; -extern int stf_csi_subdev_init(struct stfcamss *stfcamss, int id); +extern int stf_csi_subdev_init(struct stfcamss *stfcamss); extern int stf_csi_register(struct stf_csi_dev *csi_dev, struct v4l2_device *v4l2_dev); extern int stf_csi_unregister(struct stf_csi_dev *csi_dev); -extern int raw_csi2rx_dphy_config(struct stf_vin_dev *vin, - const csi2rx_dphy_cfg_t *cfg); -extern int raw_csi2rx_config(struct stf_vin_dev *vin, - int id, - const csi2rx_cfg_t *cfg); extern struct csi_hw_ops csi_ops; -extern void dump_csi_reg(void *__iomem csibase, int id); +extern void dump_csi_reg(void *__iomem csibase); #endif /* STF_CSI_H */ diff --git a/drivers/media/platform/starfive/v4l2_driver/stf_csi_hw_ops.c b/drivers/media/platform/starfive/v4l2_driver/stf_csi_hw_ops.c index defc67f..e78b499 100644 --- a/drivers/media/platform/starfive/v4l2_driver/stf_csi_hw_ops.c +++ b/drivers/media/platform/starfive/v4l2_driver/stf_csi_hw_ops.c @@ -108,51 +108,10 @@ static int stf_csi_clk_disable(struct stf_csi_dev *csi_dev) return 0; } -static int stf_csi_config_set(struct stf_csi_dev *csi_dev) -{ - struct stf_vin_dev *vin = csi_dev->stfcamss->vin; - u32 mipi_channel_sel, mipi_vc = 0; - - st_info(ST_CSI, "%s, csi_id = %d\n", __func__, csi_dev->id); - - switch (csi_dev->s_type) { - case SENSOR_VIN: - st_err(ST_CSI, "%s, %d: need todo\n", __func__, __LINE__); - break; - case SENSOR_ISP: - reg_set_bit(vin->clkgen_base, - CLK_ISP_MIPI_CTRL, - BIT(24), csi_dev->id << 24); - - reg_set_bit(vin->clkgen_base, - CLK_C_ISP_CTRL, - BIT(25) | BIT(24), - csi_dev->id << 24); - - mipi_channel_sel = csi_dev->id * 4 + mipi_vc; - reg_set_bit(vin->sysctrl_base, - SYSCTRL_VIN_SRC_CHAN_SEL, - 0xF, mipi_channel_sel); - break; - default: - break; - } - - return 0; -} - static int stf_csi_set_format(struct stf_csi_dev *csi_dev, u32 vsize, u8 bpp, int is_raw10) { struct stf_vin_dev *vin = csi_dev->stfcamss->vin; - void *reg_base = NULL; - - if (csi_dev->id == 0) - reg_base = vin->mipi0_base; - else if (csi_dev->id == 1) - reg_base = vin->mipi1_base; - else - return 0; switch (csi_dev->s_type) { case SENSOR_VIN: @@ -185,13 +144,13 @@ static int csi2rx_start(struct stf_csi_dev *csi_dev, void *reg_base) { struct stfcamss *stfcamss = csi_dev->stfcamss; struct csi2phy_cfg *csiphy = - stfcamss->csiphy_dev[csi_dev->csiphy_id].csiphy; + stfcamss->csiphy_dev->csiphy; unsigned int i; unsigned long lanes_used = 0; u32 reg; if (!csiphy) { - st_err(ST_CSI, "csiphy%d config not exist\n", csi_dev->csiphy_id); + st_err(ST_CSI, "csiphy0 config not exist\n"); return -EINVAL; } @@ -275,14 +234,7 @@ static int stf_csi_stream_set(struct stf_csi_dev *csi_dev, int on) { struct stfcamss *stfcamss = csi_dev->stfcamss; struct stf_vin_dev *vin = csi_dev->stfcamss->vin; - void *reg_base = NULL; - - if (csi_dev->id == 0) - reg_base = vin->mipi0_base; - else if (csi_dev->id == 1) - reg_base = vin->mipi1_base; - else - return 0; + void __iomem *reg_base = vin->csi2rx_base; switch (csi_dev->s_type) { case SENSOR_VIN: @@ -331,9 +283,9 @@ static int stf_csi_stream_set(struct stf_csi_dev *csi_dev, int on) return 0; } -void dump_csi_reg(void *__iomem csibase, int id) +void dump_csi_reg(void *__iomem csibase) { - st_info(ST_CSI, "DUMP CSI%d register:\n", id); + st_info(ST_CSI, "DUMP CSI register:\n"); print_reg(ST_CSI, csibase, 0x00); print_reg(ST_CSI, csibase, 0x04); print_reg(ST_CSI, csibase, 0x08); @@ -349,7 +301,6 @@ struct csi_hw_ops csi_ops = { .csi_power_on = stf_csi_power_on, .csi_clk_enable = stf_csi_clk_enable, .csi_clk_disable = stf_csi_clk_disable, - .csi_config_set = stf_csi_config_set, .csi_set_format = stf_csi_set_format, .csi_stream_set = stf_csi_stream_set, }; diff --git a/drivers/media/platform/starfive/v4l2_driver/stf_csiphy.c b/drivers/media/platform/starfive/v4l2_driver/stf_csiphy.c index bd0d148..5bc490a 100644 --- a/drivers/media/platform/starfive/v4l2_driver/stf_csiphy.c +++ b/drivers/media/platform/starfive/v4l2_driver/stf_csiphy.c @@ -19,12 +19,10 @@ static const struct csiphy_format csiphy_formats_st7110[] = { { MEDIA_BUS_FMT_SBGGR10_1X10, 10}, }; -int stf_csiphy_subdev_init(struct stfcamss *stfcamss, int id) +int stf_csiphy_subdev_init(struct stfcamss *stfcamss) { - struct stf_csiphy_dev *csiphy_dev = &stfcamss->csiphy_dev[id]; + struct stf_csiphy_dev *csiphy_dev = stfcamss->csiphy_dev; - csiphy_dev->id = id; - csiphy_dev->csi_id = id; csiphy_dev->hw_ops = &csiphy_ops; csiphy_dev->stfcamss = stfcamss; csiphy_dev->formats = csiphy_formats_st7110; @@ -35,12 +33,6 @@ int stf_csiphy_subdev_init(struct stfcamss *stfcamss, int id) static int csiphy_set_power(struct v4l2_subdev *sd, int on) { -#ifdef CONFIG_VIDEO_CADENCE_CSI2RX - struct stf_csiphy_dev *csiphy_dev = v4l2_get_subdevdata(sd); - - if (on) - csiphy_dev->hw_ops->cdns_csi_power(csiphy_dev, on); -#endif return 0; } @@ -68,10 +60,6 @@ static int csiphy_set_stream(struct v4l2_subdev *sd, int enable) exit: mutex_unlock(&csiphy_dev->stream_lock); -#ifdef CONFIG_VIDEO_CADENCE_CSI2RX - if (!enable) - csiphy_dev->hw_ops->cdns_csi_power(csiphy_dev, enable); -#endif return 0; } @@ -278,9 +266,7 @@ static int csiphy_link_setup(struct media_entity *entity, sd = media_entity_to_v4l2_subdev(remote->entity); csi_dev = v4l2_get_subdevdata(sd); - csiphy_dev->csi_id = csi_dev->id; - st_info(ST_CSIPHY, "CSIPHY%d link to CSI%d\n", - csiphy_dev->id, csiphy_dev->csi_id); + st_info(ST_CSIPHY, "CSIPHY0 link to CSI0\n"); } return 0; @@ -328,7 +314,7 @@ int stf_csiphy_register(struct stf_csiphy_dev *csiphy_dev, sd->internal_ops = &csiphy_v4l2_internal_ops; sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; snprintf(sd->name, ARRAY_SIZE(sd->name), "%s%d", - STF_CSIPHY_NAME, csiphy_dev->id); + STF_CSIPHY_NAME, 0); v4l2_set_subdevdata(sd, csiphy_dev); ret = csiphy_init_formats(sd, NULL); @@ -348,20 +334,11 @@ int stf_csiphy_register(struct stf_csiphy_dev *csiphy_dev, return ret; } -#ifndef CONFIG_VIDEO_CADENCE_CSI2RX ret = v4l2_device_register_subdev(v4l2_dev, sd); if (ret < 0) { dev_err(dev, "Failed to register subdev: %d\n", ret); goto err_sreg; } -#else - sd->dev = dev; - ret = v4l2_async_register_subdev(sd); - if (ret < 0) { - dev_err(dev, "Failed to async register subdev: %d\n", ret); - goto err_sreg; - } -#endif return 0; diff --git a/drivers/media/platform/starfive/v4l2_driver/stf_csiphy.h b/drivers/media/platform/starfive/v4l2_driver/stf_csiphy.h index 4bd0d45..aa4e61e 100644 --- a/drivers/media/platform/starfive/v4l2_driver/stf_csiphy.h +++ b/drivers/media/platform/starfive/v4l2_driver/stf_csiphy.h @@ -161,16 +161,11 @@ struct csiphy_hw_ops { int (*csiphy_clk_disable)(struct stf_csiphy_dev *csiphy_dev); int (*csiphy_config_set)(struct stf_csiphy_dev *csiphy_dev); int (*csiphy_stream_set)(struct stf_csiphy_dev *csiphy_dev, int on); -#ifdef CONFIG_VIDEO_CADENCE_CSI2RX - int (*cdns_csi_power)(struct stf_csiphy_dev *csiphy_dev, int on); -#endif }; struct stf_csiphy_dev { struct stfcamss *stfcamss; struct csi2phy_cfg *csiphy; - u8 id; - u8 csi_id; struct v4l2_subdev subdev; struct media_pad pads[STF_CSIPHY_PADS_NUM]; struct v4l2_mbus_framefmt fmt[STF_CSIPHY_PADS_NUM]; @@ -181,7 +176,7 @@ struct stf_csiphy_dev { int stream_count; }; -extern int stf_csiphy_subdev_init(struct stfcamss *stfcamss, int id); +extern int stf_csiphy_subdev_init(struct stfcamss *stfcamss); extern int stf_csiphy_register(struct stf_csiphy_dev *csiphy_dev, struct v4l2_device *v4l2_dev); extern int stf_csiphy_unregister(struct stf_csiphy_dev *csiphy_dev); diff --git a/drivers/media/platform/starfive/v4l2_driver/stf_csiphy_hw_ops.c b/drivers/media/platform/starfive/v4l2_driver/stf_csiphy_hw_ops.c index 9ab9a80..b903566 100644 --- a/drivers/media/platform/starfive/v4l2_driver/stf_csiphy_hw_ops.c +++ b/drivers/media/platform/starfive/v4l2_driver/stf_csiphy_hw_ops.c @@ -135,31 +135,12 @@ static int csi2rx_dphy_config(struct stf_vin_dev *vin, { struct csi2phy_cfg2 cfg2 = {0}; struct csi2phy_cfg2 *cfg = &cfg2; - struct stf_csiphy_dev *csiphy0_dev = - &csiphy_dev->stfcamss->csiphy_dev[0]; - struct stf_csiphy_dev *csiphy1_dev = - &csiphy_dev->stfcamss->csiphy_dev[1]; - struct csi2phy_cfg *phy0cfg = csiphy0_dev->csiphy; - struct csi2phy_cfg *phy1cfg = csiphy1_dev->csiphy; - int id = csiphy_dev->id; + struct csi2phy_cfg *phycfg = csiphy_dev->csiphy; - st_debug(ST_CSIPHY, "%s, csiphy id = %d\n", - __func__, id); - - if (!phy0cfg && !phy1cfg) + if (!phycfg) return -EINVAL; -#ifdef USE_CSIDPHY_ONE_CLK_MODE - if (id == 0) { - phy0cfg = csiphy0_dev->csiphy; - phy1cfg = NULL; - } else { - phy0cfg = NULL; - phy1cfg = csiphy1_dev->csiphy; - } -#endif - - if (try_cfg(cfg, phy0cfg, phy1cfg)) + if (try_cfg(cfg, phycfg, NULL)) return -EINVAL; reg_write(vin->rstgen_base, M31DPHY_APBCFGSAIF__SYSCFG_4, 0x0); @@ -335,9 +316,6 @@ static int stf_csiphy_config_set(struct stf_csiphy_dev *csiphy_dev) { struct stf_vin_dev *vin = csiphy_dev->stfcamss->vin; - st_debug(ST_CSIPHY, "%s, csiphy id = %d\n", - __func__, csiphy_dev->id); - csi2rx_dphy_config(vin, csiphy_dev); return 0; } @@ -347,131 +325,9 @@ static int stf_csiphy_stream_set(struct stf_csiphy_dev *csiphy_dev, int on) return 0; } -#ifdef CONFIG_VIDEO_CADENCE_CSI2RX -static int stf_csi_clk_enable(struct stf_csiphy_dev *csiphy_dev) -{ - struct stf_vin_dev *vin = csiphy_dev->stfcamss->vin; - - reg_set_highest_bit(vin->clkgen_base, CLK_CSI2RX0_APB_CTRL); - - if (csiphy_dev->id == 0) { - reg_set_bit(vin->clkgen_base, - CLK_MIPI_RX0_PXL_CTRL, - 0x1F, 0x3); - reg_set_highest_bit(vin->clkgen_base, CLK_MIPI_RX0_PXL_0_CTRL); - reg_set_highest_bit(vin->clkgen_base, CLK_MIPI_RX0_PXL_1_CTRL); - reg_set_highest_bit(vin->clkgen_base, CLK_MIPI_RX0_PXL_2_CTRL); - reg_set_highest_bit(vin->clkgen_base, CLK_MIPI_RX0_PXL_3_CTRL); - reg_set_highest_bit(vin->clkgen_base, CLK_MIPI_RX0_SYS0_CTRL); - } else { - reg_set_bit(vin->clkgen_base, - CLK_MIPI_RX1_PXL_CTRL, - 0x1F, 0x3); - reg_set_highest_bit(vin->clkgen_base, CLK_MIPI_RX1_PXL_0_CTRL); - reg_set_highest_bit(vin->clkgen_base, CLK_MIPI_RX1_PXL_1_CTRL); - reg_set_highest_bit(vin->clkgen_base, CLK_MIPI_RX1_PXL_2_CTRL); - reg_set_highest_bit(vin->clkgen_base, CLK_MIPI_RX1_PXL_3_CTRL); - reg_set_highest_bit(vin->clkgen_base, CLK_MIPI_RX1_SYS1_CTRL); - } - - return 0; -} - -static int stf_csi_clk_disable(struct stf_csiphy_dev *csiphy_dev) -{ - struct stf_vin_dev *vin = csiphy_dev->stfcamss->vin; - - reg_clr_highest_bit(vin->clkgen_base, CLK_CSI2RX0_APB_CTRL); - - if (csiphy_dev->id == 0) { - reg_clr_highest_bit(vin->clkgen_base, CLK_MIPI_RX0_PXL_0_CTRL); - reg_clr_highest_bit(vin->clkgen_base, CLK_MIPI_RX0_PXL_1_CTRL); - reg_clr_highest_bit(vin->clkgen_base, CLK_MIPI_RX0_PXL_2_CTRL); - reg_clr_highest_bit(vin->clkgen_base, CLK_MIPI_RX0_PXL_3_CTRL); - reg_clr_highest_bit(vin->clkgen_base, CLK_MIPI_RX0_SYS0_CTRL); - } else { - reg_clr_highest_bit(vin->clkgen_base, CLK_MIPI_RX1_PXL_0_CTRL); - reg_clr_highest_bit(vin->clkgen_base, CLK_MIPI_RX1_PXL_1_CTRL); - reg_clr_highest_bit(vin->clkgen_base, CLK_MIPI_RX1_PXL_2_CTRL); - reg_clr_highest_bit(vin->clkgen_base, CLK_MIPI_RX1_PXL_3_CTRL); - reg_clr_highest_bit(vin->clkgen_base, CLK_MIPI_RX1_SYS1_CTRL); - } - - return 0; -} - -static int stf_csi_config_set(struct stf_csiphy_dev *csiphy_dev, int is_raw10) -{ - struct stf_vin_dev *vin = csiphy_dev->stfcamss->vin; - u32 mipi_channel_sel, mipi_vc = 0; - enum sensor_type s_type = SENSOR_ISP; - - switch (s_type) { - case SENSOR_VIN: - break; - case SENSOR_ISP: - reg_set_bit(vin->clkgen_base, - CLK_ISP_MIPI_CTRL, - BIT(24), csiphy_dev->id << 24); - - reg_set_bit(vin->clkgen_base, - CLK_C_ISP_CTRL, - BIT(25) | BIT(24), - csiphy_dev->id << 24); - - mipi_channel_sel = csiphy_dev->id * 4 + mipi_vc; - reg_set_bit(vin->sysctrl_base, - SYSCTRL_VIN_SRC_CHAN_SEL, - 0xF, mipi_channel_sel); - - if (is_raw10) - reg_set_bit(vin->sysctrl_base, - SYSCTRL_VIN_SRC_DW_SEL, - BIT(4), 1 << 4); - break; - case SENSOR_ISP1: - reg_set_bit(vin->clkgen_base, - CLK_ISP1_MIPI_CTRL, - BIT(24), csiphy_dev->id << 24); - reg_set_bit(vin->clkgen_base, - CLK_C_ISP1_CTRL, - BIT(25) | BIT(24), - csiphy_dev->id << 24); - - mipi_channel_sel = csiphy_dev->id * 4 + mipi_vc; - reg_set_bit(vin->sysctrl_base, - SYSCTRL_VIN_SRC_CHAN_SEL, - 0xF << 4, mipi_channel_sel << 4); - - if (is_raw10) - reg_set_bit(vin->sysctrl_base, - SYSCTRL_VIN_SRC_DW_SEL, - BIT(5), 1 << 5); - default: - break; - } - - return 0; -} - -static int stf_cdns_csi_power(struct stf_csiphy_dev *csiphy_dev, int on) -{ - if (on) { - stf_csi_config_set(csiphy_dev, 1); - stf_csi_clk_enable(csiphy_dev); - } else - stf_csi_clk_disable(csiphy_dev); - - return 0; -} -#endif - struct csiphy_hw_ops csiphy_ops = { .csiphy_clk_enable = stf_csiphy_clk_enable, .csiphy_clk_disable = stf_csiphy_clk_disable, .csiphy_config_set = stf_csiphy_config_set, .csiphy_stream_set = stf_csiphy_stream_set, -#ifdef CONFIG_VIDEO_CADENCE_CSI2RX - .cdns_csi_power = stf_cdns_csi_power, -#endif }; diff --git a/drivers/media/platform/starfive/v4l2_driver/stf_dvp.c b/drivers/media/platform/starfive/v4l2_driver/stf_dvp.c index 6def60b..ba00211 100644 --- a/drivers/media/platform/starfive/v4l2_driver/stf_dvp.c +++ b/drivers/media/platform/starfive/v4l2_driver/stf_dvp.c @@ -339,7 +339,7 @@ int stf_dvp_register(struct stf_dvp_dev *dvp_dev, sd->internal_ops = &dvp_v4l2_internal_ops; sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; snprintf(sd->name, ARRAY_SIZE(sd->name), "%s%d", - STF_DVP_NAME, dvp_dev->id); + STF_DVP_NAME, 0); v4l2_set_subdevdata(sd, dvp_dev); ret = dvp_init_formats(sd, NULL); diff --git a/drivers/media/platform/starfive/v4l2_driver/stf_dvp.h b/drivers/media/platform/starfive/v4l2_driver/stf_dvp.h index cefafa9..b61a71f 100644 --- a/drivers/media/platform/starfive/v4l2_driver/stf_dvp.h +++ b/drivers/media/platform/starfive/v4l2_driver/stf_dvp.h @@ -43,7 +43,6 @@ struct dvp_hw_ops { struct stf_dvp_dev { struct stfcamss *stfcamss; struct dvp_cfg *dvp; - u8 id; enum sensor_type s_type; struct v4l2_subdev subdev; struct media_pad pads[STF_DVP_PADS_NUM]; diff --git a/drivers/media/platform/starfive/v4l2_driver/stf_vin.c b/drivers/media/platform/starfive/v4l2_driver/stf_vin.c index 9ba04e3..109cf44 100644 --- a/drivers/media/platform/starfive/v4l2_driver/stf_vin.c +++ b/drivers/media/platform/starfive/v4l2_driver/stf_vin.c @@ -1369,7 +1369,7 @@ int stf_vin_register(struct stf_vin2_dev *vin_dev, struct v4l2_device *v4l2_dev) sd->internal_ops = &vin_v4l2_internal_ops; sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; snprintf(sd->name, ARRAY_SIZE(sd->name), "%s%d_%s", - STF_VIN_NAME, vin_dev->id, sub_name); + STF_VIN_NAME, 0, sub_name); v4l2_set_subdevdata(sd, &vin_dev->line[i]); ret = vin_init_formats(sd, NULL); diff --git a/drivers/media/platform/starfive/v4l2_driver/stf_vin.h b/drivers/media/platform/starfive/v4l2_driver/stf_vin.h index 072741c..75fd7ce 100644 --- a/drivers/media/platform/starfive/v4l2_driver/stf_vin.h +++ b/drivers/media/platform/starfive/v4l2_driver/stf_vin.h @@ -156,7 +156,6 @@ struct dummy_buffer { struct stf_vin2_dev { struct stfcamss *stfcamss; - u8 id; struct vin_line line[VIN_LINE_MAX]; struct dummy_buffer dummy_buffer[STF_DUMMY_MODULE_NUMS]; struct vin_hw_ops *hw_ops; diff --git a/drivers/media/platform/starfive/v4l2_driver/stfcamss.c b/drivers/media/platform/starfive/v4l2_driver/stfcamss.c index d3fd5ca..9176649 100644 --- a/drivers/media/platform/starfive/v4l2_driver/stfcamss.c +++ b/drivers/media/platform/starfive/v4l2_driver/stfcamss.c @@ -44,12 +44,9 @@ EXPORT_SYMBOL_GPL(stdbg_level); EXPORT_SYMBOL_GPL(stdbg_mask); static const struct reg_name mem_reg_name[] = { -#ifndef CONFIG_VIDEO_CADENCE_CSI2RX - {"mipi0"}, -#endif + {"csi2rx"}, {"vclk"}, {"vrst"}, - {"mipi1"}, {"sctrl"}, {"isp"}, {"trst"}, @@ -108,10 +105,10 @@ int stfcamss_get_mem_res(struct platform_device *pdev, struct stf_vin_dev *vin) if (!res) return -EINVAL; - if (!strcmp(name, "mipi0")) { - vin->mipi0_base = devm_ioremap_resource(dev, res); - if (IS_ERR(vin->mipi0_base)) - return PTR_ERR(vin->mipi0_base); + if (!strcmp(name, "csi2rx")) { + vin->csi2rx_base = devm_ioremap_resource(dev, res); + if (IS_ERR(vin->csi2rx_base)) + return PTR_ERR(vin->csi2rx_base); } else if (!strcmp(name, "vclk")) { vin->clkgen_base = ioremap(res->start, resource_size(res)); if (!vin->clkgen_base) @@ -120,10 +117,6 @@ int stfcamss_get_mem_res(struct platform_device *pdev, struct stf_vin_dev *vin) vin->rstgen_base = devm_ioremap_resource(dev, res); if (IS_ERR(vin->rstgen_base)) return PTR_ERR(vin->rstgen_base); - } else if (!strcmp(name, "mipi1")) { - vin->mipi1_base = devm_ioremap_resource(dev, res); - if (IS_ERR(vin->mipi1_base)) - return PTR_ERR(vin->mipi1_base); } else if (!strcmp(name, "sctrl")) { vin->sysctrl_base = devm_ioremap_resource(dev, res); if (IS_ERR(vin->sysctrl_base)) @@ -145,7 +138,6 @@ int stfcamss_get_mem_res(struct platform_device *pdev, struct stf_vin_dev *vin) if (!vin->sys_crg) return -ENOMEM; } else { - st_err(ST_CAMSS, "Could not match resource name\n"); } } @@ -203,9 +195,6 @@ static int stfcamss_of_parse_endpoint_node(struct device *dev, csd->port = vep.base.port; switch (csd->port) { - case CSI2RX0_PORT_NUMBER: - case CSI2RX1_PORT_NUMBER: - break; case DVP_SENSOR_PORT_NUMBER: st_debug(ST_CAMSS, "%s, flags = 0x%x\n", __func__, parallel_bus->flags); @@ -213,8 +202,7 @@ static int stfcamss_of_parse_endpoint_node(struct device *dev, dvp->bus_width = parallel_bus->bus_width; dvp->data_shift = parallel_bus->data_shift; break; - case CSI2RX0_SENSOR_PORT_NUMBER: - case CSI2RX1_SENSOR_PORT_NUMBER: + case CSI2RX_SENSOR_PORT_NUMBER: st_debug(ST_CAMSS, "%s, CSI2 flags = 0x%x\n", __func__, parallel_bus->flags); csiphy->flags = csi2_bus->flags; @@ -278,7 +266,7 @@ err_cleanup: static int stfcamss_init_subdevices(struct stfcamss *stfcamss) { - int ret, i; + int ret; ret = stf_dvp_subdev_init(stfcamss); if (ret < 0) { @@ -288,27 +276,21 @@ static int stfcamss_init_subdevices(struct stfcamss *stfcamss) return ret; } - for (i = 0; i < stfcamss->csiphy_num; i++) { - ret = stf_csiphy_subdev_init(stfcamss, i); - if (ret < 0) { - st_err(ST_CAMSS, - "Failed to init stf_csiphy sub-device: %d\n", - ret); - return ret; - } + ret = stf_csiphy_subdev_init(stfcamss); + if (ret < 0) { + st_err(ST_CAMSS, + "Failed to init stf_csiphy sub-device: %d\n", + ret); + return ret; } -#ifndef CONFIG_VIDEO_CADENCE_CSI2RX - for (i = 0; i < stfcamss->csi_num; i++) { - ret = stf_csi_subdev_init(stfcamss, i); - if (ret < 0) { - st_err(ST_CAMSS, - "Failed to init stf_csi sub-device: %d\n", - ret); - return ret; - } + ret = stf_csi_subdev_init(stfcamss); + if (ret < 0) { + st_err(ST_CAMSS, + "Failed to init stf_csi sub-device: %d\n", + ret); + return ret; } -#endif ret = stf_isp_subdev_init(stfcamss); if (ret < 0) { @@ -330,7 +312,7 @@ static int stfcamss_init_subdevices(struct stfcamss *stfcamss) static int stfcamss_register_subdevices(struct stfcamss *stfcamss) { - int ret, i, j; + int ret; struct stf_vin2_dev *vin_dev = stfcamss->vin_dev; struct stf_dvp_dev *dvp_dev = stfcamss->dvp_dev; struct stf_csiphy_dev *csiphy_dev = stfcamss->csiphy_dev; @@ -340,41 +322,32 @@ static int stfcamss_register_subdevices(struct stfcamss *stfcamss) ret = stf_dvp_register(dvp_dev, &stfcamss->v4l2_dev); if (ret < 0) { st_err(ST_CAMSS, - "Failed to register stf dvp entity: %d\n", - ret); + "Failed to register stf dvp%d entity: %d\n", + 0, ret); goto err_reg_dvp; } - for (i = 0; i < stfcamss->csiphy_num; i++) { - ret = stf_csiphy_register(&csiphy_dev[i], - &stfcamss->v4l2_dev); - if (ret < 0) { - st_err(ST_CAMSS, - "Failed to register stf csiphy%d entity: %d\n", - i, ret); - goto err_reg_csiphy; - } + ret = stf_csiphy_register(csiphy_dev, &stfcamss->v4l2_dev); + if (ret < 0) { + st_err(ST_CAMSS, + "Failed to register stf csiphy%d entity: %d\n", + 0, ret); + goto err_reg_csiphy; } -#ifndef CONFIG_VIDEO_CADENCE_CSI2RX - for (i = 0; i < stfcamss->csi_num; i++) { - ret = stf_csi_register(&csi_dev[i], - &stfcamss->v4l2_dev); - if (ret < 0) { - st_err(ST_CAMSS, - "Failed to register stf csi%d entity: %d\n", - i, ret); - goto err_reg_csi; - } + ret = stf_csi_register(csi_dev, &stfcamss->v4l2_dev); + if (ret < 0) { + st_err(ST_CAMSS, + "Failed to register stf csi%d entity: %d\n", + 0, ret); + goto err_reg_csi; } -#endif - ret = stf_isp_register(isp_dev, - &stfcamss->v4l2_dev); + ret = stf_isp_register(isp_dev, &stfcamss->v4l2_dev); if (ret < 0) { st_err(ST_CAMSS, "Failed to register stf isp%d entity: %d\n", - i, ret); + 0, ret); goto err_reg_isp; } @@ -400,40 +373,34 @@ static int stfcamss_register_subdevices(struct stfcamss *stfcamss) goto err_link; } -#ifndef CONFIG_VIDEO_CADENCE_CSI2RX - for (i = 0; i < stfcamss->csi_num; i++) { - ret = media_create_pad_link( - &csi_dev[i].subdev.entity, - STF_CSI_PAD_SRC, - &vin_dev->line[VIN_LINE_WR].subdev.entity, - STF_VIN_PAD_SINK, - 0); - if (ret < 0) { - st_err(ST_CAMSS, - "Failed to link %s->vin entities: %d\n", - csi_dev[i].subdev.entity.name, - ret); - goto err_link; - } + ret = media_create_pad_link( + &csi_dev->subdev.entity, + STF_CSI_PAD_SRC, + &vin_dev->line[VIN_LINE_WR].subdev.entity, + STF_VIN_PAD_SINK, + 0); + if (ret < 0) { + st_err(ST_CAMSS, + "Failed to link %s->vin entities: %d\n", + csi_dev->subdev.entity.name, + ret); + goto err_link; } - for (j = 0; j < stfcamss->csi_num; j++) { - ret = media_create_pad_link( - &csiphy_dev[j].subdev.entity, - STF_CSIPHY_PAD_SRC, - &csi_dev[j].subdev.entity, - STF_CSI_PAD_SINK, - MEDIA_LNK_FL_IMMUTABLE | MEDIA_LNK_FL_ENABLED); - if (ret < 0) { - st_err(ST_CAMSS, - "Failed to link %s->%s entities: %d\n", - csiphy_dev[j].subdev.entity.name, - csi_dev[j].subdev.entity.name, - ret); - goto err_link; - } + ret = media_create_pad_link( + &csiphy_dev->subdev.entity, + STF_CSIPHY_PAD_SRC, + &csi_dev->subdev.entity, + STF_CSI_PAD_SINK, + MEDIA_LNK_FL_IMMUTABLE | MEDIA_LNK_FL_ENABLED); + if (ret < 0) { + st_err(ST_CAMSS, + "Failed to link %s->%s entities: %d\n", + csiphy_dev->subdev.entity.name, + csi_dev->subdev.entity.name, + ret); + goto err_link; } -#endif ret = media_create_pad_link( &isp_dev->subdev.entity, @@ -461,7 +428,7 @@ static int stfcamss_register_subdevices(struct stfcamss *stfcamss) st_err(ST_CAMSS, "Failed to link %s->%s entities: %d\n", isp_dev->subdev.entity.name, - vin_dev->line[i + VIN_LINE_ISP_SS0] + vin_dev->line[VIN_LINE_ISP_SS0] .subdev.entity.name, ret); goto err_link; @@ -562,24 +529,20 @@ static int stfcamss_register_subdevices(struct stfcamss *stfcamss) goto err_link; } -#ifndef CONFIG_VIDEO_CADENCE_CSI2RX - for (j = 0; j < stfcamss->csi_num; j++) { - ret = media_create_pad_link( - &csi_dev[j].subdev.entity, - STF_CSI_PAD_SRC, - &isp_dev->subdev.entity, - STF_ISP_PAD_SINK, - 0); - if (ret < 0) { - st_err(ST_CAMSS, - "Failed to link %s->%s entities: %d\n", - csi_dev[j].subdev.entity.name, - isp_dev->subdev.entity.name, - ret); - goto err_link; - } + ret = media_create_pad_link( + &csi_dev->subdev.entity, + STF_CSI_PAD_SRC, + &isp_dev->subdev.entity, + STF_ISP_PAD_SINK, + 0); + if (ret < 0) { + st_err(ST_CAMSS, + "Failed to link %s->%s entities: %d\n", + csi_dev->subdev.entity.name, + isp_dev->subdev.entity.name, + ret); + goto err_link; } -#endif return ret; @@ -588,18 +551,10 @@ err_link: err_reg_vin: stf_isp_unregister(stfcamss->isp_dev); err_reg_isp: -#ifndef CONFIG_VIDEO_CADENCE_CSI2RX - i = stfcamss->csi_num; + stf_csi_unregister(stfcamss->csi_dev); err_reg_csi: - for (i--; i >= 0; i--) - stf_csi_unregister(&stfcamss->csi_dev[i]); -#endif - - i = stfcamss->csiphy_num; + stf_csiphy_unregister(stfcamss->csiphy_dev); err_reg_csiphy: - for (i--; i >= 0; i--) - stf_csiphy_unregister(&stfcamss->csiphy_dev[i]); - stf_dvp_unregister(stfcamss->dvp_dev); err_reg_dvp: return ret; @@ -607,22 +562,10 @@ err_reg_dvp: static void stfcamss_unregister_subdevices(struct stfcamss *stfcamss) { - int i; - stf_dvp_unregister(stfcamss->dvp_dev); - - i = stfcamss->csiphy_num; - for (i--; i >= 0; i--) - stf_csiphy_unregister(&stfcamss->csiphy_dev[i]); - -#ifndef CONFIG_VIDEO_CADENCE_CSI2RX - i = stfcamss->csi_num; - for (i--; i >= 0; i--) - stf_csi_unregister(&stfcamss->csi_dev[i]); -#endif - + stf_csiphy_unregister(stfcamss->csiphy_dev); + stf_csi_unregister(stfcamss->csi_dev); stf_isp_unregister(stfcamss->isp_dev); - stf_vin_unregister(stfcamss->vin_dev); } @@ -682,23 +625,13 @@ static int stfcamss_subdev_notifier_bound(struct v4l2_async_notifier *async, enum port_num port = csd->port; struct stf_dvp_dev *dvp_dev = stfcamss->dvp_dev; struct stf_csiphy_dev *csiphy_dev = stfcamss->csiphy_dev; - struct stf_isp_dev *isp_dev = stfcamss->isp_dev; - u32 id; switch (port) { - case CSI2RX0_PORT_NUMBER: - case CSI2RX1_PORT_NUMBER: - id = port - CSI2RX0_PORT_NUMBER; - subdev->host_priv = &isp_dev->subdev.entity; - break; case DVP_SENSOR_PORT_NUMBER: dvp_dev->dvp = &csd->interface.dvp; subdev->host_priv = &dvp_dev->subdev.entity; break; - case CSI2RX0_SENSOR_PORT_NUMBER: - case CSI2RX1_SENSOR_PORT_NUMBER: - id = port - CSI2RX0_SENSOR_PORT_NUMBER; - csiphy_dev = &csiphy_dev[id]; + case CSI2RX_SENSOR_PORT_NUMBER: csiphy_dev->csiphy = &csd->interface.csiphy; subdev->host_priv = &csiphy_dev->subdev.entity; break; @@ -770,8 +703,7 @@ static const struct media_device_ops stfcamss_media_ops = { enum module_id { VIN_MODULE = 0, ISP_MODULE, - CSI0_MODULE, - CSI1_MODULE, + CSI_MODULE, CSIPHY_MODULE, DVP_MODULE, CLK_MODULE, @@ -797,8 +729,7 @@ static ssize_t vin_debug_read(struct file *file, char __user *user_buf, struct stf_vin_dev *vin = stfcamss->vin; struct stf_vin2_dev *vin_dev = stfcamss->vin_dev; struct stf_isp_dev *isp_dev = stfcamss->isp_dev; - struct stf_csi_dev *csi0_dev = &stfcamss->csi_dev[0]; - struct stf_csi_dev *csi1_dev = &stfcamss->csi_dev[1]; + struct stf_csi_dev *csi0_dev = stfcamss->csi_dev; switch (id_num) { case VIN_MODULE: @@ -819,22 +750,14 @@ static ssize_t vin_debug_read(struct file *file, char __user *user_buf, } mutex_unlock(&isp_dev->stream_lock); break; - case CSI0_MODULE: + case CSI_MODULE: mutex_lock(&csi0_dev->stream_lock); if (csi0_dev->stream_count > 0) { - reg_base = vin->mipi0_base; - dump_csi_reg(reg_base, 0); + reg_base = vin->csi2rx_base; + dump_csi_reg(reg_base); } mutex_unlock(&csi0_dev->stream_lock); break; - case CSI1_MODULE: - mutex_lock(&csi1_dev->stream_lock); - if (csi1_dev->stream_count > 0) { - reg_base = vin->mipi1_base; - dump_csi_reg(reg_base, 1); - } - mutex_unlock(&csi1_dev->stream_lock); - break; case CLK_MODULE: mutex_lock(&vin_dev->power_lock); if (vin_dev->power_count > 0) { @@ -855,8 +778,7 @@ static void set_reg_val(struct stfcamss *stfcamss, int id, u32 offset, u32 val) struct stf_vin_dev *vin = stfcamss->vin; struct stf_vin2_dev *vin_dev = stfcamss->vin_dev; struct stf_isp_dev *isp_dev = stfcamss->isp_dev; - struct stf_csi_dev *csi0_dev = &stfcamss->csi_dev[0]; - struct stf_csi_dev *csi1_dev = &stfcamss->csi_dev[1]; + struct stf_csi_dev *csi_dev = stfcamss->csi_dev; void __iomem *reg_base; switch (id) { @@ -882,25 +804,15 @@ static void set_reg_val(struct stfcamss *stfcamss, int id, u32 offset, u32 val) } mutex_unlock(&isp_dev->stream_lock); break; - case CSI0_MODULE: - mutex_lock(&csi0_dev->stream_lock); - if (csi0_dev->stream_count > 0) { - reg_base = vin->mipi0_base; + case CSI_MODULE: + mutex_lock(&csi_dev->stream_lock); + if (csi_dev->stream_count > 0) { + reg_base = vin->csi2rx_base; print_reg(ST_CSI, reg_base, offset); reg_write(reg_base, offset, val); print_reg(ST_CSI, reg_base, offset); } - mutex_unlock(&csi0_dev->stream_lock); - break; - case CSI1_MODULE: - mutex_lock(&csi1_dev->stream_lock); - if (csi1_dev->stream_count > 0) { - reg_base = vin->mipi1_base; - print_reg(ST_CSI, reg_base, offset); - reg_write(reg_base, offset, val); - print_reg(ST_CSI, reg_base, offset); - } - mutex_unlock(&csi1_dev->stream_lock); + mutex_unlock(&csi_dev->stream_lock); break; case CLK_MODULE: mutex_lock(&vin_dev->power_lock); @@ -1018,13 +930,6 @@ static int stfcamss_probe(struct platform_device *pdev) if (!stfcamss) return -ENOMEM; - stfcamss->csi_num = 2; -#ifndef CONFIG_VIDEO_CADENCE_CSI2RX - stfcamss->csiphy_num = 2; -#else - stfcamss->csiphy_num = 1; -#endif - stfcamss->dvp_dev = devm_kzalloc(dev, sizeof(*stfcamss->dvp_dev), GFP_KERNEL); if (!stfcamss->dvp_dev) { @@ -1033,7 +938,7 @@ static int stfcamss_probe(struct platform_device *pdev) } stfcamss->csiphy_dev = devm_kzalloc(dev, - stfcamss->csiphy_num * sizeof(*stfcamss->csiphy_dev), + sizeof(*stfcamss->csiphy_dev), GFP_KERNEL); if (!stfcamss->csiphy_dev) { ret = -ENOMEM; @@ -1041,7 +946,7 @@ static int stfcamss_probe(struct platform_device *pdev) } stfcamss->csi_dev = devm_kzalloc(dev, - stfcamss->csi_num * sizeof(*stfcamss->csi_dev), + sizeof(*stfcamss->csi_dev), GFP_KERNEL); if (!stfcamss->csi_dev) { ret = -ENOMEM; diff --git a/drivers/media/platform/starfive/v4l2_driver/stfcamss.h b/drivers/media/platform/starfive/v4l2_driver/stfcamss.h index db68ab5..cd4fb31 100644 --- a/drivers/media/platform/starfive/v4l2_driver/stfcamss.h +++ b/drivers/media/platform/starfive/v4l2_driver/stfcamss.h @@ -33,11 +33,8 @@ enum subdev_type { #define STF_PADS_NUM 2 enum port_num { - CSI2RX0_PORT_NUMBER = 0, - CSI2RX1_PORT_NUMBER, - DVP_SENSOR_PORT_NUMBER, - CSI2RX0_SENSOR_PORT_NUMBER, - CSI2RX1_SENSOR_PORT_NUMBER + DVP_SENSOR_PORT_NUMBER = 0, + CSI2RX_SENSOR_PORT_NUMBER }; enum stf_clk_num { @@ -87,9 +84,7 @@ struct stfcamss { struct device *dev; struct stf_vin2_dev *vin_dev; // subdev struct stf_dvp_dev *dvp_dev; // subdev - int csi_num; struct stf_csi_dev *csi_dev; // subdev - int csiphy_num; struct stf_csiphy_dev *csiphy_dev; // subdev struct stf_isp_dev *isp_dev; // subdev struct v4l2_async_notifier notifier; diff --git a/include/video/stf-vin.h b/include/video/stf-vin.h index 9d967f2..ee1a716 100755 --- a/include/video/stf-vin.h +++ b/include/video/stf-vin.h @@ -410,17 +410,16 @@ struct stf_vin_dev { struct device *dev; struct cdev vin_cdev; void __iomem *base; - void __iomem *mipi0_base; + void __iomem *csi2rx_base; void __iomem *clkgen_base; void __iomem *rstgen_base; - void __iomem *mipi1_base; void __iomem *sysctrl_base; void __iomem *isp_base; void __iomem *vin_top_clkgen_base; void __iomem *vin_top_rstgen_base; void __iomem *vin_top_iopad_base; void __iomem *pmu_test; - void __iomem * sys_crg; + void __iomem *sys_crg; struct vin_framesize frame; struct vin_format format; bool isp;