Message ID | 20250212093530.52961-5-andyshrk@163.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | VOP Support for rk3576 | expand |
Am Mittwoch, 12. Februar 2025, 10:34:59 MEZ schrieb Andy Yan: > From: Andy Yan <andy.yan@rock-chips.com> > > Now these two function share the same logic, the can > be merged as one. > > Signed-off-by: Andy Yan <andy.yan@rock-chips.com> > --- > > (no changes since v1) > > drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 42 +++++--------------- > 1 file changed, 11 insertions(+), 31 deletions(-) > > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c > index a0d961cb5d21..844df4001159 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c > @@ -2424,18 +2424,18 @@ static int vop2_find_rgb_encoder(struct vop2 *vop2) > return -ENOENT; > } > > -static int vop2_cluster_init(struct vop2_win *win) > +static int vop2_regmap_init(struct vop2_win *win, const struct reg_field *regs, > + int nr_regs) > { > struct vop2 *vop2 = win->vop2; > int i; > > - for (i = 0; i < vop2->data->nr_cluster_regs; i++) { > + for (i = 0; i < nr_regs; i++) { > const struct reg_field field = { > - .reg = (vop2->data->cluster_reg[i].reg != 0xffffffff) ? > - vop2->data->cluster_reg[i].reg + win->offset : > - vop2->data->cluster_reg[i].reg, > - .lsb = vop2->data->cluster_reg[i].lsb, > - .msb = vop2->data->cluster_reg[i].msb > + .reg = (regs[i].reg != 0xffffffff) ? > + regs[i].reg + win->offset : regs[i].reg, > + .lsb = regs[i].lsb, > + .msb = regs[i].msb > }; > > win->reg[i] = devm_regmap_field_alloc(vop2->dev, vop2->map, field); > @@ -2446,28 +2446,6 @@ static int vop2_cluster_init(struct vop2_win *win) > return 0; > }; > > -static int vop2_esmart_init(struct vop2_win *win) > -{ > - struct vop2 *vop2 = win->vop2; > - int i; > - > - for (i = 0; i < vop2->data->nr_smart_regs; i++) { > - const struct reg_field field = { > - .reg = (vop2->data->smart_reg[i].reg != 0xffffffff) ? > - vop2->data->smart_reg[i].reg + win->offset : > - vop2->data->smart_reg[i].reg, > - .lsb = vop2->data->smart_reg[i].lsb, > - .msb = vop2->data->smart_reg[i].msb > - }; > - > - win->reg[i] = devm_regmap_field_alloc(vop2->dev, vop2->map, field); > - if (IS_ERR(win->reg[i])) > - return PTR_ERR(win->reg[i]); > - } > - > - return 0; > -} > - > static int vop2_win_init(struct vop2 *vop2) > { > const struct vop2_data *vop2_data = vop2->data; > @@ -2484,9 +2462,11 @@ static int vop2_win_init(struct vop2 *vop2) > win->win_id = i; > win->vop2 = vop2; > if (vop2_cluster_window(win)) > - ret = vop2_cluster_init(win); > + ret = vop2_regmap_init(win, vop2->data->cluster_reg, > + vop2->data->nr_cluster_regs); > else > - ret = vop2_esmart_init(win); > + ret = vop2_regmap_init(win, vop2->data->smart_reg, > + vop2->data->nr_cluster_regs); ^^ nr_smart_regs I think
Hi Heiko, At 2025-02-15 06:24:17, "Heiko Stübner" <heiko@sntech.de> wrote: >Am Mittwoch, 12. Februar 2025, 10:34:59 MEZ schrieb Andy Yan: >> From: Andy Yan <andy.yan@rock-chips.com> >> >> Now these two function share the same logic, the can >> be merged as one. >> >> Signed-off-by: Andy Yan <andy.yan@rock-chips.com> >> --- >> >> (no changes since v1) >> >> drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 42 +++++--------------- >> 1 file changed, 11 insertions(+), 31 deletions(-) >> >> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c >> index a0d961cb5d21..844df4001159 100644 >> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c >> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c >> @@ -2424,18 +2424,18 @@ static int vop2_find_rgb_encoder(struct vop2 *vop2) >> return -ENOENT; >> } >> >> -static int vop2_cluster_init(struct vop2_win *win) >> +static int vop2_regmap_init(struct vop2_win *win, const struct reg_field *regs, >> + int nr_regs) >> { >> struct vop2 *vop2 = win->vop2; >> int i; >> >> - for (i = 0; i < vop2->data->nr_cluster_regs; i++) { >> + for (i = 0; i < nr_regs; i++) { >> const struct reg_field field = { >> - .reg = (vop2->data->cluster_reg[i].reg != 0xffffffff) ? >> - vop2->data->cluster_reg[i].reg + win->offset : >> - vop2->data->cluster_reg[i].reg, >> - .lsb = vop2->data->cluster_reg[i].lsb, >> - .msb = vop2->data->cluster_reg[i].msb >> + .reg = (regs[i].reg != 0xffffffff) ? >> + regs[i].reg + win->offset : regs[i].reg, >> + .lsb = regs[i].lsb, >> + .msb = regs[i].msb >> }; >> >> win->reg[i] = devm_regmap_field_alloc(vop2->dev, vop2->map, field); >> @@ -2446,28 +2446,6 @@ static int vop2_cluster_init(struct vop2_win *win) >> return 0; >> }; >> >> -static int vop2_esmart_init(struct vop2_win *win) >> -{ >> - struct vop2 *vop2 = win->vop2; >> - int i; >> - >> - for (i = 0; i < vop2->data->nr_smart_regs; i++) { >> - const struct reg_field field = { >> - .reg = (vop2->data->smart_reg[i].reg != 0xffffffff) ? >> - vop2->data->smart_reg[i].reg + win->offset : >> - vop2->data->smart_reg[i].reg, >> - .lsb = vop2->data->smart_reg[i].lsb, >> - .msb = vop2->data->smart_reg[i].msb >> - }; >> - >> - win->reg[i] = devm_regmap_field_alloc(vop2->dev, vop2->map, field); >> - if (IS_ERR(win->reg[i])) >> - return PTR_ERR(win->reg[i]); >> - } >> - >> - return 0; >> -} >> - >> static int vop2_win_init(struct vop2 *vop2) >> { >> const struct vop2_data *vop2_data = vop2->data; >> @@ -2484,9 +2462,11 @@ static int vop2_win_init(struct vop2 *vop2) >> win->win_id = i; >> win->vop2 = vop2; >> if (vop2_cluster_window(win)) >> - ret = vop2_cluster_init(win); >> + ret = vop2_regmap_init(win, vop2->data->cluster_reg, >> + vop2->data->nr_cluster_regs); >> else >> - ret = vop2_esmart_init(win); >> + ret = vop2_regmap_init(win, vop2->data->smart_reg, >> + vop2->data->nr_cluster_regs); > > ^^ nr_smart_regs >I think Yes, thanks for catching it, will be fixed in V15. > > > >
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c index a0d961cb5d21..844df4001159 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -2424,18 +2424,18 @@ static int vop2_find_rgb_encoder(struct vop2 *vop2) return -ENOENT; } -static int vop2_cluster_init(struct vop2_win *win) +static int vop2_regmap_init(struct vop2_win *win, const struct reg_field *regs, + int nr_regs) { struct vop2 *vop2 = win->vop2; int i; - for (i = 0; i < vop2->data->nr_cluster_regs; i++) { + for (i = 0; i < nr_regs; i++) { const struct reg_field field = { - .reg = (vop2->data->cluster_reg[i].reg != 0xffffffff) ? - vop2->data->cluster_reg[i].reg + win->offset : - vop2->data->cluster_reg[i].reg, - .lsb = vop2->data->cluster_reg[i].lsb, - .msb = vop2->data->cluster_reg[i].msb + .reg = (regs[i].reg != 0xffffffff) ? + regs[i].reg + win->offset : regs[i].reg, + .lsb = regs[i].lsb, + .msb = regs[i].msb }; win->reg[i] = devm_regmap_field_alloc(vop2->dev, vop2->map, field); @@ -2446,28 +2446,6 @@ static int vop2_cluster_init(struct vop2_win *win) return 0; }; -static int vop2_esmart_init(struct vop2_win *win) -{ - struct vop2 *vop2 = win->vop2; - int i; - - for (i = 0; i < vop2->data->nr_smart_regs; i++) { - const struct reg_field field = { - .reg = (vop2->data->smart_reg[i].reg != 0xffffffff) ? - vop2->data->smart_reg[i].reg + win->offset : - vop2->data->smart_reg[i].reg, - .lsb = vop2->data->smart_reg[i].lsb, - .msb = vop2->data->smart_reg[i].msb - }; - - win->reg[i] = devm_regmap_field_alloc(vop2->dev, vop2->map, field); - if (IS_ERR(win->reg[i])) - return PTR_ERR(win->reg[i]); - } - - return 0; -} - static int vop2_win_init(struct vop2 *vop2) { const struct vop2_data *vop2_data = vop2->data; @@ -2484,9 +2462,11 @@ static int vop2_win_init(struct vop2 *vop2) win->win_id = i; win->vop2 = vop2; if (vop2_cluster_window(win)) - ret = vop2_cluster_init(win); + ret = vop2_regmap_init(win, vop2->data->cluster_reg, + vop2->data->nr_cluster_regs); else - ret = vop2_esmart_init(win); + ret = vop2_regmap_init(win, vop2->data->smart_reg, + vop2->data->nr_cluster_regs); if (ret) return ret; }