1*437bfbebSnyanmisaka /* SPDX-License-Identifier: Apache-2.0 OR MIT */
2*437bfbebSnyanmisaka /*
3*437bfbebSnyanmisaka * Copyright (c) 2024 Rockchip Electronics Co., Ltd.
4*437bfbebSnyanmisaka */
5*437bfbebSnyanmisaka
6*437bfbebSnyanmisaka #define MODULE_TAG "mpp_sys_cfg_st"
7*437bfbebSnyanmisaka
8*437bfbebSnyanmisaka #include "mpp_log.h"
9*437bfbebSnyanmisaka #include "mpp_mem.h"
10*437bfbebSnyanmisaka #include "mpp_time.h"
11*437bfbebSnyanmisaka #include "mpp_common.h"
12*437bfbebSnyanmisaka
13*437bfbebSnyanmisaka #include "rk_mpp_cfg.h"
14*437bfbebSnyanmisaka #include "mpp_sys_cfg.h"
15*437bfbebSnyanmisaka #include "mpp_sys_cfg_st.h"
16*437bfbebSnyanmisaka
mpp_sys_cfg_st_get_h_stride(MppSysCfgStHStrd * h_stride_cfg)17*437bfbebSnyanmisaka MPP_RET mpp_sys_cfg_st_get_h_stride(MppSysCfgStHStrd *h_stride_cfg)
18*437bfbebSnyanmisaka {
19*437bfbebSnyanmisaka MPP_RET ret = MPP_OK;
20*437bfbebSnyanmisaka MppSysCfg cfg;
21*437bfbebSnyanmisaka
22*437bfbebSnyanmisaka ret = mpp_sys_cfg_get(&cfg);
23*437bfbebSnyanmisaka if (ret) {
24*437bfbebSnyanmisaka mpp_err("mpp_sys_cfg_get failed\n");
25*437bfbebSnyanmisaka goto DONE;
26*437bfbebSnyanmisaka }
27*437bfbebSnyanmisaka
28*437bfbebSnyanmisaka /* set correct parameter */
29*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:enable", 1);
30*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:type", h_stride_cfg->type);
31*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:fmt_fbc", h_stride_cfg->fmt_fbc);
32*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:width", h_stride_cfg->width);
33*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:h_stride_by_byte", h_stride_cfg->h_stride_by_byte);
34*437bfbebSnyanmisaka
35*437bfbebSnyanmisaka /* get result */
36*437bfbebSnyanmisaka mpp_sys_cfg_ioctl(cfg);
37*437bfbebSnyanmisaka
38*437bfbebSnyanmisaka ret = mpp_sys_cfg_get_u32(cfg, "dec_buf_chk:h_stride_by_pixel",
39*437bfbebSnyanmisaka &h_stride_cfg->h_stride_by_pixel);
40*437bfbebSnyanmisaka
41*437bfbebSnyanmisaka ret = mpp_sys_cfg_put(cfg);
42*437bfbebSnyanmisaka if (ret) {
43*437bfbebSnyanmisaka mpp_err("mpp_sys_cfg_put failed\n");
44*437bfbebSnyanmisaka goto DONE;
45*437bfbebSnyanmisaka }
46*437bfbebSnyanmisaka
47*437bfbebSnyanmisaka DONE:
48*437bfbebSnyanmisaka mpp_err_f("sys cfg get paras %s\n", ret ? "failed" : "success");
49*437bfbebSnyanmisaka return ret;
50*437bfbebSnyanmisaka }
51*437bfbebSnyanmisaka
mpp_sys_cfg_st_get_byte_stride(MppSysCfgStHByteStrd * byte_stride_cfg)52*437bfbebSnyanmisaka MPP_RET mpp_sys_cfg_st_get_byte_stride(MppSysCfgStHByteStrd *byte_stride_cfg)
53*437bfbebSnyanmisaka {
54*437bfbebSnyanmisaka MPP_RET ret = MPP_OK;
55*437bfbebSnyanmisaka MppSysCfg cfg;
56*437bfbebSnyanmisaka
57*437bfbebSnyanmisaka ret = mpp_sys_cfg_get(&cfg);
58*437bfbebSnyanmisaka if (ret) {
59*437bfbebSnyanmisaka mpp_err("mpp_sys_cfg_get failed\n");
60*437bfbebSnyanmisaka goto DONE;
61*437bfbebSnyanmisaka }
62*437bfbebSnyanmisaka
63*437bfbebSnyanmisaka /* set correct parameter */
64*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:enable", 1);
65*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:type", byte_stride_cfg->type);
66*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:fmt_codec", byte_stride_cfg->fmt_codec);
67*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:fmt_fbc", byte_stride_cfg->fmt_fbc);
68*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:width", byte_stride_cfg->width);
69*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:h_stride_by_byte", byte_stride_cfg->h_stride_by_byte);
70*437bfbebSnyanmisaka
71*437bfbebSnyanmisaka /* get result */
72*437bfbebSnyanmisaka mpp_sys_cfg_ioctl(cfg);
73*437bfbebSnyanmisaka
74*437bfbebSnyanmisaka ret = mpp_sys_cfg_get_u32(cfg, "dec_buf_chk:h_stride_by_byte",
75*437bfbebSnyanmisaka &byte_stride_cfg->h_stride_by_byte);
76*437bfbebSnyanmisaka
77*437bfbebSnyanmisaka ret = mpp_sys_cfg_put(cfg);
78*437bfbebSnyanmisaka if (ret) {
79*437bfbebSnyanmisaka mpp_err("mpp_sys_cfg_put failed\n");
80*437bfbebSnyanmisaka goto DONE;
81*437bfbebSnyanmisaka }
82*437bfbebSnyanmisaka
83*437bfbebSnyanmisaka DONE:
84*437bfbebSnyanmisaka mpp_err_f("sys cfg get paras %s\n", ret ? "failed" : "success");
85*437bfbebSnyanmisaka return ret;
86*437bfbebSnyanmisaka }
87*437bfbebSnyanmisaka
mpp_sys_cfg_st_get_v_stride(MppSysCfgStVStrd * v_stride_cfg)88*437bfbebSnyanmisaka MPP_RET mpp_sys_cfg_st_get_v_stride(MppSysCfgStVStrd *v_stride_cfg)
89*437bfbebSnyanmisaka {
90*437bfbebSnyanmisaka MPP_RET ret = MPP_OK;
91*437bfbebSnyanmisaka MppSysCfg cfg;
92*437bfbebSnyanmisaka
93*437bfbebSnyanmisaka ret = mpp_sys_cfg_get(&cfg);
94*437bfbebSnyanmisaka if (ret) {
95*437bfbebSnyanmisaka mpp_err("mpp_sys_cfg_get failed\n");
96*437bfbebSnyanmisaka goto DONE;
97*437bfbebSnyanmisaka }
98*437bfbebSnyanmisaka
99*437bfbebSnyanmisaka /* set correct parameter */
100*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:enable", 1);
101*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:type", v_stride_cfg->type);
102*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:fmt_fbc", v_stride_cfg->fmt_fbc);
103*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:height", v_stride_cfg->height);
104*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:v_stride", v_stride_cfg->v_stride);
105*437bfbebSnyanmisaka
106*437bfbebSnyanmisaka /* get result */
107*437bfbebSnyanmisaka mpp_sys_cfg_ioctl(cfg);
108*437bfbebSnyanmisaka
109*437bfbebSnyanmisaka ret = mpp_sys_cfg_get_u32(cfg, "dec_buf_chk:v_stride", &v_stride_cfg->v_stride);
110*437bfbebSnyanmisaka
111*437bfbebSnyanmisaka ret = mpp_sys_cfg_put(cfg);
112*437bfbebSnyanmisaka if (ret) {
113*437bfbebSnyanmisaka mpp_err("mpp_sys_cfg_put failed\n");
114*437bfbebSnyanmisaka goto DONE;
115*437bfbebSnyanmisaka }
116*437bfbebSnyanmisaka
117*437bfbebSnyanmisaka DONE:
118*437bfbebSnyanmisaka mpp_err_f("sys cfg get paras %s\n", ret ? "failed" : "success");
119*437bfbebSnyanmisaka return ret;
120*437bfbebSnyanmisaka }
121*437bfbebSnyanmisaka
mpp_sys_cfg_st_get_size(MppSysCfgStSize * size_cfg)122*437bfbebSnyanmisaka MPP_RET mpp_sys_cfg_st_get_size(MppSysCfgStSize *size_cfg)
123*437bfbebSnyanmisaka {
124*437bfbebSnyanmisaka MPP_RET ret = MPP_OK;
125*437bfbebSnyanmisaka MppSysCfg cfg;
126*437bfbebSnyanmisaka
127*437bfbebSnyanmisaka ret = mpp_sys_cfg_get(&cfg);
128*437bfbebSnyanmisaka if (ret) {
129*437bfbebSnyanmisaka mpp_err("mpp_sys_cfg_get failed\n");
130*437bfbebSnyanmisaka goto DONE;
131*437bfbebSnyanmisaka }
132*437bfbebSnyanmisaka
133*437bfbebSnyanmisaka /* set correct parameter */
134*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:enable", 1);
135*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:type", size_cfg->type);
136*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:fmt_codec", size_cfg->fmt_codec);
137*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:fmt_fbc", size_cfg->fmt_fbc);
138*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:width", size_cfg->width);
139*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:height", size_cfg->height);
140*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:h_stride_by_byte", size_cfg->h_stride_by_byte);
141*437bfbebSnyanmisaka ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:v_stride", size_cfg->v_stride);
142*437bfbebSnyanmisaka
143*437bfbebSnyanmisaka /* get result */
144*437bfbebSnyanmisaka mpp_sys_cfg_ioctl(cfg);
145*437bfbebSnyanmisaka
146*437bfbebSnyanmisaka ret = mpp_sys_cfg_get_u32(cfg, "dec_buf_chk:h_stride_by_byte", &size_cfg->h_stride_by_byte);
147*437bfbebSnyanmisaka ret = mpp_sys_cfg_get_u32(cfg, "dec_buf_chk:h_stride_by_pixel", &size_cfg->h_stride_by_pixel);
148*437bfbebSnyanmisaka ret = mpp_sys_cfg_get_u32(cfg, "dec_buf_chk:v_stride", &size_cfg->v_stride);
149*437bfbebSnyanmisaka ret = mpp_sys_cfg_get_u32(cfg, "dec_buf_chk:size_total", &size_cfg->size_total);
150*437bfbebSnyanmisaka ret = mpp_sys_cfg_get_u32(cfg, "dec_buf_chk:size_fbc_hdr", &size_cfg->size_fbc_hdr);
151*437bfbebSnyanmisaka ret = mpp_sys_cfg_get_u32(cfg, "dec_buf_chk:size_fbc_bdy", &size_cfg->size_fbc_bdy);
152*437bfbebSnyanmisaka
153*437bfbebSnyanmisaka ret = mpp_sys_cfg_put(cfg);
154*437bfbebSnyanmisaka if (ret) {
155*437bfbebSnyanmisaka mpp_err("mpp_sys_cfg_put failed\n");
156*437bfbebSnyanmisaka goto DONE;
157*437bfbebSnyanmisaka }
158*437bfbebSnyanmisaka
159*437bfbebSnyanmisaka DONE:
160*437bfbebSnyanmisaka mpp_err_f("sys cfg get paras %s\n", ret ? "failed" : "success");
161*437bfbebSnyanmisaka return ret;
162*437bfbebSnyanmisaka }
163