xref: /rockchip-linux_mpp/mpp/base/mpp_sys_cfg_st.c (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
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