| .. | .. |
|---|
| 33 | 33 | |
|---|
| 34 | 34 | #define ISP2X_RAWAF_INT_LINE0_EN BIT(27) |
|---|
| 35 | 35 | |
|---|
| 36 | +static void isp_module_done(struct rkisp_isp_stats_vdev *stats_vdev, |
|---|
| 37 | + u32 reg, u32 value) |
|---|
| 38 | +{ |
|---|
| 39 | + void __iomem *base = stats_vdev->dev->hw_dev->base_addr; |
|---|
| 40 | + |
|---|
| 41 | + writel(value, base + reg); |
|---|
| 42 | +} |
|---|
| 43 | + |
|---|
| 36 | 44 | static int |
|---|
| 37 | 45 | rkisp_stats_get_rawawb_meas_reg(struct rkisp_isp_stats_vdev *stats_vdev, |
|---|
| 38 | 46 | struct rkisp_isp21_stat_buffer *pbuf) |
|---|
| .. | .. |
|---|
| 789 | 797 | |
|---|
| 790 | 798 | value = rkisp_read(stats_vdev->dev, ISP21_RAWAWB_CTRL, true); |
|---|
| 791 | 799 | if (value & ISP2X_3A_MEAS_DONE) |
|---|
| 792 | | - rkisp_write(stats_vdev->dev, ISP21_RAWAWB_CTRL, value, true); |
|---|
| 800 | + isp_module_done(stats_vdev, ISP21_RAWAWB_CTRL, value); |
|---|
| 793 | 801 | return 0; |
|---|
| 794 | 802 | } |
|---|
| 795 | 803 | |
|---|
| .. | .. |
|---|
| 800 | 808 | |
|---|
| 801 | 809 | value = rkisp_read(stats_vdev->dev, ISP_RAWAF_CTRL, true); |
|---|
| 802 | 810 | if (value & ISP2X_3A_MEAS_DONE) { |
|---|
| 803 | | - rkisp_write(stats_vdev->dev, ISP_RAWAF_CTRL, value, true); |
|---|
| 804 | 811 | rkisp_write(stats_vdev->dev, ISP_RAWAF_INT_STATE, 0, true); |
|---|
| 812 | + isp_module_done(stats_vdev, ISP_RAWAF_CTRL, value); |
|---|
| 805 | 813 | } |
|---|
| 806 | 814 | return 0; |
|---|
| 807 | 815 | } |
|---|
| .. | .. |
|---|
| 828 | 836 | |
|---|
| 829 | 837 | value = rkisp_read(stats_vdev->dev, addr + RAWAE_BIG_CTRL, true); |
|---|
| 830 | 838 | if (value & ISP2X_3A_MEAS_DONE) |
|---|
| 831 | | - rkisp_write(stats_vdev->dev, addr + RAWAE_BIG_CTRL, value, true); |
|---|
| 839 | + isp_module_done(stats_vdev, addr + RAWAE_BIG_CTRL, value); |
|---|
| 832 | 840 | return 0; |
|---|
| 833 | 841 | } |
|---|
| 834 | 842 | |
|---|
| .. | .. |
|---|
| 854 | 862 | |
|---|
| 855 | 863 | value = rkisp_read(stats_vdev->dev, addr + ISP_RAWHIST_BIG_CTRL, true); |
|---|
| 856 | 864 | if (value & ISP2X_3A_MEAS_DONE) |
|---|
| 857 | | - rkisp_write(stats_vdev->dev, addr + ISP_RAWHIST_BIG_CTRL, value, true); |
|---|
| 865 | + isp_module_done(stats_vdev, addr + ISP_RAWHIST_BIG_CTRL, value); |
|---|
| 858 | 866 | return 0; |
|---|
| 859 | 867 | } |
|---|
| 860 | 868 | |
|---|
| .. | .. |
|---|
| 901 | 909 | |
|---|
| 902 | 910 | value = rkisp_read(stats_vdev->dev, ISP_RAWAE_LITE_CTRL, true); |
|---|
| 903 | 911 | if (value & ISP2X_3A_MEAS_DONE) |
|---|
| 904 | | - rkisp_write(stats_vdev->dev, ISP_RAWAE_LITE_CTRL, value, true); |
|---|
| 912 | + isp_module_done(stats_vdev, ISP_RAWAE_LITE_CTRL, value); |
|---|
| 905 | 913 | return 0; |
|---|
| 906 | 914 | } |
|---|
| 907 | 915 | |
|---|
| .. | .. |
|---|
| 912 | 920 | |
|---|
| 913 | 921 | value = rkisp_read(stats_vdev->dev, ISP_RAWHIST_LITE_CTRL, true); |
|---|
| 914 | 922 | if (value & ISP2X_3A_MEAS_DONE) |
|---|
| 915 | | - rkisp_write(stats_vdev->dev, ISP_RAWHIST_LITE_CTRL, value, true); |
|---|
| 923 | + isp_module_done(stats_vdev, ISP_RAWHIST_LITE_CTRL, value); |
|---|
| 916 | 924 | return 0; |
|---|
| 917 | 925 | } |
|---|
| 918 | 926 | |
|---|
| .. | .. |
|---|
| 940 | 948 | struct rkisp_isp21_stat_buffer *cur_stat_buf = NULL; |
|---|
| 941 | 949 | struct rkisp_stats_v21_ops *ops = |
|---|
| 942 | 950 | (struct rkisp_stats_v21_ops *)stats_vdev->priv_ops; |
|---|
| 951 | + struct rkisp_isp_params_vdev *params_vdev = &stats_vdev->dev->params_vdev; |
|---|
| 943 | 952 | int ret = 0; |
|---|
| 944 | 953 | |
|---|
| 945 | 954 | cur_frame_id = meas_work->frame_id; |
|---|
| .. | .. |
|---|
| 958 | 967 | cur_stat_buf = |
|---|
| 959 | 968 | (struct rkisp_isp21_stat_buffer *)(cur_buf->vaddr[0]); |
|---|
| 960 | 969 | cur_stat_buf->frame_id = cur_frame_id; |
|---|
| 970 | + cur_stat_buf->params_id = params_vdev->cur_frame_id; |
|---|
| 961 | 971 | } |
|---|
| 962 | 972 | |
|---|
| 963 | 973 | if (meas_work->isp_ris & ISP2X_AFM_SUM_OF) |
|---|