162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Hantro VP9 codec driver
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (C) 2021 Collabora Ltd.
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_cistruct hantro_g2_mv_probs {
962306a36Sopenharmony_ci	u8 joint[3];
1062306a36Sopenharmony_ci	u8 sign[2];
1162306a36Sopenharmony_ci	u8 class0_bit[2][1];
1262306a36Sopenharmony_ci	u8 fr[2][3];
1362306a36Sopenharmony_ci	u8 class0_hp[2];
1462306a36Sopenharmony_ci	u8 hp[2];
1562306a36Sopenharmony_ci	u8 classes[2][10];
1662306a36Sopenharmony_ci	u8 class0_fr[2][2][3];
1762306a36Sopenharmony_ci	u8 bits[2][10];
1862306a36Sopenharmony_ci};
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_cistruct hantro_g2_probs {
2162306a36Sopenharmony_ci	u8 inter_mode[7][4];
2262306a36Sopenharmony_ci	u8 is_inter[4];
2362306a36Sopenharmony_ci	u8 uv_mode[10][8];
2462306a36Sopenharmony_ci	u8 tx8[2][1];
2562306a36Sopenharmony_ci	u8 tx16[2][2];
2662306a36Sopenharmony_ci	u8 tx32[2][3];
2762306a36Sopenharmony_ci	u8 y_mode_tail[4][1];
2862306a36Sopenharmony_ci	u8 y_mode[4][8];
2962306a36Sopenharmony_ci	u8 partition[2][16][4]; /* [keyframe][][], [inter][][] */
3062306a36Sopenharmony_ci	u8 uv_mode_tail[10][1];
3162306a36Sopenharmony_ci	u8 interp_filter[4][2];
3262306a36Sopenharmony_ci	u8 comp_mode[5];
3362306a36Sopenharmony_ci	u8 skip[3];
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci	u8 pad1[1];
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci	struct hantro_g2_mv_probs mv;
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci	u8 single_ref[5][2];
4062306a36Sopenharmony_ci	u8 comp_ref[5];
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci	u8 pad2[17];
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci	u8 coef[4][2][2][6][6][4];
4562306a36Sopenharmony_ci};
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_cistruct hantro_g2_all_probs {
4862306a36Sopenharmony_ci	u8 kf_y_mode_prob[10][10][8];
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci	u8 kf_y_mode_prob_tail[10][10][1];
5162306a36Sopenharmony_ci	u8 ref_pred_probs[3];
5262306a36Sopenharmony_ci	u8 mb_segment_tree_probs[7];
5362306a36Sopenharmony_ci	u8 segment_pred_probs[3];
5462306a36Sopenharmony_ci	u8 ref_scores[4];
5562306a36Sopenharmony_ci	u8 prob_comppred[2];
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci	u8 pad1[9];
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci	u8 kf_uv_mode_prob[10][8];
6062306a36Sopenharmony_ci	u8 kf_uv_mode_prob_tail[10][1];
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci	u8 pad2[6];
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci	struct hantro_g2_probs probs;
6562306a36Sopenharmony_ci};
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_cistruct mv_counts {
6862306a36Sopenharmony_ci	u32 joints[4];
6962306a36Sopenharmony_ci	u32 sign[2][2];
7062306a36Sopenharmony_ci	u32 classes[2][11];
7162306a36Sopenharmony_ci	u32 class0[2][2];
7262306a36Sopenharmony_ci	u32 bits[2][10][2];
7362306a36Sopenharmony_ci	u32 class0_fp[2][2][4];
7462306a36Sopenharmony_ci	u32 fp[2][4];
7562306a36Sopenharmony_ci	u32 class0_hp[2][2];
7662306a36Sopenharmony_ci	u32 hp[2][2];
7762306a36Sopenharmony_ci};
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_cistruct symbol_counts {
8062306a36Sopenharmony_ci	u32 inter_mode_counts[7][3][2];
8162306a36Sopenharmony_ci	u32 sb_ymode_counts[4][10];
8262306a36Sopenharmony_ci	u32 uv_mode_counts[10][10];
8362306a36Sopenharmony_ci	u32 partition_counts[16][4];
8462306a36Sopenharmony_ci	u32 switchable_interp_counts[4][3];
8562306a36Sopenharmony_ci	u32 intra_inter_count[4][2];
8662306a36Sopenharmony_ci	u32 comp_inter_count[5][2];
8762306a36Sopenharmony_ci	u32 single_ref_count[5][2][2];
8862306a36Sopenharmony_ci	u32 comp_ref_count[5][2];
8962306a36Sopenharmony_ci	u32 tx32x32_count[2][4];
9062306a36Sopenharmony_ci	u32 tx16x16_count[2][3];
9162306a36Sopenharmony_ci	u32 tx8x8_count[2][2];
9262306a36Sopenharmony_ci	u32 mbskip_count[3][2];
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci	struct mv_counts mv_counts;
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci	u32 count_coeffs[2][2][6][6][4];
9762306a36Sopenharmony_ci	u32 count_coeffs8x8[2][2][6][6][4];
9862306a36Sopenharmony_ci	u32 count_coeffs16x16[2][2][6][6][4];
9962306a36Sopenharmony_ci	u32 count_coeffs32x32[2][2][6][6][4];
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci	u32 count_eobs[4][2][2][6][6];
10262306a36Sopenharmony_ci};
103