Pull media fixes from Mauro Carvalho Chehab: "The rockship rkisp1 driver will be promoted from staging in 5.11. While not too late, do a few uAPI changes which are needed to better support its functionalities" * tag 'media/v5.11-3' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: media: rockchip: rkisp1: extend uapi array sizes media: rockchip: rkisp1: carry ip version information media: rockchip: rkisp1: reduce number of histogram grid elements in uapi media: rkisp1: stats: mask the hist_bins values media: rkisp1: stats: remove a wrong cast to u8 media: rkisp1: uapi: change hist_bins array type from __u16 to __u32
Showing the changes to include (1 of 6 files). Show all
Unified · Split
| @@ -49,8 +49,14 @@ · 48 unmodified lines | ||
| 49 | 49 | #define RKISP1_CIF_ISP_CTK_COEFF_MAX 0x100 |
| 50 | 50 | #define RKISP1_CIF_ISP_CTK_OFFSET_MAX 0x800 |
| 51 | 51 | |
| 52 | −#define RKISP1_CIF_ISP_AE_MEAN_MAX 25 | |
| 53 | −#define RKISP1_CIF_ISP_HIST_BIN_N_MAX 16 | |
| 52 | +#define RKISP1_CIF_ISP_AE_MEAN_MAX_V10 25 | |
| 53 | +#define RKISP1_CIF_ISP_AE_MEAN_MAX_V12 81 | |
| 54 | +#define RKISP1_CIF_ISP_AE_MEAN_MAX RKISP1_CIF_ISP_AE_MEAN_MAX_V12 | |
| 55 | + | |
| 56 | +#define RKISP1_CIF_ISP_HIST_BIN_N_MAX_V10 16 | |
| 57 | +#define RKISP1_CIF_ISP_HIST_BIN_N_MAX_V12 32 | |
| 58 | +#define RKISP1_CIF_ISP_HIST_BIN_N_MAX RKISP1_CIF_ISP_HIST_BIN_N_MAX_V12 | |
| 59 | + | |
| 54 | 60 | #define RKISP1_CIF_ISP_AFM_MAX_WINDOWS 3 |
| 55 | 61 | #define RKISP1_CIF_ISP_DEGAMMA_CURVE_SIZE 17 |
| 56 | 62 | |
| @@ -86,7 +92,9 @@ · 29 unmodified lines | ||
| 86 | 92 | * Gamma out |
| 87 | 93 | */ |
| 88 | 94 | /* Maximum number of color samples supported */ |
| 89 | −#define RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES 17 | |
| 95 | +#define RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V10 17 | |
| 96 | +#define RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V12 34 | |
| 97 | +#define RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V12 | |
| 90 | 98 | |
| 91 | 99 | /* |
| 92 | 100 | * Lens shade correction |
| @@ -102,8 +110,9 @@ · 9 unmodified lines | ||
| 102 | 110 | /* |
| 103 | 111 | * Histogram calculation |
| 104 | 112 | */ |
| 105 | −/* Last 3 values unused. */ | |
| 106 | −#define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE 28 | |
| 113 | +#define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V10 25 | |
| 114 | +#define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12 81 | |
| 115 | +#define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12 | |
| 107 | 116 | |
| 108 | 117 | /* |
| 109 | 118 | * Defect Pixel Cluster Correction |
| @@ -124,6 +133,21 @@ · 14 unmodified lines | ||
| 124 | 133 | #define RKISP1_CIF_ISP_STAT_AFM (1U << 2) |
| 125 | 134 | #define RKISP1_CIF_ISP_STAT_HIST (1U << 3) |
| 126 | 135 | |
| 136 | +/** | |
| 137 | + * enum rkisp1_cif_isp_version - ISP variants | |
| 138 | + * | |
| 139 | + * @RKISP1_V10: used at least in rk3288 and rk3399 | |
| 140 | + * @RKISP1_V11: declared in the original vendor code, but not used | |
| 141 | + * @RKISP1_V12: used at least in rk3326 and px30 | |
| 142 | + * @RKISP1_V13: used at least in rk1808 | |
| 143 | + */ | |
| 144 | +enum rkisp1_cif_isp_version { | |
| 145 | + RKISP1_V10 = 10, | |
| 146 | + RKISP1_V11, | |
| 147 | + RKISP1_V12, | |
| 148 | + RKISP1_V13, | |
| 149 | +}; | |
| 150 | + | |
| 127 | 151 | enum rkisp1_cif_isp_histogram_mode { |
| 128 | 152 | RKISP1_CIF_ISP_HISTOGRAM_MODE_DISABLE, |
| 129 | 153 | RKISP1_CIF_ISP_HISTOGRAM_MODE_RGB_COMBINED, |
| @@ -510,6 +534,15 @@ enum rkisp1_cif_isp_goc_mode { · 380 unmodified lines | ||
| 510 | 534 | * |
| 511 | 535 | * @mode: goc mode (from enum rkisp1_cif_isp_goc_mode) |
| 512 | 536 | * @gamma_y: gamma out curve y-axis for all color components |
| 537 | + * | |
| 538 | + * The number of entries of @gamma_y depends on the hardware revision | |
| 539 | + * as is reported by the hw_revision field of the struct media_device_info | |
| 540 | + * that is returned by ioctl MEDIA_IOC_DEVICE_INFO. | |
| 541 | + * | |
| 542 | + * Versions <= V11 have RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V10 | |
| 543 | + * entries, versions >= V12 have RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V12 | |
| 544 | + * entries. RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES is equal to the maximum | |
| 545 | + * of the two. | |
| 513 | 546 | */ |
| 514 | 547 | struct rkisp1_cif_isp_goc_config { |
| 515 | 548 | __u32 mode; |
| @@ -524,6 +557,15 @@ struct rkisp1_cif_isp_goc_config { · 8 unmodified lines | ||
| 524 | 557 | * skipped |
| 525 | 558 | * @meas_window: coordinates of the measure window |
| 526 | 559 | * @hist_weight: weighting factor for sub-windows |
| 560 | + * | |
| 561 | + * The number of entries of @hist_weight depends on the hardware revision | |
| 562 | + * as is reported by the hw_revision field of the struct media_device_info | |
| 563 | + * that is returned by ioctl MEDIA_IOC_DEVICE_INFO. | |
| 564 | + * | |
| 565 | + * Versions <= V11 have RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V10 | |
| 566 | + * entries, versions >= V12 have RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12 | |
| 567 | + * entries. RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE is equal to the maximum | |
| 568 | + * of the two. | |
| 527 | 569 | */ |
| 528 | 570 | struct rkisp1_cif_isp_hst_config { |
| 529 | 571 | __u32 mode; |
| @@ -811,7 +853,15 @@ struct rkisp1_cif_isp_bls_meas_val { · 281 unmodified lines | ||
| 811 | 853 | * @exp_mean: Mean luminance value of block xx |
| 812 | 854 | * @bls_val: BLS measured values |
| 813 | 855 | * |
| 814 | − * Image is divided into 5x5 blocks. | |
| 856 | + * The number of entries of @exp_mean depends on the hardware revision | |
| 857 | + * as is reported by the hw_revision field of the struct media_device_info | |
| 858 | + * that is returned by ioctl MEDIA_IOC_DEVICE_INFO. | |
| 859 | + * | |
| 860 | + * Versions <= V11 have RKISP1_CIF_ISP_AE_MEAN_MAX_V10 entries, | |
| 861 | + * versions >= V12 have RKISP1_CIF_ISP_AE_MEAN_MAX_V12 entries. | |
| 862 | + * RKISP1_CIF_ISP_AE_MEAN_MAX is equal to the maximum of the two. | |
| 863 | + * | |
| 864 | + * Image is divided into 5x5 blocks on V10 and 9x9 blocks on V12. | |
| 815 | 865 | */ |
| 816 | 866 | struct rkisp1_cif_isp_ae_stat { |
| 817 | 867 | __u8 exp_mean[RKISP1_CIF_ISP_AE_MEAN_MAX]; |
| @@ -844,13 +894,29 @@ struct rkisp1_cif_isp_af_stat { · 26 unmodified lines | ||
| 844 | 894 | /** |
| 845 | 895 | * struct rkisp1_cif_isp_hist_stat - statistics histogram data |
| 846 | 896 | * |
| 847 | − * @hist_bins: measured bin counters | |
| 897 | + * @hist_bins: measured bin counters. Each bin is a 20 bits unsigned fixed point | |
| 898 | + * type. Bits 0-4 are the fractional part and bits 5-19 are the | |
| 899 | + * integer part. | |
| 900 | + * | |
| 901 | + * The window of the measurements area is divided to 5x5 sub-windows for | |
| 902 | + * V10/V11 and to 9x9 sub-windows for V12. The histogram is then computed for | |
| 903 | + * each sub-window independently and the final result is a weighted average of | |
| 904 | + * the histogram measurements on all sub-windows. The window of the | |
| 905 | + * measurements area and the weight of each sub-window are configurable using | |
| 906 | + * struct @rkisp1_cif_isp_hst_config. | |
| 907 | + * | |
| 908 | + * The histogram contains 16 bins in V10/V11 and 32 bins in V12/V13. | |
| 909 | + * | |
| 910 | + * The number of entries of @hist_bins depends on the hardware revision | |
| 911 | + * as is reported by the hw_revision field of the struct media_device_info | |
| 912 | + * that is returned by ioctl MEDIA_IOC_DEVICE_INFO. | |
| 848 | 913 | * |
| 849 | − * Measurement window divided into 25 sub-windows, set | |
| 850 | − * with ISP_HIST_XXX | |
| 914 | + * Versions <= V11 have RKISP1_CIF_ISP_HIST_BIN_N_MAX_V10 entries, | |
| 915 | + * versions >= V12 have RKISP1_CIF_ISP_HIST_BIN_N_MAX_V12 entries. | |
| 916 | + * RKISP1_CIF_ISP_HIST_BIN_N_MAX is equal to the maximum of the two. | |
| 851 | 917 | */ |
| 852 | 918 | struct rkisp1_cif_isp_hist_stat { |
| 853 | − __u16 hist_bins[RKISP1_CIF_ISP_HIST_BIN_N_MAX]; | |
| 919 | + __u32 hist_bins[RKISP1_CIF_ISP_HIST_BIN_N_MAX]; | |
| 854 | 920 | }; |
| 855 | 921 | |
| 856 | 922 | /** |