if (IS_ERR(res->fd[i]))
return PTR_ERR(res->fd[i]);
}
+ for (i = 0; i < ARRAY_SIZE(res->fe); i++) {
+ res->fe[i] = dpu_fe_get(dpu, i);
+ if (IS_ERR(res->fe[i]))
+ return PTR_ERR(res->fe[i]);
+ grp->hw_plane_fetcheco_num = ARRAY_SIZE(res->fe);
+ }
/* HScaler could be shared with capture. */
if (display_plane_video_proc) {
for (i = 0; i < ARRAY_SIZE(res->hs); i++) {
if (!IS_ERR_OR_NULL(res->fd[i]))
dpu_fd_put(res->fd[i]);
}
+ for (i = 0; i < ARRAY_SIZE(res->fe); i++) {
+ if (!IS_ERR_OR_NULL(res->fe[i]))
+ dpu_fe_put(res->fe[i]);
+ }
for (i = 0; i < ARRAY_SIZE(res->hs); i++) {
if (!IS_ERR_OR_NULL(res->hs[i]))
dpu_hs_put(res->hs[i]);
struct dpu_constframe *cf[2];
struct dpu_extdst *ed[2];
struct dpu_fetchdecode *fd[MAX_FD_NUM];
+ struct dpu_fetcheco *fe[2];
struct dpu_framegen *fg;
struct dpu_hscaler *hs[2];
struct dpu_layerblend *lb[MAX_LB_NUM];
struct list_head list;
struct mutex lock;
unsigned int hw_plane_num;
+ unsigned int hw_plane_fetcheco_num;
unsigned int hw_plane_hscaler_num;
unsigned int hw_plane_vscaler_num;
unsigned int id;