waipio.c 46 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /*
  3. * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  4. */
  5. #include <linux/of.h>
  6. #include <dt-bindings/clock/qcom,gcc-sm8450.h>
  7. #include <dt-bindings/clock/qcom,videocc-sm8450.h>
  8. #include "msm_vidc_control.h"
  9. #include "msm_vidc_platform.h"
  10. #include "msm_vidc_waipio.h"
  11. #include "msm_vidc_debug.h"
  12. #include "hfi_property.h"
  13. #include "hfi_command.h"
  14. #define DEFAULT_VIDEO_CONCEAL_COLOR_BLACK 0x8020010
  15. #define MAX_LTR_FRAME_COUNT 2
  16. #define MAX_BASE_LAYER_PRIORITY_ID 63
  17. #define MAX_OP_POINT 31
  18. #define MAX_BITRATE 220000000
  19. #define DEFAULT_BITRATE 20000000
  20. #define MINIMUM_FPS 1
  21. #define MAXIMUM_FPS 480
  22. #define MAXIMUM_DEC_FPS 960
  23. #define MAX_QP 51
  24. #define DEFAULT_QP 20
  25. #define MAX_CONSTANT_QUALITY 100
  26. #define MIN_SLICE_BYTE_SIZE 512
  27. #define MAX_SLICE_BYTE_SIZE \
  28. ((MAX_BITRATE) >> 3)
  29. #define MAX_SLICE_MB_SIZE \
  30. (((4096 + 15) >> 4) * ((2304 + 15) >> 4))
  31. #define ENC MSM_VIDC_ENCODER
  32. #define DEC MSM_VIDC_DECODER
  33. #define H264 MSM_VIDC_H264
  34. #define HEVC MSM_VIDC_HEVC
  35. #define VP9 MSM_VIDC_VP9
  36. #define CODECS_ALL (H264 | HEVC | VP9)
  37. #define MAXIMUM_OVERRIDE_VP9_FPS 200
  38. #ifndef V4L2_PIX_FMT_QC08C
  39. #define V4L2_PIX_FMT_QC08C v4l2_fourcc('Q', '0', '8', 'C')
  40. #endif
  41. #ifndef V4L2_PIX_FMT_QC10C
  42. #define V4L2_PIX_FMT_QC10C v4l2_fourcc('Q', '1', '0', 'C')
  43. #endif
  44. static struct codec_info codec_data_waipio[] = {
  45. {
  46. .v4l2_codec = V4L2_PIX_FMT_H264,
  47. .vidc_codec = MSM_VIDC_H264,
  48. .pixfmt_name = "AVC",
  49. },
  50. {
  51. .v4l2_codec = V4L2_PIX_FMT_HEVC,
  52. .vidc_codec = MSM_VIDC_HEVC,
  53. .pixfmt_name = "HEVC",
  54. },
  55. {
  56. .v4l2_codec = V4L2_PIX_FMT_VP9,
  57. .vidc_codec = MSM_VIDC_VP9,
  58. .pixfmt_name = "VP9",
  59. },
  60. };
  61. static struct color_format_info color_format_data_waipio[] = {
  62. {
  63. .v4l2_color_format = V4L2_PIX_FMT_NV12,
  64. .vidc_color_format = MSM_VIDC_FMT_NV12,
  65. .pixfmt_name = "NV12",
  66. },
  67. {
  68. .v4l2_color_format = V4L2_PIX_FMT_NV21,
  69. .vidc_color_format = MSM_VIDC_FMT_NV21,
  70. .pixfmt_name = "NV21",
  71. },
  72. {
  73. .v4l2_color_format = V4L2_PIX_FMT_QC08C,
  74. .vidc_color_format = MSM_VIDC_FMT_NV12C,
  75. .pixfmt_name = "NV12C",
  76. },
  77. {
  78. .v4l2_color_format = V4L2_PIX_FMT_QC10C,
  79. .vidc_color_format = MSM_VIDC_FMT_TP10C,
  80. .pixfmt_name = "TP10C",
  81. },
  82. {
  83. .v4l2_color_format = V4L2_PIX_FMT_RGBA32,
  84. .vidc_color_format = MSM_VIDC_FMT_RGBA8888,
  85. .pixfmt_name = "RGBA",
  86. },
  87. };
  88. static struct color_primaries_info color_primaries_data_waipio[] = {
  89. {
  90. .v4l2_color_primaries = V4L2_COLORSPACE_DEFAULT,
  91. .vidc_color_primaries = MSM_VIDC_PRIMARIES_RESERVED,
  92. },
  93. {
  94. .v4l2_color_primaries = V4L2_COLORSPACE_REC709,
  95. .vidc_color_primaries = MSM_VIDC_PRIMARIES_BT709,
  96. },
  97. {
  98. .v4l2_color_primaries = V4L2_COLORSPACE_470_SYSTEM_M,
  99. .vidc_color_primaries = MSM_VIDC_PRIMARIES_BT470_SYSTEM_M,
  100. },
  101. {
  102. .v4l2_color_primaries = V4L2_COLORSPACE_470_SYSTEM_BG,
  103. .vidc_color_primaries = MSM_VIDC_PRIMARIES_BT470_SYSTEM_BG,
  104. },
  105. {
  106. .v4l2_color_primaries = V4L2_COLORSPACE_SMPTE170M,
  107. .vidc_color_primaries = MSM_VIDC_PRIMARIES_BT601_525,
  108. },
  109. {
  110. .v4l2_color_primaries = V4L2_COLORSPACE_SMPTE240M,
  111. .vidc_color_primaries = MSM_VIDC_PRIMARIES_SMPTE_ST240M,
  112. },
  113. {
  114. .v4l2_color_primaries = V4L2_COLORSPACE_BT2020,
  115. .vidc_color_primaries = MSM_VIDC_PRIMARIES_BT2020,
  116. },
  117. {
  118. .v4l2_color_primaries = V4L2_COLORSPACE_DCI_P3,
  119. .vidc_color_primaries = MSM_VIDC_PRIMARIES_SMPTE_RP431_2,
  120. },
  121. };
  122. static struct transfer_char_info transfer_char_data_waipio[] = {
  123. {
  124. .v4l2_transfer_char = V4L2_XFER_FUNC_DEFAULT,
  125. .vidc_transfer_char = MSM_VIDC_TRANSFER_RESERVED,
  126. },
  127. {
  128. .v4l2_transfer_char = V4L2_XFER_FUNC_709,
  129. .vidc_transfer_char = MSM_VIDC_TRANSFER_BT709,
  130. },
  131. {
  132. .v4l2_transfer_char = V4L2_XFER_FUNC_SMPTE240M,
  133. .vidc_transfer_char = MSM_VIDC_TRANSFER_SMPTE_ST240M,
  134. },
  135. {
  136. .v4l2_transfer_char = V4L2_XFER_FUNC_SRGB,
  137. .vidc_transfer_char = MSM_VIDC_TRANSFER_SRGB_SYCC,
  138. },
  139. {
  140. .v4l2_transfer_char = V4L2_XFER_FUNC_SMPTE2084,
  141. .vidc_transfer_char = MSM_VIDC_TRANSFER_SMPTE_ST2084_PQ,
  142. },
  143. };
  144. static struct matrix_coeff_info matrix_coeff_data_waipio[] = {
  145. {
  146. .v4l2_matrix_coeff = V4L2_YCBCR_ENC_DEFAULT,
  147. .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_RESERVED,
  148. },
  149. {
  150. .v4l2_matrix_coeff = V4L2_YCBCR_ENC_709,
  151. .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_BT709,
  152. },
  153. {
  154. .v4l2_matrix_coeff = V4L2_YCBCR_ENC_XV709,
  155. .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_BT709,
  156. },
  157. {
  158. .v4l2_matrix_coeff = V4L2_YCBCR_ENC_XV601,
  159. .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_BT470_SYS_BG_OR_BT601_625,
  160. },
  161. {
  162. .v4l2_matrix_coeff = V4L2_YCBCR_ENC_601,
  163. .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_BT601_525_BT1358_525_OR_625,
  164. },
  165. {
  166. .v4l2_matrix_coeff = V4L2_YCBCR_ENC_SMPTE240M,
  167. .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_SMPTE_ST240,
  168. },
  169. {
  170. .v4l2_matrix_coeff = V4L2_YCBCR_ENC_BT2020,
  171. .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_BT2020_NON_CONSTANT,
  172. },
  173. {
  174. .v4l2_matrix_coeff = V4L2_YCBCR_ENC_BT2020_CONST_LUM,
  175. .vidc_matrix_coeff = MSM_VIDC_MATRIX_COEFF_BT2020_CONSTANT,
  176. },
  177. };
  178. static struct msm_platform_core_capability core_data_waipio[] = {
  179. /* {type, value} */
  180. {ENC_CODECS, H264|HEVC},
  181. {DEC_CODECS, H264|HEVC|VP9},
  182. {MAX_SESSION_COUNT, 16},
  183. {MAX_NUM_720P_SESSIONS, 16},
  184. {MAX_NUM_1080P_SESSIONS, 16},
  185. {MAX_NUM_4K_SESSIONS, 8},
  186. {MAX_NUM_8K_SESSIONS, 2},
  187. {MAX_RT_MBPF, 174080}, /* (8192x4352)/256 + (4096x2176)/256*/
  188. {MAX_MBPF, 278528}, /* ((8192x4352)/256) * 2 */
  189. {MAX_MBPS, 7833600}, /* max_load
  190. * 7680x4320@60fps or 3840x2176@240fps
  191. * which is greater than 4096x2176@120fps,
  192. * 8192x4320@48fps
  193. */
  194. {MAX_MBPF_HQ, 8160}, /* ((1920x1088)/256) */
  195. {MAX_MBPS_HQ, 489600}, /* ((1920x1088)/256)@60fps */
  196. {MAX_MBPF_B_FRAME, 32640}, /* 3840x2176/256 */
  197. {MAX_MBPS_B_FRAME, 1958400}, /* 3840x2176/256 MBs@60fps */
  198. {MAX_MBPS_ALL_INTRA, 1044480}, /* 4096x2176/256 MBs@30fps */
  199. {MAX_ENH_LAYER_COUNT, 5},
  200. {NUM_VPP_PIPE, 4},
  201. {SW_PC, 1},
  202. {FW_UNLOAD, 0},
  203. {HW_RESPONSE_TIMEOUT, HW_RESPONSE_TIMEOUT_VALUE}, /* 1000 ms */
  204. {SW_PC_DELAY, SW_PC_DELAY_VALUE }, /* 1500 ms (>HW_RESPONSE_TIMEOUT)*/
  205. {FW_UNLOAD_DELAY, FW_UNLOAD_DELAY_VALUE }, /* 3000 ms (>SW_PC_DELAY)*/
  206. {DCVS, 1},
  207. {DECODE_BATCH, 1},
  208. {DECODE_BATCH_TIMEOUT, 200},
  209. {STATS_TIMEOUT_MS, 2000},
  210. {NON_FATAL_FAULTS, 1},
  211. {ENC_AUTO_FRAMERATE, 1},
  212. {DEVICE_CAPS, V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING},
  213. {SUPPORTS_SYNX_FENCE, 0},
  214. {SUPPORTS_REQUESTS, 0},
  215. };
  216. static struct msm_platform_inst_capability instance_cap_data_waipio[] = {
  217. /* {cap, domain, codec,
  218. * min, max, step_or_mask, value,
  219. * v4l2_id,
  220. * hfi_id,
  221. * flags}
  222. */
  223. {FRAME_WIDTH, DEC, CODECS_ALL, 96, 8192, 1, 1920},
  224. {FRAME_WIDTH, DEC, VP9, 96, 4096, 1, 1920},
  225. {FRAME_WIDTH, ENC, CODECS_ALL, 128, 8192, 1, 1920},
  226. {FRAME_WIDTH, ENC, HEVC, 96, 8192, 1, 1920},
  227. {LOSSLESS_FRAME_WIDTH, ENC, CODECS_ALL, 128, 4096, 1, 1920},
  228. {LOSSLESS_FRAME_WIDTH, ENC, HEVC, 96, 4096, 1, 1920},
  229. {FRAME_HEIGHT, DEC, CODECS_ALL, 96, 8192, 1, 1080},
  230. {FRAME_HEIGHT, DEC, VP9, 96, 4096, 1, 1080},
  231. {FRAME_HEIGHT, ENC, CODECS_ALL, 128, 8192, 1, 1080},
  232. {FRAME_HEIGHT, ENC, HEVC, 96, 8192, 1, 1080},
  233. {LOSSLESS_FRAME_HEIGHT, ENC, CODECS_ALL, 128, 4096, 1, 1080},
  234. {LOSSLESS_FRAME_HEIGHT, ENC, HEVC, 96, 4096, 1, 1080},
  235. {PIX_FMTS, ENC|DEC, H264,
  236. MSM_VIDC_FMT_NV12,
  237. MSM_VIDC_FMT_NV12C,
  238. MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C,
  239. MSM_VIDC_FMT_NV12C},
  240. {PIX_FMTS, ENC|DEC, HEVC|VP9,
  241. MSM_VIDC_FMT_NV12,
  242. MSM_VIDC_FMT_TP10C,
  243. MSM_VIDC_FMT_NV12 | MSM_VIDC_FMT_NV21 | MSM_VIDC_FMT_NV12C |
  244. MSM_VIDC_FMT_TP10C,
  245. MSM_VIDC_FMT_NV12C},
  246. {MIN_BUFFERS_INPUT, ENC|DEC, CODECS_ALL, 0, 64, 1, 4,
  247. V4L2_CID_MIN_BUFFERS_FOR_OUTPUT,
  248. 0,
  249. CAP_FLAG_VOLATILE},
  250. {MIN_BUFFERS_OUTPUT, ENC|DEC, CODECS_ALL,
  251. 0, 64, 1, 4,
  252. V4L2_CID_MIN_BUFFERS_FOR_CAPTURE,
  253. HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT,
  254. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_VOLATILE},
  255. /* (8192 * 4320) / 256 */
  256. {MBPF, ENC, CODECS_ALL, 64, 138240, 1, 138240},
  257. {MBPF, ENC, HEVC, 36, 138240, 1, 138240},
  258. {MBPF, DEC, CODECS_ALL, 36, 138240, 1, 138240},
  259. /* (4096 * 2304) / 256 */
  260. {MBPF, DEC, VP9, 36, 36864, 1, 36864},
  261. /* (4096 * 2304) / 256 */
  262. {LOSSLESS_MBPF, ENC, H264|HEVC, 64, 36864, 1, 36864},
  263. /* Batch Mode Decode */
  264. /* TODO: update with new values based on updated voltage corner */
  265. {BATCH_MBPF, DEC, H264|HEVC|VP9, 64, 34816, 1, 34816},
  266. /* (4096 * 2304) / 256 */
  267. {BATCH_FPS, DEC, H264|HEVC|VP9, 1, 120, 1, 120},
  268. {FRAME_RATE, ENC|DEC, CODECS_ALL,
  269. (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16),
  270. 1, (DEFAULT_FPS << 16),
  271. 0,
  272. HFI_PROP_FRAME_RATE,
  273. CAP_FLAG_OUTPUT_PORT},
  274. {OPERATING_RATE, ENC|DEC, CODECS_ALL,
  275. (MINIMUM_FPS << 16), (MAXIMUM_FPS << 16),
  276. 1, (DEFAULT_FPS << 16)},
  277. {INPUT_RATE, ENC|DEC, CODECS_ALL,
  278. (MINIMUM_FPS << 16), INT_MAX,
  279. 1, (DEFAULT_FPS << 16)},
  280. {TIMESTAMP_RATE, ENC|DEC, CODECS_ALL,
  281. (MINIMUM_FPS << 16), INT_MAX,
  282. 1, (DEFAULT_FPS << 16)},
  283. {SCALE_FACTOR, ENC, H264|HEVC, 1, 8, 1, 8},
  284. {MB_CYCLES_VSP, ENC, CODECS_ALL, 25, 25, 1, 25},
  285. {MB_CYCLES_VSP, DEC, CODECS_ALL, 25, 25, 1, 25},
  286. {MB_CYCLES_VSP, DEC, VP9, 60, 60, 1, 60},
  287. {MB_CYCLES_VPP, ENC, CODECS_ALL, 675, 675, 1, 675},
  288. {MB_CYCLES_VPP, DEC, CODECS_ALL, 200, 200, 1, 200},
  289. {MB_CYCLES_LP, ENC, CODECS_ALL, 320, 320, 1, 320},
  290. {MB_CYCLES_LP, DEC, CODECS_ALL, 200, 200, 1, 200},
  291. {MB_CYCLES_FW, ENC|DEC, CODECS_ALL, 326389, 326389, 1, 326389},
  292. {MB_CYCLES_FW_VPP, ENC|DEC, CODECS_ALL, 44156, 44156, 1, 44156},
  293. {MB_CYCLES_FW_VPP, DEC, CODECS_ALL, 66234, 66234, 1, 66234},
  294. {CLIENT_ID, ENC|DEC, CODECS_ALL,
  295. INVALID_CLIENT_ID, INT_MAX, 1, INVALID_CLIENT_ID,
  296. 0},
  297. {HFLIP, ENC, CODECS_ALL,
  298. 0, 1, 1, 0,
  299. V4L2_CID_HFLIP,
  300. HFI_PROP_FLIP,
  301. CAP_FLAG_OUTPUT_PORT |
  302. CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED},
  303. {VFLIP, ENC, CODECS_ALL,
  304. 0, 1, 1, 0,
  305. V4L2_CID_VFLIP,
  306. HFI_PROP_FLIP,
  307. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  308. CAP_FLAG_DYNAMIC_ALLOWED},
  309. {ROTATION, ENC, CODECS_ALL,
  310. 0, 270, 90, 0,
  311. V4L2_CID_ROTATE,
  312. HFI_PROP_ROTATION,
  313. CAP_FLAG_OUTPUT_PORT},
  314. {SUPER_FRAME, ENC, H264|HEVC,
  315. 0, 32, 1, 0,
  316. 0, 0,
  317. CAP_FLAG_NONE},
  318. {HEADER_MODE, ENC, CODECS_ALL,
  319. V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE,
  320. V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME,
  321. BIT(V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE) |
  322. BIT(V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME),
  323. V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE,
  324. V4L2_CID_MPEG_VIDEO_HEADER_MODE,
  325. HFI_PROP_SEQ_HEADER_MODE,
  326. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  327. {PREPEND_SPSPPS_TO_IDR, ENC, CODECS_ALL,
  328. 0, 1, 1, 0,
  329. V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR},
  330. {WITHOUT_STARTCODE, ENC, CODECS_ALL,
  331. 0, 1, 1, 0,
  332. V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE,
  333. HFI_PROP_NAL_LENGTH_FIELD,
  334. CAP_FLAG_OUTPUT_PORT},
  335. {NAL_LENGTH_FIELD, ENC, CODECS_ALL,
  336. V4L2_MPEG_VIDEO_HEVC_SIZE_0,
  337. V4L2_MPEG_VIDEO_HEVC_SIZE_4,
  338. BIT(V4L2_MPEG_VIDEO_HEVC_SIZE_0) |
  339. BIT(V4L2_MPEG_VIDEO_HEVC_SIZE_4),
  340. V4L2_MPEG_VIDEO_HEVC_SIZE_0,
  341. V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD,
  342. HFI_PROP_NAL_LENGTH_FIELD,
  343. CAP_FLAG_MENU | CAP_FLAG_OUTPUT_PORT},
  344. /* TODO: Firmware introduced enumeration type for this
  345. * with and without seq header.
  346. */
  347. {REQUEST_I_FRAME, ENC, H264|HEVC,
  348. 0, 0, 0, 0,
  349. V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME,
  350. HFI_PROP_REQUEST_SYNC_FRAME,
  351. CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED},
  352. /* Enc: Keeping CABAC and CAVLC as same bitrate.
  353. * Dec: there's no use of Bitrate cap
  354. */
  355. {BIT_RATE, ENC, H264|HEVC,
  356. 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
  357. V4L2_CID_MPEG_VIDEO_BITRATE,
  358. HFI_PROP_TOTAL_BITRATE,
  359. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  360. CAP_FLAG_DYNAMIC_ALLOWED},
  361. {BITRATE_MODE, ENC, H264,
  362. V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
  363. V4L2_MPEG_VIDEO_BITRATE_MODE_CBR,
  364. BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) |
  365. BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CBR),
  366. V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
  367. V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
  368. HFI_PROP_RATE_CONTROL,
  369. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  370. {BITRATE_MODE, ENC, HEVC,
  371. V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
  372. V4L2_MPEG_VIDEO_BITRATE_MODE_CQ,
  373. BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) |
  374. BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CBR) |
  375. BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CQ),
  376. V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
  377. V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
  378. HFI_PROP_RATE_CONTROL,
  379. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  380. {CABAC_MAX_BITRATE, ENC, H264|HEVC, 0,
  381. 160000000, 1, 160000000},
  382. {CAVLC_MAX_BITRATE, ENC, H264, 0,
  383. 220000000, 1, 220000000},
  384. {ALLINTRA_MAX_BITRATE, ENC, H264|HEVC, 0,
  385. 245000000, 1, 245000000},
  386. {LOWLATENCY_MAX_BITRATE, ENC, H264|HEVC, 0,
  387. 70000000, 1, 70000000},
  388. {NUM_COMV, DEC, CODECS_ALL,
  389. 0, INT_MAX, 1, 0},
  390. {LOSSLESS, ENC, HEVC,
  391. 0, 1, 1, 0,
  392. V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU},
  393. {FRAME_SKIP_MODE, ENC, H264|HEVC,
  394. V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED,
  395. V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT,
  396. BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED) |
  397. BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT) |
  398. BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT),
  399. V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED,
  400. V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE,
  401. 0,
  402. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  403. {FRAME_RC_ENABLE, ENC, H264|HEVC,
  404. 0, 1, 1, 1,
  405. V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE},
  406. {CONSTANT_QUALITY, ENC, HEVC,
  407. 1, MAX_CONSTANT_QUALITY, 1, 90,
  408. V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY,
  409. HFI_PROP_CONSTANT_QUALITY,
  410. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  411. CAP_FLAG_DYNAMIC_ALLOWED},
  412. {GOP_SIZE, ENC, CODECS_ALL,
  413. 0, INT_MAX, 1, 2 * DEFAULT_FPS - 1,
  414. V4L2_CID_MPEG_VIDEO_GOP_SIZE,
  415. HFI_PROP_MAX_GOP_FRAMES,
  416. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  417. CAP_FLAG_DYNAMIC_ALLOWED},
  418. {GOP_CLOSURE, ENC, H264|HEVC,
  419. 0, 1, 1, 1,
  420. V4L2_CID_MPEG_VIDEO_GOP_CLOSURE,
  421. 0},
  422. {B_FRAME, ENC, H264|HEVC,
  423. 0, 7, 1, 0,
  424. V4L2_CID_MPEG_VIDEO_B_FRAMES,
  425. HFI_PROP_MAX_B_FRAMES,
  426. CAP_FLAG_OUTPUT_PORT},
  427. {BLUR_TYPES, ENC, H264|HEVC,
  428. MSM_VIDC_BLUR_NONE, MSM_VIDC_BLUR_EXTERNAL,
  429. BIT(MSM_VIDC_BLUR_NONE) | BIT(MSM_VIDC_BLUR_EXTERNAL),
  430. MSM_VIDC_BLUR_NONE,
  431. 0,
  432. HFI_PROP_BLUR_TYPES,
  433. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  434. {CSC, ENC, CODECS_ALL,
  435. 0, 1, 1, 0,
  436. 0,
  437. HFI_PROP_CSC},
  438. {LOWLATENCY_MODE, ENC, H264|HEVC,
  439. 0, 1, 1, 0,
  440. 0,
  441. 0,
  442. CAP_FLAG_NONE},
  443. {LOWLATENCY_MODE, DEC, H264|HEVC|VP9,
  444. 0, 1, 1, 0,
  445. 0,
  446. HFI_PROP_SEQ_CHANGE_AT_SYNC_FRAME,
  447. CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED},
  448. {LTR_COUNT, ENC, H264|HEVC,
  449. 0, 2, 1, 0,
  450. V4L2_CID_MPEG_VIDEO_LTR_COUNT,
  451. HFI_PROP_LTR_COUNT,
  452. CAP_FLAG_OUTPUT_PORT},
  453. {USE_LTR, ENC, H264|HEVC,
  454. 0,
  455. ((1 << MAX_LTR_FRAME_COUNT) - 1),
  456. 0, 0,
  457. V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES,
  458. HFI_PROP_LTR_USE,
  459. CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED},
  460. {MARK_LTR, ENC, H264|HEVC,
  461. INVALID_DEFAULT_MARK_OR_USE_LTR,
  462. (MAX_LTR_FRAME_COUNT - 1),
  463. 1, INVALID_DEFAULT_MARK_OR_USE_LTR,
  464. V4L2_CID_MPEG_VIDEO_FRAME_LTR_INDEX,
  465. HFI_PROP_LTR_MARK,
  466. CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED},
  467. {BASELAYER_PRIORITY, ENC, H264,
  468. 0, MAX_BASE_LAYER_PRIORITY_ID, 1, 0,
  469. V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID,
  470. HFI_PROP_BASELAYER_PRIORITYID,
  471. CAP_FLAG_OUTPUT_PORT},
  472. {AU_DELIMITER, ENC, H264|HEVC,
  473. 0, 1, 1, 0,
  474. V4L2_CID_MPEG_VIDEO_AU_DELIMITER,
  475. HFI_PROP_AUD,
  476. CAP_FLAG_OUTPUT_PORT},
  477. {CONTENT_ADAPTIVE_CODING, ENC, H264|HEVC,
  478. 0, 1, 1, 1,
  479. 0,
  480. HFI_PROP_CONTENT_ADAPTIVE_CODING,
  481. CAP_FLAG_OUTPUT_PORT},
  482. {REQUEST_PREPROCESS, ENC, H264|HEVC,
  483. MSM_VIDC_PREPROCESS_NONE,
  484. MSM_VIDC_PREPROCESS_TYPE0,
  485. BIT(MSM_VIDC_PREPROCESS_NONE) |
  486. BIT(MSM_VIDC_PREPROCESS_TYPE0),
  487. MSM_VIDC_PREPROCESS_NONE,
  488. 0, HFI_PROP_REQUEST_PREPROCESS,
  489. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  490. {MIN_QUALITY, ENC, H264|HEVC,
  491. 0, MAX_SUPPORTED_MIN_QUALITY, 70, MAX_SUPPORTED_MIN_QUALITY,
  492. 0,
  493. HFI_PROP_MAINTAIN_MIN_QUALITY,
  494. CAP_FLAG_OUTPUT_PORT},
  495. {VBV_DELAY, ENC, H264|HEVC,
  496. 200, 300, 100, 300,
  497. V4L2_CID_MPEG_VIDEO_VBV_DELAY,
  498. HFI_PROP_VBV_DELAY,
  499. CAP_FLAG_OUTPUT_PORT},
  500. {PEAK_BITRATE, ENC, H264|HEVC,
  501. /* default peak bitrate is 10% larger than avg bitrate */
  502. 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
  503. V4L2_CID_MPEG_VIDEO_BITRATE_PEAK,
  504. HFI_PROP_TOTAL_PEAK_BITRATE,
  505. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  506. CAP_FLAG_DYNAMIC_ALLOWED},
  507. {MIN_FRAME_QP, ENC, H264,
  508. MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT,
  509. V4L2_CID_MPEG_VIDEO_H264_MIN_QP,
  510. HFI_PROP_MIN_QP_PACKED,
  511. CAP_FLAG_OUTPUT_PORT},
  512. {MIN_FRAME_QP, ENC, HEVC,
  513. MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT,
  514. V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP,
  515. HFI_PROP_MIN_QP_PACKED,
  516. CAP_FLAG_OUTPUT_PORT},
  517. {I_FRAME_MIN_QP, ENC, H264,
  518. MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT,
  519. V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP},
  520. {I_FRAME_MIN_QP, ENC, HEVC,
  521. MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT,
  522. V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MIN_QP},
  523. {P_FRAME_MIN_QP, ENC, H264,
  524. MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT,
  525. V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP},
  526. {P_FRAME_MIN_QP, ENC, HEVC,
  527. MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT,
  528. V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MIN_QP},
  529. {B_FRAME_MIN_QP, ENC, H264,
  530. MIN_QP_8BIT, MAX_QP, 1, MIN_QP_8BIT,
  531. V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MIN_QP},
  532. {B_FRAME_MIN_QP, ENC, HEVC,
  533. MIN_QP_10BIT, MAX_QP, 1, MIN_QP_10BIT,
  534. V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MIN_QP},
  535. {MAX_FRAME_QP, ENC, H264,
  536. MIN_QP_8BIT, MAX_QP, 1, MAX_QP,
  537. V4L2_CID_MPEG_VIDEO_H264_MAX_QP,
  538. HFI_PROP_MAX_QP_PACKED,
  539. CAP_FLAG_OUTPUT_PORT},
  540. {MAX_FRAME_QP, ENC, HEVC,
  541. MIN_QP_10BIT, MAX_QP, 1, MAX_QP,
  542. V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP,
  543. HFI_PROP_MAX_QP_PACKED,
  544. CAP_FLAG_OUTPUT_PORT},
  545. {I_FRAME_MAX_QP, ENC, H264,
  546. MIN_QP_8BIT, MAX_QP, 1, MAX_QP,
  547. V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP},
  548. {I_FRAME_MAX_QP, ENC, HEVC,
  549. MIN_QP_10BIT, MAX_QP, 1, MAX_QP,
  550. V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MAX_QP},
  551. {P_FRAME_MAX_QP, ENC, H264,
  552. MIN_QP_8BIT, MAX_QP, 1, MAX_QP,
  553. V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP},
  554. {P_FRAME_MAX_QP, ENC, HEVC,
  555. MIN_QP_10BIT, MAX_QP, 1, MAX_QP,
  556. V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MAX_QP},
  557. {B_FRAME_MAX_QP, ENC, H264,
  558. MIN_QP_8BIT, MAX_QP, 1, MAX_QP,
  559. V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MAX_QP},
  560. {B_FRAME_MAX_QP, ENC, HEVC,
  561. MIN_QP_10BIT, MAX_QP, 1, MAX_QP,
  562. V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MAX_QP},
  563. {I_FRAME_QP, ENC, HEVC,
  564. MIN_QP_10BIT, MAX_QP, 1, DEFAULT_QP,
  565. V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP,
  566. HFI_PROP_QP_PACKED,
  567. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  568. CAP_FLAG_DYNAMIC_ALLOWED},
  569. {I_FRAME_QP, ENC, H264,
  570. MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP,
  571. V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP,
  572. HFI_PROP_QP_PACKED,
  573. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  574. CAP_FLAG_DYNAMIC_ALLOWED},
  575. {P_FRAME_QP, ENC, HEVC,
  576. MIN_QP_10BIT, MAX_QP, 1, DEFAULT_QP,
  577. V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP,
  578. HFI_PROP_QP_PACKED,
  579. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  580. CAP_FLAG_DYNAMIC_ALLOWED},
  581. {P_FRAME_QP, ENC, H264,
  582. MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP,
  583. V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP,
  584. HFI_PROP_QP_PACKED,
  585. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  586. CAP_FLAG_DYNAMIC_ALLOWED},
  587. {B_FRAME_QP, ENC, HEVC,
  588. MIN_QP_10BIT, MAX_QP, 1, DEFAULT_QP,
  589. V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP,
  590. HFI_PROP_QP_PACKED,
  591. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  592. CAP_FLAG_DYNAMIC_ALLOWED},
  593. {B_FRAME_QP, ENC, H264,
  594. MIN_QP_8BIT, MAX_QP, 1, DEFAULT_QP,
  595. V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP,
  596. HFI_PROP_QP_PACKED,
  597. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  598. CAP_FLAG_DYNAMIC_ALLOWED},
  599. {LAYER_TYPE, ENC, HEVC,
  600. V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B,
  601. V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P,
  602. BIT(V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B) |
  603. BIT(V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P),
  604. V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P,
  605. V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE,
  606. HFI_PROP_LAYER_ENCODING_TYPE,
  607. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  608. {LAYER_TYPE, ENC, H264,
  609. V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B,
  610. V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P,
  611. BIT(V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B) |
  612. BIT(V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P),
  613. V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P,
  614. V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE,
  615. HFI_PROP_LAYER_ENCODING_TYPE,
  616. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  617. {LAYER_ENABLE, ENC, H264,
  618. 0, 1, 1, 0,
  619. V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING,
  620. HFI_PROP_LAYER_ENCODING_TYPE,
  621. CAP_FLAG_OUTPUT_PORT},
  622. {LAYER_ENABLE, ENC, HEVC,
  623. 0, 1, 1, 0,
  624. 0,
  625. 0,
  626. CAP_FLAG_OUTPUT_PORT},
  627. {ENH_LAYER_COUNT, ENC, HEVC,
  628. 0, 5, 1, 0,
  629. V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER,
  630. HFI_PROP_LAYER_COUNT,
  631. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  632. CAP_FLAG_DYNAMIC_ALLOWED},
  633. {ENH_LAYER_COUNT, ENC, H264,
  634. 0, 5, 1, 0,
  635. V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER,
  636. HFI_PROP_LAYER_COUNT,
  637. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  638. CAP_FLAG_DYNAMIC_ALLOWED},
  639. {L0_BR, ENC, H264,
  640. 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
  641. V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L0_BR,
  642. HFI_PROP_BITRATE_LAYER1,
  643. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  644. CAP_FLAG_DYNAMIC_ALLOWED},
  645. {L0_BR, ENC, HEVC,
  646. 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
  647. V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR,
  648. HFI_PROP_BITRATE_LAYER1,
  649. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  650. CAP_FLAG_DYNAMIC_ALLOWED},
  651. {L1_BR, ENC, H264,
  652. 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
  653. V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L1_BR,
  654. HFI_PROP_BITRATE_LAYER2,
  655. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  656. CAP_FLAG_DYNAMIC_ALLOWED},
  657. {L1_BR, ENC, HEVC,
  658. 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
  659. V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR,
  660. HFI_PROP_BITRATE_LAYER2,
  661. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  662. CAP_FLAG_DYNAMIC_ALLOWED},
  663. {L2_BR, ENC, H264,
  664. 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
  665. V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L2_BR,
  666. HFI_PROP_BITRATE_LAYER3,
  667. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  668. CAP_FLAG_DYNAMIC_ALLOWED},
  669. {L2_BR, ENC, HEVC,
  670. 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
  671. V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR,
  672. HFI_PROP_BITRATE_LAYER3,
  673. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  674. CAP_FLAG_DYNAMIC_ALLOWED},
  675. {L3_BR, ENC, H264,
  676. 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
  677. V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L3_BR,
  678. HFI_PROP_BITRATE_LAYER4,
  679. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  680. CAP_FLAG_DYNAMIC_ALLOWED},
  681. {L3_BR, ENC, HEVC,
  682. 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
  683. V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR,
  684. HFI_PROP_BITRATE_LAYER4,
  685. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  686. CAP_FLAG_DYNAMIC_ALLOWED},
  687. {L4_BR, ENC, H264,
  688. 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
  689. V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L4_BR,
  690. HFI_PROP_BITRATE_LAYER5,
  691. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  692. CAP_FLAG_DYNAMIC_ALLOWED},
  693. {L4_BR, ENC, HEVC,
  694. 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
  695. V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR,
  696. HFI_PROP_BITRATE_LAYER5,
  697. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  698. CAP_FLAG_DYNAMIC_ALLOWED},
  699. {L5_BR, ENC, H264,
  700. 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
  701. V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L5_BR,
  702. HFI_PROP_BITRATE_LAYER6,
  703. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  704. CAP_FLAG_DYNAMIC_ALLOWED},
  705. {L5_BR, ENC, HEVC,
  706. 1, MAX_BITRATE, 1, DEFAULT_BITRATE,
  707. V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR,
  708. HFI_PROP_BITRATE_LAYER6,
  709. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
  710. CAP_FLAG_DYNAMIC_ALLOWED},
  711. {ENTROPY_MODE, ENC, H264,
  712. V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC,
  713. V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC,
  714. BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC) |
  715. BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC),
  716. V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC,
  717. V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE,
  718. HFI_PROP_CABAC_SESSION,
  719. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  720. {ENTROPY_MODE, DEC, H264|HEVC|VP9,
  721. V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC,
  722. V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC,
  723. BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC) |
  724. BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC),
  725. V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC,
  726. 0,
  727. HFI_PROP_CABAC_SESSION},
  728. {PROFILE, ENC|DEC, H264,
  729. V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE,
  730. V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH,
  731. BIT(V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE) |
  732. BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH) |
  733. BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE) |
  734. BIT(V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) |
  735. BIT(V4L2_MPEG_VIDEO_H264_PROFILE_HIGH),
  736. V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
  737. V4L2_CID_MPEG_VIDEO_H264_PROFILE,
  738. HFI_PROP_PROFILE,
  739. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  740. {PROFILE, ENC|DEC, HEVC,
  741. V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
  742. V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10_STILL_PICTURE,
  743. BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN) |
  744. BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE) |
  745. BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10) |
  746. BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10_STILL_PICTURE),
  747. V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
  748. V4L2_CID_MPEG_VIDEO_HEVC_PROFILE,
  749. HFI_PROP_PROFILE,
  750. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  751. {PROFILE, DEC, VP9,
  752. V4L2_MPEG_VIDEO_VP9_PROFILE_0,
  753. V4L2_MPEG_VIDEO_VP9_PROFILE_2,
  754. BIT(V4L2_MPEG_VIDEO_VP9_PROFILE_0) |
  755. BIT(V4L2_MPEG_VIDEO_VP9_PROFILE_2),
  756. V4L2_MPEG_VIDEO_VP9_PROFILE_0,
  757. V4L2_CID_MPEG_VIDEO_VP9_PROFILE,
  758. HFI_PROP_PROFILE,
  759. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  760. {LEVEL, ENC, H264,
  761. V4L2_MPEG_VIDEO_H264_LEVEL_1_0,
  762. V4L2_MPEG_VIDEO_H264_LEVEL_6_0,
  763. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_0) |
  764. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1B) |
  765. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_1) |
  766. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_2) |
  767. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_3) |
  768. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_0) |
  769. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_1) |
  770. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_2) |
  771. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_0) |
  772. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_1) |
  773. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_2) |
  774. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_0) |
  775. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_1) |
  776. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_2) |
  777. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_0) |
  778. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_1) |
  779. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_2) |
  780. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_0),
  781. V4L2_MPEG_VIDEO_H264_LEVEL_5_0,
  782. V4L2_CID_MPEG_VIDEO_H264_LEVEL,
  783. HFI_PROP_LEVEL,
  784. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  785. {LEVEL, ENC, HEVC,
  786. V4L2_MPEG_VIDEO_HEVC_LEVEL_1,
  787. V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2,
  788. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_1) |
  789. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2) |
  790. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1) |
  791. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3) |
  792. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1) |
  793. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4) |
  794. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1) |
  795. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5) |
  796. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1) |
  797. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2) |
  798. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6) |
  799. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1) |
  800. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2),
  801. V4L2_MPEG_VIDEO_HEVC_LEVEL_5,
  802. V4L2_CID_MPEG_VIDEO_HEVC_LEVEL,
  803. HFI_PROP_LEVEL,
  804. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  805. {LEVEL, DEC, H264,
  806. V4L2_MPEG_VIDEO_H264_LEVEL_1_0,
  807. V4L2_MPEG_VIDEO_H264_LEVEL_6_2,
  808. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_0) |
  809. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1B) |
  810. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_1) |
  811. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_2) |
  812. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_3) |
  813. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_0) |
  814. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_1) |
  815. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_2) |
  816. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_0) |
  817. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_1) |
  818. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_2) |
  819. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_0) |
  820. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_1) |
  821. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_2) |
  822. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_0) |
  823. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_1) |
  824. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_2) |
  825. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_0) |
  826. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_1) |
  827. BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_2),
  828. V4L2_MPEG_VIDEO_H264_LEVEL_6_1,
  829. V4L2_CID_MPEG_VIDEO_H264_LEVEL,
  830. HFI_PROP_LEVEL,
  831. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  832. {LEVEL, DEC, HEVC,
  833. V4L2_MPEG_VIDEO_HEVC_LEVEL_1,
  834. V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2,
  835. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_1) |
  836. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2) |
  837. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1) |
  838. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3) |
  839. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1) |
  840. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4) |
  841. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1) |
  842. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5) |
  843. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1) |
  844. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2) |
  845. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6) |
  846. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1)|
  847. BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2),
  848. V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1,
  849. V4L2_CID_MPEG_VIDEO_HEVC_LEVEL,
  850. HFI_PROP_LEVEL,
  851. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  852. {LEVEL, DEC, VP9,
  853. V4L2_MPEG_VIDEO_VP9_LEVEL_1_0,
  854. V4L2_MPEG_VIDEO_VP9_LEVEL_6_0,
  855. BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_0) |
  856. BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_1) |
  857. BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_0) |
  858. BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_1) |
  859. BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_0) |
  860. BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_1) |
  861. BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_0) |
  862. BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_1) |
  863. BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_0) |
  864. BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_1) |
  865. BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_2) |
  866. BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_6_0),
  867. V4L2_MPEG_VIDEO_VP9_LEVEL_6_0,
  868. V4L2_CID_MPEG_VIDEO_VP9_LEVEL,
  869. HFI_PROP_LEVEL,
  870. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  871. {HEVC_TIER, ENC|DEC, HEVC,
  872. V4L2_MPEG_VIDEO_HEVC_TIER_MAIN,
  873. V4L2_MPEG_VIDEO_HEVC_TIER_HIGH,
  874. BIT(V4L2_MPEG_VIDEO_HEVC_TIER_MAIN) |
  875. BIT(V4L2_MPEG_VIDEO_HEVC_TIER_HIGH),
  876. V4L2_MPEG_VIDEO_HEVC_TIER_HIGH,
  877. V4L2_CID_MPEG_VIDEO_HEVC_TIER,
  878. HFI_PROP_TIER,
  879. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  880. {LF_MODE, ENC, H264,
  881. V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED,
  882. DB_H264_DISABLE_SLICE_BOUNDARY,
  883. BIT(V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED) |
  884. BIT(V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED) |
  885. BIT(DB_H264_DISABLE_SLICE_BOUNDARY),
  886. V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED,
  887. V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE,
  888. HFI_PROP_DEBLOCKING_MODE,
  889. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  890. {LF_MODE, ENC, HEVC,
  891. V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED,
  892. DB_HEVC_DISABLE_SLICE_BOUNDARY,
  893. BIT(V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED) |
  894. BIT(V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED) |
  895. BIT(DB_HEVC_DISABLE_SLICE_BOUNDARY),
  896. V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED,
  897. V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE,
  898. HFI_PROP_DEBLOCKING_MODE,
  899. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  900. {LF_ALPHA, ENC, H264,
  901. -6, 6, 1, 0,
  902. V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA},
  903. {LF_ALPHA, ENC, HEVC,
  904. -6, 6, 1, 0,
  905. V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2},
  906. {LF_BETA, ENC, H264,
  907. -6, 6, 1, 0,
  908. V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA},
  909. {LF_BETA, ENC, HEVC,
  910. -6, 6, 1, 0,
  911. V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2},
  912. {SLICE_MODE, ENC, H264|HEVC,
  913. V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE,
  914. V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES,
  915. BIT(V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE) |
  916. BIT(V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB) |
  917. BIT(V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES),
  918. V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE,
  919. V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE,
  920. 0,
  921. CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU},
  922. {SLICE_MAX_BYTES, ENC, H264|HEVC,
  923. MIN_SLICE_BYTE_SIZE, MAX_SLICE_BYTE_SIZE,
  924. 1, MIN_SLICE_BYTE_SIZE,
  925. V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES,
  926. HFI_PROP_MULTI_SLICE_BYTES_COUNT,
  927. CAP_FLAG_OUTPUT_PORT},
  928. {SLICE_MAX_MB, ENC, H264|HEVC,
  929. 1, MAX_SLICE_MB_SIZE, 1, 1,
  930. V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB,
  931. HFI_PROP_MULTI_SLICE_MB_COUNT,
  932. CAP_FLAG_OUTPUT_PORT},
  933. {MB_RC, ENC, H264|HEVC,
  934. 0, 1, 1, 1,
  935. V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE,
  936. 0,
  937. CAP_FLAG_OUTPUT_PORT},
  938. {TRANSFORM_8X8, ENC, H264,
  939. 0, 1, 1, 1,
  940. V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM,
  941. HFI_PROP_8X8_TRANSFORM,
  942. CAP_FLAG_OUTPUT_PORT},
  943. {CHROMA_QP_INDEX_OFFSET, ENC, HEVC,
  944. MIN_CHROMA_QP_OFFSET, MAX_CHROMA_QP_OFFSET,
  945. 1, MAX_CHROMA_QP_OFFSET,
  946. V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET,
  947. HFI_PROP_CHROMA_QP_OFFSET,
  948. CAP_FLAG_OUTPUT_PORT},
  949. {DISPLAY_DELAY_ENABLE, DEC, H264|HEVC|VP9,
  950. 0, 1, 1, 0,
  951. V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE,
  952. HFI_PROP_DECODE_ORDER_OUTPUT,
  953. CAP_FLAG_INPUT_PORT},
  954. {DISPLAY_DELAY, DEC, H264|HEVC|VP9,
  955. 0, 1, 1, 0,
  956. V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY,
  957. HFI_PROP_DECODE_ORDER_OUTPUT,
  958. CAP_FLAG_INPUT_PORT},
  959. {OUTPUT_ORDER, DEC, H264|HEVC|VP9,
  960. 0, 1, 1, 0,
  961. 0,
  962. HFI_PROP_DECODE_ORDER_OUTPUT,
  963. CAP_FLAG_INPUT_PORT},
  964. {INPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL,
  965. DEFAULT_MAX_HOST_BUF_COUNT, DEFAULT_MAX_HOST_BURST_BUF_COUNT,
  966. 1, DEFAULT_MAX_HOST_BUF_COUNT,
  967. 0,
  968. HFI_PROP_BUFFER_HOST_MAX_COUNT,
  969. CAP_FLAG_INPUT_PORT},
  970. {OUTPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL,
  971. DEFAULT_MAX_HOST_BUF_COUNT, DEFAULT_MAX_HOST_BURST_BUF_COUNT,
  972. 1, DEFAULT_MAX_HOST_BUF_COUNT,
  973. 0,
  974. HFI_PROP_BUFFER_HOST_MAX_COUNT,
  975. CAP_FLAG_OUTPUT_PORT},
  976. {CONCEAL_COLOR_8BIT, DEC, CODECS_ALL, 0x0, 0xff3fcff, 1,
  977. DEFAULT_VIDEO_CONCEAL_COLOR_BLACK,
  978. V4L2_CID_MPEG_VIDEO_MUTE_YUV,
  979. HFI_PROP_CONCEAL_COLOR_8BIT,
  980. CAP_FLAG_INPUT_PORT},
  981. {CONCEAL_COLOR_10BIT, DEC, CODECS_ALL, 0x0, 0x3fffffff, 1,
  982. DEFAULT_VIDEO_CONCEAL_COLOR_BLACK,
  983. V4L2_CID_MPEG_VIDEO_MUTE_YUV,
  984. HFI_PROP_CONCEAL_COLOR_10BIT,
  985. CAP_FLAG_INPUT_PORT},
  986. {STAGE, DEC|ENC, CODECS_ALL,
  987. MSM_VIDC_STAGE_1,
  988. MSM_VIDC_STAGE_2, 1,
  989. MSM_VIDC_STAGE_2,
  990. 0,
  991. HFI_PROP_STAGE},
  992. {PIPE, DEC|ENC, CODECS_ALL,
  993. MSM_VIDC_PIPE_1,
  994. MSM_VIDC_PIPE_4, 1,
  995. MSM_VIDC_PIPE_4,
  996. 0,
  997. HFI_PROP_PIPE},
  998. {POC, DEC, H264, 0, 2, 1, 1,
  999. 0,
  1000. HFI_PROP_PIC_ORDER_CNT_TYPE},
  1001. {QUALITY_MODE, ENC, CODECS_ALL,
  1002. MSM_VIDC_MAX_QUALITY_MODE,
  1003. MSM_VIDC_POWER_SAVE_MODE, 1,
  1004. MSM_VIDC_POWER_SAVE_MODE},
  1005. {CODED_FRAMES, DEC, H264|HEVC,
  1006. CODED_FRAMES_PROGRESSIVE, CODED_FRAMES_INTERLACE,
  1007. 1, CODED_FRAMES_PROGRESSIVE,
  1008. 0,
  1009. HFI_PROP_CODED_FRAMES},
  1010. {BIT_DEPTH, DEC, CODECS_ALL, BIT_DEPTH_8, BIT_DEPTH_10, 1, BIT_DEPTH_8,
  1011. 0,
  1012. HFI_PROP_LUMA_CHROMA_BIT_DEPTH},
  1013. {CODEC_CONFIG, DEC, H264|HEVC, 0, 1, 1, 0,
  1014. 0, 0,
  1015. CAP_FLAG_DYNAMIC_ALLOWED},
  1016. {BITSTREAM_SIZE_OVERWRITE, DEC, CODECS_ALL, 0, INT_MAX, 1, 0,
  1017. 0},
  1018. {THUMBNAIL_MODE, DEC, CODECS_ALL,
  1019. 0, 1, 1, 0,
  1020. 0,
  1021. HFI_PROP_THUMBNAIL_MODE,
  1022. CAP_FLAG_INPUT_PORT},
  1023. {DEFAULT_HEADER, DEC, CODECS_ALL,
  1024. 0, 1, 1, 0,
  1025. 0,
  1026. HFI_PROP_DEC_DEFAULT_HEADER},
  1027. {RAP_FRAME, DEC, CODECS_ALL,
  1028. 0, 1, 1, 1,
  1029. 0,
  1030. HFI_PROP_DEC_START_FROM_RAP_FRAME,
  1031. CAP_FLAG_INPUT_PORT},
  1032. {SEQ_CHANGE_AT_SYNC_FRAME, DEC, CODECS_ALL,
  1033. 0, 1, 1, 1,
  1034. 0,
  1035. HFI_PROP_SEQ_CHANGE_AT_SYNC_FRAME,
  1036. CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED},
  1037. {PRIORITY, DEC|ENC, CODECS_ALL,
  1038. 0, 1 + NRT_PRIORITY_OFFSET, 1, 1 + NRT_PRIORITY_OFFSET,
  1039. 0,
  1040. HFI_PROP_SESSION_PRIORITY,
  1041. CAP_FLAG_DYNAMIC_ALLOWED},
  1042. {FIRMWARE_PRIORITY_OFFSET, DEC | ENC, CODECS_ALL,
  1043. 1, 1, 1, 1},
  1044. {DPB_LIST, DEC, CODECS_ALL,
  1045. 0, 1, 1, 0,
  1046. 0,
  1047. HFI_PROP_DPB_LIST,
  1048. CAP_FLAG_OUTPUT_PORT},
  1049. {ALL_INTRA, ENC, H264|HEVC,
  1050. 0, 1, 1, 0,
  1051. 0,
  1052. 0,
  1053. CAP_FLAG_OUTPUT_PORT},
  1054. {COMPLEXITY, ENC, H264|HEVC,
  1055. 0, 100,
  1056. 1, DEFAULT_COMPLEXITY,
  1057. 0},
  1058. };
  1059. static struct msm_platform_inst_cap_dependency instance_cap_dependency_data_waipio[] = {
  1060. /* {cap, domain, codec,
  1061. * children,
  1062. * adjust, set}
  1063. */
  1064. {PIX_FMTS, ENC, H264,
  1065. {0}},
  1066. {PIX_FMTS, ENC, HEVC,
  1067. {PROFILE, MIN_FRAME_QP, MAX_FRAME_QP, I_FRAME_QP, P_FRAME_QP,
  1068. B_FRAME_QP, MIN_QUALITY, BLUR_TYPES}},
  1069. {PIX_FMTS, DEC, HEVC,
  1070. {PROFILE}},
  1071. {FRAME_RATE, ENC, CODECS_ALL,
  1072. {0},
  1073. NULL,
  1074. msm_vidc_set_q16},
  1075. {HFLIP, ENC, CODECS_ALL,
  1076. {0},
  1077. NULL,
  1078. msm_vidc_set_flip},
  1079. {VFLIP, ENC, CODECS_ALL,
  1080. {0},
  1081. NULL,
  1082. msm_vidc_set_flip},
  1083. {ROTATION, ENC, CODECS_ALL,
  1084. {0},
  1085. NULL,
  1086. msm_vidc_set_rotation},
  1087. {SUPER_FRAME, ENC, H264|HEVC,
  1088. {INPUT_BUF_HOST_MAX_COUNT, OUTPUT_BUF_HOST_MAX_COUNT},
  1089. NULL,
  1090. NULL},
  1091. {HEADER_MODE, ENC, CODECS_ALL,
  1092. {0},
  1093. NULL,
  1094. msm_vidc_set_header_mode},
  1095. {WITHOUT_STARTCODE, ENC, CODECS_ALL,
  1096. {0},
  1097. NULL,
  1098. msm_vidc_set_nal_length},
  1099. {REQUEST_I_FRAME, ENC, H264|HEVC,
  1100. {0},
  1101. NULL,
  1102. msm_vidc_set_req_sync_frame},
  1103. {BIT_RATE, ENC, H264,
  1104. {PEAK_BITRATE, L0_BR},
  1105. msm_vidc_adjust_bitrate,
  1106. msm_vidc_set_bitrate},
  1107. {BIT_RATE, ENC, HEVC,
  1108. {PEAK_BITRATE, L0_BR},
  1109. msm_vidc_adjust_bitrate,
  1110. msm_vidc_set_bitrate},
  1111. {BITRATE_MODE, ENC, H264,
  1112. {LTR_COUNT, I_FRAME_QP, P_FRAME_QP,
  1113. B_FRAME_QP, ENH_LAYER_COUNT, BIT_RATE,
  1114. MIN_QUALITY, VBV_DELAY,
  1115. PEAK_BITRATE, SLICE_MODE, CONTENT_ADAPTIVE_CODING,
  1116. BLUR_TYPES, LOWLATENCY_MODE},
  1117. msm_vidc_adjust_bitrate_mode,
  1118. msm_vidc_set_u32_enum},
  1119. {BITRATE_MODE, ENC, HEVC,
  1120. {LTR_COUNT, I_FRAME_QP, P_FRAME_QP,
  1121. B_FRAME_QP, CONSTANT_QUALITY, ENH_LAYER_COUNT,
  1122. BIT_RATE, MIN_QUALITY, VBV_DELAY,
  1123. PEAK_BITRATE, SLICE_MODE, CONTENT_ADAPTIVE_CODING,
  1124. BLUR_TYPES, LOWLATENCY_MODE},
  1125. msm_vidc_adjust_bitrate_mode,
  1126. msm_vidc_set_u32_enum},
  1127. {CONSTANT_QUALITY, ENC, HEVC,
  1128. {0},
  1129. NULL,
  1130. msm_vidc_set_constant_quality},
  1131. {GOP_SIZE, ENC, CODECS_ALL,
  1132. {ALL_INTRA},
  1133. msm_vidc_adjust_gop_size,
  1134. msm_vidc_set_gop_size},
  1135. {B_FRAME, ENC, H264|HEVC,
  1136. {ALL_INTRA},
  1137. msm_vidc_adjust_b_frame,
  1138. msm_vidc_set_u32},
  1139. {BLUR_TYPES, ENC, H264|HEVC,
  1140. {0},
  1141. msm_vidc_adjust_blur_type_iris2,
  1142. msm_vidc_set_u32_enum},
  1143. {LOWLATENCY_MODE, ENC, H264 | HEVC,
  1144. {STAGE, BIT_RATE},
  1145. msm_vidc_adjust_enc_lowlatency_mode,
  1146. NULL},
  1147. {LOWLATENCY_MODE, DEC, H264|HEVC|VP9,
  1148. {STAGE},
  1149. msm_vidc_adjust_dec_lowlatency_mode,
  1150. NULL},
  1151. {LTR_COUNT, ENC, H264|HEVC,
  1152. {0},
  1153. msm_vidc_adjust_ltr_count,
  1154. msm_vidc_set_u32},
  1155. {USE_LTR, ENC, H264|HEVC,
  1156. {0},
  1157. msm_vidc_adjust_use_ltr,
  1158. msm_vidc_set_use_and_mark_ltr},
  1159. {MARK_LTR, ENC, H264|HEVC,
  1160. {0},
  1161. msm_vidc_adjust_mark_ltr,
  1162. msm_vidc_set_use_and_mark_ltr},
  1163. {AU_DELIMITER, ENC, H264|HEVC,
  1164. {0},
  1165. NULL,
  1166. msm_vidc_set_u32},
  1167. {CONTENT_ADAPTIVE_CODING, ENC, H264|HEVC,
  1168. {REQUEST_PREPROCESS},
  1169. msm_vidc_adjust_brs,
  1170. msm_vidc_set_vbr_related_properties},
  1171. {REQUEST_PREPROCESS, ENC, H264|HEVC,
  1172. {0},
  1173. msm_vidc_adjust_preprocess,
  1174. msm_vidc_set_preprocess},
  1175. {MIN_QUALITY, ENC, H264,
  1176. {BLUR_TYPES},
  1177. msm_vidc_adjust_min_quality,
  1178. msm_vidc_set_u32},
  1179. {MIN_QUALITY, ENC, HEVC,
  1180. {BLUR_TYPES},
  1181. msm_vidc_adjust_min_quality,
  1182. msm_vidc_set_u32},
  1183. {VBV_DELAY, ENC, H264|HEVC,
  1184. {0},
  1185. NULL,
  1186. msm_vidc_set_cbr_related_properties},
  1187. {PEAK_BITRATE, ENC, H264|HEVC,
  1188. {0},
  1189. msm_vidc_adjust_peak_bitrate,
  1190. msm_vidc_set_cbr_related_properties},
  1191. {MIN_FRAME_QP, ENC, H264,
  1192. {0},
  1193. NULL,
  1194. msm_vidc_set_min_qp},
  1195. {MIN_FRAME_QP, ENC, HEVC,
  1196. {0},
  1197. msm_vidc_adjust_hevc_min_qp,
  1198. msm_vidc_set_min_qp},
  1199. {MAX_FRAME_QP, ENC, H264,
  1200. {0},
  1201. NULL,
  1202. msm_vidc_set_max_qp},
  1203. {MAX_FRAME_QP, ENC, HEVC,
  1204. {0},
  1205. msm_vidc_adjust_hevc_max_qp,
  1206. msm_vidc_set_max_qp},
  1207. {I_FRAME_QP, ENC, HEVC,
  1208. {0},
  1209. msm_vidc_adjust_hevc_i_frame_qp,
  1210. msm_vidc_set_frame_qp},
  1211. {I_FRAME_QP, ENC, H264,
  1212. {0},
  1213. NULL,
  1214. msm_vidc_set_frame_qp},
  1215. {P_FRAME_QP, ENC, HEVC,
  1216. {0},
  1217. msm_vidc_adjust_hevc_p_frame_qp,
  1218. msm_vidc_set_frame_qp},
  1219. {P_FRAME_QP, ENC, H264,
  1220. {0},
  1221. NULL,
  1222. msm_vidc_set_frame_qp},
  1223. {B_FRAME_QP, ENC, HEVC,
  1224. {0},
  1225. msm_vidc_adjust_hevc_b_frame_qp,
  1226. msm_vidc_set_frame_qp},
  1227. {B_FRAME_QP, ENC, H264,
  1228. {0},
  1229. NULL,
  1230. msm_vidc_set_frame_qp},
  1231. {LAYER_TYPE, ENC, H264,
  1232. {CONTENT_ADAPTIVE_CODING}},
  1233. {LAYER_ENABLE, ENC, H264|HEVC,
  1234. {CONTENT_ADAPTIVE_CODING}},
  1235. {ENH_LAYER_COUNT, ENC, H264|HEVC,
  1236. {GOP_SIZE, B_FRAME, BIT_RATE, MIN_QUALITY, SLICE_MODE},
  1237. msm_vidc_adjust_layer_count,
  1238. msm_vidc_set_layer_count_and_type},
  1239. {L0_BR, ENC, H264|HEVC,
  1240. {L1_BR},
  1241. msm_vidc_adjust_layer_bitrate,
  1242. msm_vidc_set_layer_bitrate},
  1243. {L1_BR, ENC, H264|HEVC,
  1244. {L2_BR},
  1245. msm_vidc_adjust_layer_bitrate,
  1246. msm_vidc_set_layer_bitrate},
  1247. {L2_BR, ENC, H264|HEVC,
  1248. {L3_BR},
  1249. msm_vidc_adjust_layer_bitrate,
  1250. msm_vidc_set_layer_bitrate},
  1251. {L3_BR, ENC, H264|HEVC,
  1252. {L4_BR},
  1253. msm_vidc_adjust_layer_bitrate,
  1254. msm_vidc_set_layer_bitrate},
  1255. {L4_BR, ENC, H264|HEVC,
  1256. {L5_BR},
  1257. msm_vidc_adjust_layer_bitrate,
  1258. msm_vidc_set_layer_bitrate},
  1259. {L5_BR, ENC, H264|HEVC,
  1260. {0},
  1261. msm_vidc_adjust_layer_bitrate,
  1262. msm_vidc_set_layer_bitrate},
  1263. {ENTROPY_MODE, ENC, H264,
  1264. {BIT_RATE},
  1265. msm_vidc_adjust_entropy_mode,
  1266. msm_vidc_set_u32},
  1267. {PROFILE, ENC, H264,
  1268. {ENTROPY_MODE, TRANSFORM_8X8},
  1269. NULL,
  1270. msm_vidc_set_u32_enum},
  1271. {PROFILE, DEC, H264,
  1272. {ENTROPY_MODE},
  1273. NULL,
  1274. msm_vidc_set_u32_enum},
  1275. {PROFILE, ENC|DEC, HEVC,
  1276. {0},
  1277. msm_vidc_adjust_profile,
  1278. msm_vidc_set_u32_enum},
  1279. {PROFILE, DEC, VP9,
  1280. {0},
  1281. NULL,
  1282. msm_vidc_set_u32_enum},
  1283. {LEVEL, DEC, CODECS_ALL,
  1284. {0},
  1285. NULL,
  1286. msm_vidc_set_u32_enum},
  1287. {LEVEL, ENC, CODECS_ALL,
  1288. {0},
  1289. NULL,
  1290. msm_vidc_set_level},
  1291. {HEVC_TIER, ENC|DEC, HEVC,
  1292. {0},
  1293. NULL,
  1294. msm_vidc_set_u32_enum},
  1295. {LF_MODE, ENC, CODECS_ALL,
  1296. {0},
  1297. NULL,
  1298. msm_vidc_set_deblock_mode},
  1299. {SLICE_MODE, ENC, H264|HEVC,
  1300. {STAGE},
  1301. msm_vidc_adjust_slice_count,
  1302. msm_vidc_set_slice_count},
  1303. {TRANSFORM_8X8, ENC, H264,
  1304. {0},
  1305. msm_vidc_adjust_transform_8x8,
  1306. msm_vidc_set_u32},
  1307. {CHROMA_QP_INDEX_OFFSET, ENC, HEVC,
  1308. {0},
  1309. msm_vidc_adjust_chroma_qp_index_offset,
  1310. msm_vidc_set_chroma_qp_index_offset},
  1311. {DISPLAY_DELAY_ENABLE, DEC, H264|HEVC|VP9,
  1312. {OUTPUT_ORDER},
  1313. NULL,
  1314. NULL},
  1315. {DISPLAY_DELAY, DEC, H264|HEVC|VP9,
  1316. {OUTPUT_ORDER},
  1317. NULL,
  1318. NULL},
  1319. {OUTPUT_ORDER, DEC, H264|HEVC|VP9,
  1320. {0},
  1321. msm_vidc_adjust_output_order,
  1322. msm_vidc_set_u32},
  1323. {INPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL,
  1324. {0},
  1325. msm_vidc_adjust_input_buf_host_max_count,
  1326. msm_vidc_set_u32},
  1327. {INPUT_BUF_HOST_MAX_COUNT, ENC, H264|HEVC,
  1328. {0},
  1329. msm_vidc_adjust_input_buf_host_max_count,
  1330. msm_vidc_set_u32},
  1331. {OUTPUT_BUF_HOST_MAX_COUNT, ENC|DEC, CODECS_ALL,
  1332. {0},
  1333. msm_vidc_adjust_output_buf_host_max_count,
  1334. msm_vidc_set_u32},
  1335. {OUTPUT_BUF_HOST_MAX_COUNT, ENC, H264|HEVC,
  1336. {0},
  1337. msm_vidc_adjust_output_buf_host_max_count,
  1338. msm_vidc_set_u32},
  1339. {CONCEAL_COLOR_8BIT, DEC, CODECS_ALL,
  1340. {0},
  1341. NULL,
  1342. msm_vidc_set_u32_packed},
  1343. {CONCEAL_COLOR_10BIT, DEC, CODECS_ALL,
  1344. {0},
  1345. NULL,
  1346. msm_vidc_set_u32_packed},
  1347. {STAGE, ENC|DEC, CODECS_ALL,
  1348. {0},
  1349. NULL,
  1350. msm_vidc_set_stage},
  1351. {STAGE, ENC, H264|HEVC,
  1352. {0},
  1353. NULL,
  1354. msm_vidc_set_stage},
  1355. {STAGE, DEC, H264|HEVC|VP9,
  1356. {0},
  1357. NULL,
  1358. msm_vidc_set_stage},
  1359. {PIPE, DEC|ENC, CODECS_ALL,
  1360. {0},
  1361. NULL,
  1362. msm_vidc_set_pipe},
  1363. {THUMBNAIL_MODE, DEC, CODECS_ALL,
  1364. {OUTPUT_ORDER},
  1365. NULL,
  1366. msm_vidc_set_u32},
  1367. {RAP_FRAME, DEC, CODECS_ALL,
  1368. {0},
  1369. NULL,
  1370. msm_vidc_set_u32},
  1371. {PRIORITY, DEC|ENC, CODECS_ALL,
  1372. {0},
  1373. msm_vidc_adjust_session_priority,
  1374. msm_vidc_set_session_priority},
  1375. {FIRMWARE_PRIORITY_OFFSET, DEC | ENC, CODECS_ALL,
  1376. {0},
  1377. NULL,
  1378. NULL},
  1379. {DPB_LIST, DEC, CODECS_ALL,
  1380. {0},
  1381. NULL,
  1382. NULL},
  1383. {ALL_INTRA, ENC, H264|HEVC,
  1384. {LTR_COUNT, SLICE_MODE, BIT_RATE},
  1385. msm_vidc_adjust_all_intra,
  1386. NULL},
  1387. };
  1388. /* Default UBWC config for LPDDR5 */
  1389. static struct msm_vidc_ubwc_config_data ubwc_config_waipio[] = {
  1390. UBWC_CONFIG(8, 32, 16, 0, 1, 1, 1),
  1391. };
  1392. static struct msm_vidc_format_capability format_data_waipio = {
  1393. .codec_info = codec_data_waipio,
  1394. .codec_info_size = ARRAY_SIZE(codec_data_waipio),
  1395. .color_format_info = color_format_data_waipio,
  1396. .color_format_info_size = ARRAY_SIZE(color_format_data_waipio),
  1397. .color_prim_info = color_primaries_data_waipio,
  1398. .color_prim_info_size = ARRAY_SIZE(color_primaries_data_waipio),
  1399. .transfer_char_info = transfer_char_data_waipio,
  1400. .transfer_char_info_size = ARRAY_SIZE(transfer_char_data_waipio),
  1401. .matrix_coeff_info = matrix_coeff_data_waipio,
  1402. .matrix_coeff_info_size = ARRAY_SIZE(matrix_coeff_data_waipio),
  1403. };
  1404. /* name, min_kbps, max_kbps */
  1405. static const struct bw_table waipio_bw_table[] = {
  1406. { "venus-cnoc", 1000, 1000 },
  1407. { "venus-ddr", 1000, 15000000 },
  1408. };
  1409. /* name */
  1410. static const struct pd_table waipio_pd_table[] = {
  1411. { "iris-ctl" },
  1412. { "vcodec" },
  1413. };
  1414. /* name */
  1415. static const char * const waipio_opp_table[] = { "mx", "mmcx", NULL };
  1416. /* name, clock id, scaling */
  1417. static const struct clk_table waipio_clk_table[] = {
  1418. { "gcc_video_axi0", GCC_VIDEO_AXI0_CLK, 0 },
  1419. { "core_clk", VIDEO_CC_MVS0C_CLK, 0 },
  1420. { "vcodec_clk", VIDEO_CC_MVS0_CLK, 1 },
  1421. };
  1422. /* name */
  1423. static const struct clk_rst_table waipio_clk_reset_table[] = {
  1424. { "video_axi_reset" },
  1425. { "video_core_reset" },
  1426. };
  1427. /* name, start, size, secure, dma_coherant */
  1428. const struct context_bank_table waipio_context_bank_table[] = {
  1429. {"qcom,vidc,cb-ns", 0x25800000, 0xba800000, 0, 1, MSM_VIDC_NON_SECURE, 0xe0000000 - 1},
  1430. {"qcom,vidc,cb-sec-non-pxl", 0x01000000, 0x24800000, 1, 0, MSM_VIDC_SECURE_NONPIXEL, 0 },
  1431. };
  1432. /* freq */
  1433. static struct freq_table waipio_freq_table[] = {
  1434. {444000000}, {366000000}, {338000000}, {240000000}
  1435. };
  1436. /* register, value, mask */
  1437. static const struct reg_preset_table waipio_reg_preset_table[] = {
  1438. { 0xB0088, 0x0, 0x11 },
  1439. };
  1440. static const struct msm_vidc_platform_data waipio_data = {
  1441. /* resources dependent on other module */
  1442. .bw_tbl = waipio_bw_table,
  1443. .bw_tbl_size = ARRAY_SIZE(waipio_bw_table),
  1444. .clk_tbl = waipio_clk_table,
  1445. .clk_tbl_size = ARRAY_SIZE(waipio_clk_table),
  1446. .clk_rst_tbl = waipio_clk_reset_table,
  1447. .clk_rst_tbl_size = ARRAY_SIZE(waipio_clk_reset_table),
  1448. .subcache_tbl = NULL,
  1449. .subcache_tbl_size = 0,
  1450. /* populate context bank */
  1451. .context_bank_tbl = waipio_context_bank_table,
  1452. .context_bank_tbl_size = ARRAY_SIZE(waipio_context_bank_table),
  1453. /* populate power domain and opp table */
  1454. .pd_tbl = waipio_pd_table,
  1455. .pd_tbl_size = ARRAY_SIZE(waipio_pd_table),
  1456. .opp_tbl = waipio_opp_table,
  1457. .opp_tbl_size = ARRAY_SIZE(waipio_opp_table),
  1458. /* platform specific resources */
  1459. .freq_tbl = waipio_freq_table,
  1460. .freq_tbl_size = ARRAY_SIZE(waipio_freq_table),
  1461. .reg_prst_tbl = waipio_reg_preset_table,
  1462. .reg_prst_tbl_size = ARRAY_SIZE(waipio_reg_preset_table),
  1463. .fwname = "vpu20_4v",
  1464. .pas_id = 9,
  1465. .supports_mmrm = 0,
  1466. /* caps related resorces */
  1467. .core_data = core_data_waipio,
  1468. .core_data_size = ARRAY_SIZE(core_data_waipio),
  1469. .inst_cap_data = instance_cap_data_waipio,
  1470. .inst_cap_data_size = ARRAY_SIZE(instance_cap_data_waipio),
  1471. .inst_cap_dependency_data = instance_cap_dependency_data_waipio,
  1472. .inst_cap_dependency_data_size = ARRAY_SIZE(instance_cap_dependency_data_waipio),
  1473. .csc_data.vpe_csc_custom_bias_coeff = vpe_csc_custom_bias_coeff,
  1474. .csc_data.vpe_csc_custom_matrix_coeff = vpe_csc_custom_matrix_coeff,
  1475. .csc_data.vpe_csc_custom_limit_coeff = vpe_csc_custom_limit_coeff,
  1476. .ubwc_config = ubwc_config_waipio,
  1477. .format_data = &format_data_waipio,
  1478. };
  1479. static int msm_vidc_init_data(struct msm_vidc_core *core)
  1480. {
  1481. int rc = 0;
  1482. if (!core || !core->platform) {
  1483. d_vpr_e("%s: invalid params\n", __func__);
  1484. return -EINVAL;
  1485. }
  1486. d_vpr_h("%s: initialize waipio data\n", __func__);
  1487. core->platform->data = waipio_data;
  1488. return rc;
  1489. }
  1490. int msm_vidc_init_platform_waipio(struct msm_vidc_core *core)
  1491. {
  1492. int rc = 0;
  1493. rc = msm_vidc_init_data(core);
  1494. if (rc)
  1495. return rc;
  1496. return 0;
  1497. }
  1498. int msm_vidc_deinit_platform_waipio(struct msm_vidc_core *core)
  1499. {
  1500. /* do nothing */
  1501. return 0;
  1502. }