msm_drm_pp.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624
  1. /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
  2. /*
  3. * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
  4. */
  5. #ifndef _MSM_DRM_PP_H_
  6. #define _MSM_DRM_PP_H_
  7. #include <linux/types.h>
  8. /**
  9. * struct drm_msm_pcc_coeff - PCC coefficient structure for each color
  10. * component.
  11. * @c: constant coefficient.
  12. * @r: red coefficient.
  13. * @g: green coefficient.
  14. * @b: blue coefficient.
  15. * @rg: red green coefficient.
  16. * @gb: green blue coefficient.
  17. * @rb: red blue coefficient.
  18. * @rgb: red blue green coefficient.
  19. */
  20. struct drm_msm_pcc_coeff {
  21. __u32 c;
  22. __u32 r;
  23. __u32 g;
  24. __u32 b;
  25. __u32 rg;
  26. __u32 gb;
  27. __u32 rb;
  28. __u32 rgb;
  29. };
  30. /**
  31. * struct drm_msm_pcc - pcc feature structure
  32. * @flags: for customizing operations
  33. * @r: red coefficients.
  34. * @g: green coefficients.
  35. * @b: blue coefficients.
  36. * @r_rr: second order coefficients
  37. * @r_gg: second order coefficients
  38. * @r_bb: second order coefficients
  39. * @g_rr: second order coefficients
  40. * @g_gg: second order coefficients
  41. * @g_bb: second order coefficients
  42. * @b_rr: second order coefficients
  43. * @b_gg: second order coefficients
  44. * @b_bb: second order coefficients
  45. */
  46. #define DRM_MSM_PCC3
  47. struct drm_msm_pcc {
  48. __u64 flags;
  49. struct drm_msm_pcc_coeff r;
  50. struct drm_msm_pcc_coeff g;
  51. struct drm_msm_pcc_coeff b;
  52. __u32 r_rr;
  53. __u32 r_gg;
  54. __u32 r_bb;
  55. __u32 g_rr;
  56. __u32 g_gg;
  57. __u32 g_bb;
  58. __u32 b_rr;
  59. __u32 b_gg;
  60. __u32 b_bb;
  61. };
  62. /* struct drm_msm_pa_vlut - picture adjustment vLUT structure
  63. * flags: for customizing vlut operation
  64. * val: vLUT values
  65. */
  66. #define PA_VLUT_SIZE 256
  67. struct drm_msm_pa_vlut {
  68. __u64 flags;
  69. __u32 val[PA_VLUT_SIZE];
  70. };
  71. #define PA_HSIC_HUE_ENABLE (1 << 0)
  72. #define PA_HSIC_SAT_ENABLE (1 << 1)
  73. #define PA_HSIC_VAL_ENABLE (1 << 2)
  74. #define PA_HSIC_CONT_ENABLE (1 << 3)
  75. /**
  76. * struct drm_msm_pa_hsic - pa hsic feature structure
  77. * @flags: flags for the feature customization, values can be:
  78. * - PA_HSIC_HUE_ENABLE: Enable hue adjustment
  79. * - PA_HSIC_SAT_ENABLE: Enable saturation adjustment
  80. * - PA_HSIC_VAL_ENABLE: Enable value adjustment
  81. * - PA_HSIC_CONT_ENABLE: Enable contrast adjustment
  82. *
  83. * @hue: hue setting
  84. * @saturation: saturation setting
  85. * @value: value setting
  86. * @contrast: contrast setting
  87. */
  88. #define DRM_MSM_PA_HSIC
  89. struct drm_msm_pa_hsic {
  90. __u64 flags;
  91. __u32 hue;
  92. __u32 saturation;
  93. __u32 value;
  94. __u32 contrast;
  95. };
  96. #define MEMCOL_PROT_HUE (1 << 0)
  97. #define MEMCOL_PROT_SAT (1 << 1)
  98. #define MEMCOL_PROT_VAL (1 << 2)
  99. #define MEMCOL_PROT_CONT (1 << 3)
  100. #define MEMCOL_PROT_SIXZONE (1 << 4)
  101. #define MEMCOL_PROT_BLEND (1 << 5)
  102. /* struct drm_msm_memcol - Memory color feature structure.
  103. * Skin, sky, foliage features are supported.
  104. * @prot_flags: Bit mask for enabling protection feature.
  105. * @color_adjust_p0: Adjustment curve.
  106. * @color_adjust_p1: Adjustment curve.
  107. * @color_adjust_p2: Adjustment curve.
  108. * @blend_gain: Blend gain weightage from othe PA features.
  109. * @sat_hold: Saturation hold value.
  110. * @val_hold: Value hold info.
  111. * @hue_region: Hue qualifier.
  112. * @sat_region: Saturation qualifier.
  113. * @val_region: Value qualifier.
  114. */
  115. #define DRM_MSM_MEMCOL
  116. struct drm_msm_memcol {
  117. __u64 prot_flags;
  118. __u32 color_adjust_p0;
  119. __u32 color_adjust_p1;
  120. __u32 color_adjust_p2;
  121. __u32 blend_gain;
  122. __u32 sat_hold;
  123. __u32 val_hold;
  124. __u32 hue_region;
  125. __u32 sat_region;
  126. __u32 val_region;
  127. };
  128. #define DRM_MSM_SIXZONE
  129. #define SIXZONE_LUT_SIZE 384
  130. #define SIXZONE_HUE_ENABLE (1 << 0)
  131. #define SIXZONE_SAT_ENABLE (1 << 1)
  132. #define SIXZONE_VAL_ENABLE (1 << 2)
  133. /* struct drm_msm_sixzone_curve - Sixzone HSV adjustment curve structure.
  134. * @p0: Hue adjustment.
  135. * @p1: Saturation/Value adjustment.
  136. */
  137. struct drm_msm_sixzone_curve {
  138. __u32 p1;
  139. __u32 p0;
  140. };
  141. /* struct drm_msm_sixzone - Sixzone feature structure.
  142. * @flags: for feature customization, values can be:
  143. * - SIXZONE_HUE_ENABLE: Enable hue adjustment
  144. * - SIXZONE_SAT_ENABLE: Enable saturation adjustment
  145. * - SIXZONE_VAL_ENABLE: Enable value adjustment
  146. * @threshold: threshold qualifier.
  147. * @adjust_p0: Adjustment curve.
  148. * @adjust_p1: Adjustment curve.
  149. * @sat_hold: Saturation hold info.
  150. * @val_hold: Value hold info.
  151. * @curve: HSV adjustment curve lut.
  152. */
  153. struct drm_msm_sixzone {
  154. __u64 flags;
  155. __u32 threshold;
  156. __u32 adjust_p0;
  157. __u32 adjust_p1;
  158. __u32 sat_hold;
  159. __u32 val_hold;
  160. struct drm_msm_sixzone_curve curve[SIXZONE_LUT_SIZE];
  161. };
  162. #define GAMUT_3D_MODE_17 1
  163. #define GAMUT_3D_MODE_5 2
  164. #define GAMUT_3D_MODE_13 3
  165. #define GAMUT_3D_MODE17_TBL_SZ 1229
  166. #define GAMUT_3D_MODE5_TBL_SZ 32
  167. #define GAMUT_3D_MODE13_TBL_SZ 550
  168. #define GAMUT_3D_SCALE_OFF_SZ 16
  169. #define GAMUT_3D_SCALEB_OFF_SZ 12
  170. #define GAMUT_3D_TBL_NUM 4
  171. #define GAMUT_3D_SCALE_OFF_TBL_NUM 3
  172. #define GAMUT_3D_MAP_EN (1 << 0)
  173. /**
  174. * struct drm_msm_3d_col - 3d gamut color component structure
  175. * @c0: Holds c0 value
  176. * @c2_c1: Holds c2/c1 values
  177. */
  178. struct drm_msm_3d_col {
  179. __u32 c2_c1;
  180. __u32 c0;
  181. };
  182. /**
  183. * struct drm_msm_3d_gamut - 3d gamut feature structure
  184. * @flags: flags for the feature values are:
  185. * 0 - no map
  186. * GAMUT_3D_MAP_EN - enable map
  187. * @mode: lut mode can take following values:
  188. * - GAMUT_3D_MODE_17
  189. * - GAMUT_3D_MODE_5
  190. * - GAMUT_3D_MODE_13
  191. * @scale_off: Scale offset table
  192. * @col: Color component tables
  193. */
  194. struct drm_msm_3d_gamut {
  195. __u64 flags;
  196. __u32 mode;
  197. __u32 scale_off[GAMUT_3D_SCALE_OFF_TBL_NUM][GAMUT_3D_SCALE_OFF_SZ];
  198. struct drm_msm_3d_col col[GAMUT_3D_TBL_NUM][GAMUT_3D_MODE17_TBL_SZ];
  199. };
  200. #define PGC_TBL_LEN 512
  201. #define PGC_8B_ROUND (1 << 0)
  202. /**
  203. * struct drm_msm_pgc_lut - pgc lut feature structure
  204. * @flags: flags for the featue values can be:
  205. * - PGC_8B_ROUND
  206. * @c0: color0 component lut
  207. * @c1: color1 component lut
  208. * @c2: color2 component lut
  209. */
  210. struct drm_msm_pgc_lut {
  211. __u64 flags;
  212. __u32 c0[PGC_TBL_LEN];
  213. __u32 c1[PGC_TBL_LEN];
  214. __u32 c2[PGC_TBL_LEN];
  215. };
  216. #define IGC_TBL_LEN 256
  217. #define IGC_DITHER_ENABLE (1 << 0)
  218. /**
  219. * struct drm_msm_igc_lut - igc lut feature structure
  220. * @flags: flags for the feature customization, values can be:
  221. * - IGC_DITHER_ENABLE: Enable dither functionality
  222. * @c0: color0 component lut
  223. * @c1: color1 component lut
  224. * @c2: color2 component lut
  225. * @strength: dither strength, considered valid when IGC_DITHER_ENABLE
  226. * is set in flags. Strength value based on source bit width.
  227. * @c0_last: color0 lut_last component
  228. * @c1_last: color1 lut_last component
  229. * @c2_last: color2 lut_last component
  230. */
  231. struct drm_msm_igc_lut {
  232. __u64 flags;
  233. __u32 c0[IGC_TBL_LEN];
  234. __u32 c1[IGC_TBL_LEN];
  235. __u32 c2[IGC_TBL_LEN];
  236. __u32 strength;
  237. __u32 c0_last;
  238. __u32 c1_last;
  239. __u32 c2_last;
  240. };
  241. #define LAST_LUT 2
  242. #define HIST_V_SIZE 256
  243. /**
  244. * struct drm_msm_hist - histogram feature structure
  245. * @flags: for customizing operations
  246. * @data: histogram data
  247. */
  248. struct drm_msm_hist {
  249. __u64 flags;
  250. __u32 data[HIST_V_SIZE];
  251. };
  252. #define AD4_LUT_GRP0_SIZE 33
  253. #define AD4_LUT_GRP1_SIZE 32
  254. /*
  255. * struct drm_msm_ad4_init - ad4 init structure set by user-space client.
  256. * Init param values can change based on tuning
  257. * hence it is passed by user-space clients.
  258. */
  259. struct drm_msm_ad4_init {
  260. __u32 init_param_001[AD4_LUT_GRP0_SIZE];
  261. __u32 init_param_002[AD4_LUT_GRP0_SIZE];
  262. __u32 init_param_003[AD4_LUT_GRP0_SIZE];
  263. __u32 init_param_004[AD4_LUT_GRP0_SIZE];
  264. __u32 init_param_005[AD4_LUT_GRP1_SIZE];
  265. __u32 init_param_006[AD4_LUT_GRP1_SIZE];
  266. __u32 init_param_007[AD4_LUT_GRP0_SIZE];
  267. __u32 init_param_008[AD4_LUT_GRP0_SIZE];
  268. __u32 init_param_009;
  269. __u32 init_param_010;
  270. __u32 init_param_011;
  271. __u32 init_param_012;
  272. __u32 init_param_013;
  273. __u32 init_param_014;
  274. __u32 init_param_015;
  275. __u32 init_param_016;
  276. __u32 init_param_017;
  277. __u32 init_param_018;
  278. __u32 init_param_019;
  279. __u32 init_param_020;
  280. __u32 init_param_021;
  281. __u32 init_param_022;
  282. __u32 init_param_023;
  283. __u32 init_param_024;
  284. __u32 init_param_025;
  285. __u32 init_param_026;
  286. __u32 init_param_027;
  287. __u32 init_param_028;
  288. __u32 init_param_029;
  289. __u32 init_param_030;
  290. __u32 init_param_031;
  291. __u32 init_param_032;
  292. __u32 init_param_033;
  293. __u32 init_param_034;
  294. __u32 init_param_035;
  295. __u32 init_param_036;
  296. __u32 init_param_037;
  297. __u32 init_param_038;
  298. __u32 init_param_039;
  299. __u32 init_param_040;
  300. __u32 init_param_041;
  301. __u32 init_param_042;
  302. __u32 init_param_043;
  303. __u32 init_param_044;
  304. __u32 init_param_045;
  305. __u32 init_param_046;
  306. __u32 init_param_047;
  307. __u32 init_param_048;
  308. __u32 init_param_049;
  309. __u32 init_param_050;
  310. __u32 init_param_051;
  311. __u32 init_param_052;
  312. __u32 init_param_053;
  313. __u32 init_param_054;
  314. __u32 init_param_055;
  315. __u32 init_param_056;
  316. __u32 init_param_057;
  317. __u32 init_param_058;
  318. __u32 init_param_059;
  319. __u32 init_param_060;
  320. __u32 init_param_061;
  321. __u32 init_param_062;
  322. __u32 init_param_063;
  323. __u32 init_param_064;
  324. __u32 init_param_065;
  325. __u32 init_param_066;
  326. __u32 init_param_067;
  327. __u32 init_param_068;
  328. __u32 init_param_069;
  329. __u32 init_param_070;
  330. __u32 init_param_071;
  331. __u32 init_param_072;
  332. __u32 init_param_073;
  333. __u32 init_param_074;
  334. __u32 init_param_075;
  335. };
  336. /*
  337. * struct drm_msm_ad4_cfg - ad4 config structure set by user-space client.
  338. * Config param values can vary based on tuning,
  339. * hence it is passed by user-space clients.
  340. */
  341. struct drm_msm_ad4_cfg {
  342. __u32 cfg_param_001;
  343. __u32 cfg_param_002;
  344. __u32 cfg_param_003;
  345. __u32 cfg_param_004;
  346. __u32 cfg_param_005;
  347. __u32 cfg_param_006;
  348. __u32 cfg_param_007;
  349. __u32 cfg_param_008;
  350. __u32 cfg_param_009;
  351. __u32 cfg_param_010;
  352. __u32 cfg_param_011;
  353. __u32 cfg_param_012;
  354. __u32 cfg_param_013;
  355. __u32 cfg_param_014;
  356. __u32 cfg_param_015;
  357. __u32 cfg_param_016;
  358. __u32 cfg_param_017;
  359. __u32 cfg_param_018;
  360. __u32 cfg_param_019;
  361. __u32 cfg_param_020;
  362. __u32 cfg_param_021;
  363. __u32 cfg_param_022;
  364. __u32 cfg_param_023;
  365. __u32 cfg_param_024;
  366. __u32 cfg_param_025;
  367. __u32 cfg_param_026;
  368. __u32 cfg_param_027;
  369. __u32 cfg_param_028;
  370. __u32 cfg_param_029;
  371. __u32 cfg_param_030;
  372. __u32 cfg_param_031;
  373. __u32 cfg_param_032;
  374. __u32 cfg_param_033;
  375. __u32 cfg_param_034;
  376. __u32 cfg_param_035;
  377. __u32 cfg_param_036;
  378. __u32 cfg_param_037;
  379. __u32 cfg_param_038;
  380. __u32 cfg_param_039;
  381. __u32 cfg_param_040;
  382. __u32 cfg_param_041;
  383. __u32 cfg_param_042;
  384. __u32 cfg_param_043;
  385. __u32 cfg_param_044;
  386. __u32 cfg_param_045;
  387. __u32 cfg_param_046;
  388. __u32 cfg_param_047;
  389. __u32 cfg_param_048;
  390. __u32 cfg_param_049;
  391. __u32 cfg_param_050;
  392. __u32 cfg_param_051;
  393. __u32 cfg_param_052;
  394. __u32 cfg_param_053;
  395. };
  396. #define DITHER_MATRIX_SZ 16
  397. #define DITHER_LUMA_MODE (1 << 0)
  398. /**
  399. * struct drm_msm_dither - dither feature structure
  400. * @flags: flags for the feature customization, values can be:
  401. -DITHER_LUMA_MODE: Enable LUMA dither mode
  402. * @temporal_en: temperal dither enable
  403. * @c0_bitdepth: c0 component bit depth
  404. * @c1_bitdepth: c1 component bit depth
  405. * @c2_bitdepth: c2 component bit depth
  406. * @c3_bitdepth: c2 component bit depth
  407. * @matrix: dither strength matrix
  408. */
  409. struct drm_msm_dither {
  410. __u64 flags;
  411. __u32 temporal_en;
  412. __u32 c0_bitdepth;
  413. __u32 c1_bitdepth;
  414. __u32 c2_bitdepth;
  415. __u32 c3_bitdepth;
  416. __u32 matrix[DITHER_MATRIX_SZ];
  417. };
  418. /**
  419. * struct drm_msm_pa_dither - dspp dither feature structure
  420. * @flags: for customizing operations
  421. * @strength: dither strength
  422. * @offset_en: offset enable bit
  423. * @matrix: dither data matrix
  424. */
  425. #define DRM_MSM_PA_DITHER
  426. struct drm_msm_pa_dither {
  427. __u64 flags;
  428. __u32 strength;
  429. __u32 offset_en;
  430. __u32 matrix[DITHER_MATRIX_SZ];
  431. };
  432. /**
  433. * struct drm_msm_ad4_roi_cfg - ad4 roi params config set
  434. * by user-space client.
  435. * @h_x - hotizontal direction start
  436. * @h_y - hotizontal direction end
  437. * @v_x - vertical direction start
  438. * @v_y - vertical direction end
  439. * @factor_in - the alpha value for inside roi region
  440. * @factor_out - the alpha value for outside roi region
  441. */
  442. #define DRM_MSM_AD4_ROI
  443. struct drm_msm_ad4_roi_cfg {
  444. __u32 h_x;
  445. __u32 h_y;
  446. __u32 v_x;
  447. __u32 v_y;
  448. __u32 factor_in;
  449. __u32 factor_out;
  450. };
  451. #define LTM_FEATURE_DEF 1
  452. #define LTM_DATA_SIZE_0 32
  453. #define LTM_DATA_SIZE_1 128
  454. #define LTM_DATA_SIZE_2 256
  455. #define LTM_DATA_SIZE_3 33
  456. #define LTM_BUFFER_SIZE 5
  457. #define LTM_GUARD_BYTES 255
  458. #define LTM_BLOCK_SIZE 2
  459. #define LTM_STATS_SAT (1 << 1)
  460. #define LTM_STATS_MERGE_SAT (1 << 2)
  461. /*
  462. * struct drm_msm_ltm_stats_data - LTM stats data structure
  463. */
  464. struct drm_msm_ltm_stats_data {
  465. __u32 stats_01[LTM_DATA_SIZE_0][LTM_DATA_SIZE_1];
  466. __u32 stats_02[LTM_DATA_SIZE_2];
  467. __u32 stats_03[LTM_DATA_SIZE_0];
  468. __u32 stats_04[LTM_DATA_SIZE_0];
  469. __u32 stats_05[LTM_DATA_SIZE_0];
  470. __u32 status_flag;
  471. __u32 display_h;
  472. __u32 display_v;
  473. __u32 init_h[LTM_BLOCK_SIZE];
  474. __u32 init_v;
  475. __u32 inc_h;
  476. __u32 inc_v;
  477. __u32 portrait_en;
  478. __u32 merge_en;
  479. __u32 cfg_param_01;
  480. __u32 cfg_param_02;
  481. __u32 cfg_param_03;
  482. __u32 cfg_param_04;
  483. };
  484. /*
  485. * struct drm_msm_ltm_init_param - LTM init param structure
  486. */
  487. struct drm_msm_ltm_init_param {
  488. __u32 init_param_01;
  489. __u32 init_param_02;
  490. __u32 init_param_03;
  491. __u32 init_param_04;
  492. };
  493. /*
  494. * struct drm_msm_ltm_cfg_param - LTM config param structure
  495. */
  496. struct drm_msm_ltm_cfg_param {
  497. __u32 cfg_param_01;
  498. __u32 cfg_param_02;
  499. __u32 cfg_param_03;
  500. __u32 cfg_param_04;
  501. __u32 cfg_param_05;
  502. __u32 cfg_param_06;
  503. };
  504. /*
  505. * struct drm_msm_ltm_data - LTM data structure
  506. */
  507. struct drm_msm_ltm_data {
  508. __u32 data[LTM_DATA_SIZE_0][LTM_DATA_SIZE_3];
  509. };
  510. /*
  511. * struct drm_msm_ltm_buffers_crtl - LTM buffer control structure.
  512. * This struct will be used to init and
  513. * de-init the LTM buffers in driver.
  514. * @num_of_buffers: valid number of buffers used
  515. * @fds: fd array to for all the valid buffers
  516. */
  517. struct drm_msm_ltm_buffers_ctrl {
  518. __u32 num_of_buffers;
  519. __u32 fds[LTM_BUFFER_SIZE];
  520. };
  521. /*
  522. * struct drm_msm_ltm_buffer - LTM buffer structure.
  523. * This struct will be passed from driver to user
  524. * space for LTM stats data notification.
  525. * @fd: fd assicated with the buffer that has LTM stats data
  526. * @offset: offset from base address that used for alignment
  527. * @status status flag for error indication
  528. */
  529. struct drm_msm_ltm_buffer {
  530. __u32 fd;
  531. __u32 offset;
  532. __u32 status;
  533. };
  534. #define SPR_INIT_PARAM_SIZE_1 4
  535. #define SPR_INIT_PARAM_SIZE_2 5
  536. #define SPR_INIT_PARAM_SIZE_3 16
  537. #define SPR_INIT_PARAM_SIZE_4 24
  538. #define SPR_INIT_PARAM_SIZE_5 32
  539. /**
  540. * struct drm_msm_spr_init_cfg - SPR initial configuration structure
  541. *
  542. */
  543. struct drm_msm_spr_init_cfg {
  544. __u64 flags;
  545. __u16 cfg0;
  546. __u16 cfg1;
  547. __u16 cfg2;
  548. __u16 cfg3;
  549. __u16 cfg4;
  550. __u16 cfg5;
  551. __u16 cfg6;
  552. __u16 cfg7;
  553. __u16 cfg8;
  554. __u16 cfg9;
  555. __u32 cfg10;
  556. __u16 cfg11[SPR_INIT_PARAM_SIZE_1];
  557. __u16 cfg12[SPR_INIT_PARAM_SIZE_1];
  558. __u16 cfg13[SPR_INIT_PARAM_SIZE_1];
  559. __u16 cfg14[SPR_INIT_PARAM_SIZE_2];
  560. __u16 cfg15[SPR_INIT_PARAM_SIZE_5];
  561. int cfg16[SPR_INIT_PARAM_SIZE_3];
  562. int cfg17[SPR_INIT_PARAM_SIZE_4];
  563. };
  564. /**
  565. * struct drm_msm_ad4_manual_str_cfg - ad4 manual strength config set
  566. * by user-space client.
  567. * @in_str - strength for inside roi region
  568. * @out_str - strength for outside roi region
  569. */
  570. #define DRM_MSM_AD4_MANUAL_STRENGTH
  571. struct drm_msm_ad4_manual_str_cfg {
  572. __u32 in_str;
  573. __u32 out_str;
  574. };
  575. #define RC_DATA_SIZE_MAX 2720
  576. #define RC_CFG_SIZE_MAX 4
  577. struct drm_msm_rc_mask_cfg {
  578. __u64 flags;
  579. __u32 cfg_param_01;
  580. __u32 cfg_param_02;
  581. __u32 cfg_param_03;
  582. __u32 cfg_param_04[RC_CFG_SIZE_MAX];
  583. __u32 cfg_param_05[RC_CFG_SIZE_MAX];
  584. __u32 cfg_param_06[RC_CFG_SIZE_MAX];
  585. __u64 cfg_param_07;
  586. __u32 cfg_param_08;
  587. __u64 cfg_param_09[RC_DATA_SIZE_MAX];
  588. };
  589. #endif /* _MSM_DRM_PP_H_ */