hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/video/rockchip/rga3/rga_policy.c
....@@ -15,7 +15,7 @@
1515 #define GET_GCD(n1, n2) \
1616 ({ \
1717 int i; \
18
- int gcd = 0; \
18
+ int gcd = 1; \
1919 for (i = 1; i <= (n1) && i <= (n2); i++) { \
2020 if ((n1) % i == 0 && (n2) % i == 0) \
2121 gcd = i; \
....@@ -108,32 +108,34 @@
108108 int rd_mode, int format, int win_num)
109109 {
110110 int i;
111
- bool matched = false;
111
+ const uint32_t *formats;
112
+ uint32_t format_count;
112113
113
- if (rd_mode == RGA_RASTER_MODE) {
114
- for (i = 0; i < data->win[win_num].num_of_raster_formats; i++) {
115
- if (format == data->win[win_num].raster_formats[i]) {
116
- matched = true;
117
- break;
118
- }
119
- }
120
- } else if (rd_mode == RGA_FBC_MODE) {
121
- for (i = 0; i < data->win[win_num].num_of_fbc_formats; i++) {
122
- if (format == data->win[win_num].fbc_formats[i]) {
123
- matched = true;
124
- break;
125
- }
126
- }
127
- } else if (rd_mode == RGA_TILE_MODE) {
128
- for (i = 0; i < data->win[win_num].num_of_tile_formats; i++) {
129
- if (format == data->win[win_num].tile_formats[i]) {
130
- matched = true;
131
- break;
132
- }
133
- }
114
+ switch (rd_mode) {
115
+ case RGA_RASTER_MODE:
116
+ formats = data->win[win_num].formats[RGA_RASTER_INDEX];
117
+ format_count = data->win[win_num].formats_count[RGA_RASTER_INDEX];
118
+ break;
119
+ case RGA_FBC_MODE:
120
+ formats = data->win[win_num].formats[RGA_AFBC16x16_INDEX];
121
+ format_count = data->win[win_num].formats_count[RGA_AFBC16x16_INDEX];
122
+ break;
123
+ case RGA_TILE_MODE:
124
+ formats = data->win[win_num].formats[RGA_TILE8x8_INDEX];
125
+ format_count = data->win[win_num].formats_count[RGA_TILE8x8_INDEX];
126
+ break;
127
+ default:
128
+ return false;
134129 }
135130
136
- return matched;
131
+ if (formats == NULL || format_count == 0)
132
+ return false;
133
+
134
+ for (i = 0; i < format_count; i++)
135
+ if (format == formats[i])
136
+ return true;
137
+
138
+ return false;
137139 }
138140
139141 static bool rga_check_align(uint32_t byte_stride_align, uint32_t format, uint16_t w_stride)