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/uapi/linux (1 of 6 files). Show all
Unified · Split
| @@ -49,8 +49,14 @@ · 48 unmodified lines | |||
| 49 | #define RKISP1_CIF_ISP_CTK_COEFF_MAX 0x100 | 49 | #define RKISP1_CIF_ISP_CTK_COEFF_MAX 0x100 |
| 50 | #define RKISP1_CIF_ISP_CTK_OFFSET_MAX 0x800 | 50 | #define RKISP1_CIF_ISP_CTK_OFFSET_MAX 0x800 |
| 51 | 51 | ||
| 52 | #define RKISP1_CIF_ISP_AE_MEAN_MAX 25 | 52 | #define RKISP1_CIF_ISP_AE_MEAN_MAX_V10 25 |
| 53 | #define RKISP1_CIF_ISP_HIST_BIN_N_MAX 16 | 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 | #define RKISP1_CIF_ISP_AFM_MAX_WINDOWS 3 | 60 | #define RKISP1_CIF_ISP_AFM_MAX_WINDOWS 3 |
| 55 | #define RKISP1_CIF_ISP_DEGAMMA_CURVE_SIZE 17 | 61 | #define RKISP1_CIF_ISP_DEGAMMA_CURVE_SIZE 17 |
| 56 | 62 | ||
| @@ -86,7 +92,9 @@ · 29 unmodified lines | |||
| 86 | * Gamma out | 92 | * Gamma out |
| 87 | */ | 93 | */ |
| 88 | /* Maximum number of color samples supported */ | 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 | * Lens shade correction | 100 | * Lens shade correction |
| @@ -102,8 +110,9 @@ · 9 unmodified lines | |||
| 102 | /* | 110 | /* |
| 103 | * Histogram calculation | 111 | * Histogram calculation |
| 104 | */ | 112 | */ |
| 105 | /* Last 3 values unused. */ | 113 | #define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V10 25 |
| 106 | #define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE 28 | 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 | * Defect Pixel Cluster Correction | 118 | * Defect Pixel Cluster Correction |
| @@ -124,6 +133,21 @@ · 14 unmodified lines | |||
| 124 | #define RKISP1_CIF_ISP_STAT_AFM (1U << 2) | 133 | #define RKISP1_CIF_ISP_STAT_AFM (1U << 2) |
| 125 | #define RKISP1_CIF_ISP_STAT_HIST (1U << 3) | 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 | enum rkisp1_cif_isp_histogram_mode { | 151 | enum rkisp1_cif_isp_histogram_mode { |
| 128 | RKISP1_CIF_ISP_HISTOGRAM_MODE_DISABLE, | 152 | RKISP1_CIF_ISP_HISTOGRAM_MODE_DISABLE, |
| 129 | RKISP1_CIF_ISP_HISTOGRAM_MODE_RGB_COMBINED, | 153 | RKISP1_CIF_ISP_HISTOGRAM_MODE_RGB_COMBINED, |
| @@ -510,6 +534,15 @@ enum rkisp1_cif_isp_goc_mode { · 380 unmodified lines | |||
| 510 | * | 534 | * |
| 511 | * @mode: goc mode (from enum rkisp1_cif_isp_goc_mode) | 535 | * @mode: goc mode (from enum rkisp1_cif_isp_goc_mode) |
| 512 | * @gamma_y: gamma out curve y-axis for all color components | 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 | struct rkisp1_cif_isp_goc_config { | 547 | struct rkisp1_cif_isp_goc_config { |
| 515 | __u32 mode; | 548 | __u32 mode; |
| @@ -524,6 +557,15 @@ struct rkisp1_cif_isp_goc_config { · 8 unmodified lines | |||
| 524 | * skipped | 557 | * skipped |
| 525 | * @meas_window: coordinates of the measure window | 558 | * @meas_window: coordinates of the measure window |
| 526 | * @hist_weight: weighting factor for sub-windows | 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 | struct rkisp1_cif_isp_hst_config { | 570 | struct rkisp1_cif_isp_hst_config { |
| 529 | __u32 mode; | 571 | __u32 mode; |
| @@ -811,7 +853,15 @@ struct rkisp1_cif_isp_bls_meas_val { · 281 unmodified lines | |||
| 811 | * @exp_mean: Mean luminance value of block xx | 853 | * @exp_mean: Mean luminance value of block xx |
| 812 | * @bls_val: BLS measured values | 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 | struct rkisp1_cif_isp_ae_stat { | 866 | struct rkisp1_cif_isp_ae_stat { |
| 817 | __u8 exp_mean[RKISP1_CIF_ISP_AE_MEAN_MAX]; | 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 | * struct rkisp1_cif_isp_hist_stat - statistics histogram data | 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 | 914 | * Versions <= V11 have RKISP1_CIF_ISP_HIST_BIN_N_MAX_V10 entries, |
| 850 | * with ISP_HIST_XXX | 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 | struct rkisp1_cif_isp_hist_stat { | 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 | /** |