Lines Matching refs:acc

1216  *    DDR address + accelerator's config set index(acc's address).
1728 struct imgu_abi_acc_param *acc)
1738 memset(acc, 0, sizeof(*acc));
1742 if (imgu_css_osys_calc(css, pipe, stripes, &acc->osys, &scaler_luma,
1743 &scaler_chroma, acc->stripe.block_stripes))
1757 acc->stripe.num_of_stripes = stripes;
1758 acc->stripe.input_frame.width =
1760 acc->stripe.input_frame.height =
1762 acc->stripe.input_frame.bayer_order =
1766 acc->stripe.bds_out_stripes[i].height =
1768 acc->stripe.bds_out_stripes[0].offset = 0;
1770 acc->stripe.bds_out_stripes[0].width =
1774 acc->stripe.bds_out_stripes[0].width =
1775 acc->stripe.bds_out_stripes[1].width =
1784 acc->stripe.bds_out_stripes[0].width += f;
1787 acc->stripe.bds_out_stripes[0].width += f;
1788 acc->stripe.bds_out_stripes[1].width += f;
1791 acc->stripe.bds_out_stripes[1].offset =
1792 acc->stripe.bds_out_stripes[0].width - 2 * f;
1795 acc->stripe.effective_stripes[0].height =
1797 acc->stripe.effective_stripes[0].offset = 0;
1798 acc->stripe.bds_out_stripes_no_overlap[0].height =
1800 acc->stripe.bds_out_stripes_no_overlap[0].offset = 0;
1801 acc->stripe.output_stripes[0].height =
1803 acc->stripe.output_stripes[0].offset = 0;
1805 acc->stripe.down_scaled_stripes[0].width =
1807 acc->stripe.down_scaled_stripes[0].height =
1809 acc->stripe.down_scaled_stripes[0].offset = 0;
1811 acc->stripe.effective_stripes[0].width =
1813 acc->stripe.bds_out_stripes_no_overlap[0].width =
1816 acc->stripe.output_stripes[0].width =
1823 acc->stripe.down_scaled_stripes[0] =
1824 acc->stripe.bds_out_stripes[0];
1825 acc->stripe.down_scaled_stripes[1] =
1826 acc->stripe.bds_out_stripes[1];
1828 acc->stripe.down_scaled_stripes[1].width +=
1832 acc->stripe.effective_stripes[0].width = bds_ds *
1833 acc->stripe.down_scaled_stripes[0].width /
1835 acc->stripe.effective_stripes[1].width = bds_ds *
1836 acc->stripe.down_scaled_stripes[1].width /
1838 acc->stripe.effective_stripes[1].height =
1840 acc->stripe.effective_stripes[1].offset = bds_ds *
1841 acc->stripe.down_scaled_stripes[1].offset /
1844 acc->stripe.bds_out_stripes_no_overlap[0].width =
1845 acc->stripe.bds_out_stripes_no_overlap[1].offset =
1847 acc->stripe.bds_out_stripes_no_overlap[1].width =
1850 acc->stripe.bds_out_stripes_no_overlap[1].height =
1853 acc->stripe.output_stripes[0].width =
1854 acc->stripe.down_scaled_stripes[0].width - f;
1855 acc->stripe.output_stripes[1].width =
1856 acc->stripe.down_scaled_stripes[1].width - f;
1857 acc->stripe.output_stripes[1].height =
1859 acc->stripe.output_stripes[1].offset =
1860 acc->stripe.output_stripes[0].width;
1863 acc->stripe.output_system_in_frame_width =
1865 acc->stripe.output_system_in_frame_height =
1868 acc->stripe.effective_frame_width =
1870 acc->stripe.bds_frame_width = css_pipe->rect[IPU3_CSS_RECT_BDS].width;
1871 acc->stripe.out_frame_width =
1873 acc->stripe.out_frame_height =
1875 acc->stripe.gdc_in_buffer_width =
1878 acc->stripe.gdc_in_buffer_height =
1880 acc->stripe.gdc_in_buffer_offset_x = IMGU_GDC_BUF_X;
1881 acc->stripe.gdc_in_buffer_offset_y = IMGU_GDC_BUF_Y;
1882 acc->stripe.display_frame_width =
1884 acc->stripe.display_frame_height =
1886 acc->stripe.bds_aligned_frame_width =
1891 acc->stripe.half_overlap_vectors =
1894 acc->stripe.half_overlap_vectors = 0;
1900 struct imgu_abi_acc_param *acc,
1907 acc->dvs_stat.operations_data.process_lines_data[0].lines =
1909 acc->dvs_stat.operations_data.process_lines_data[0].cfg_set = 0;
1910 acc->dvs_stat.operations_data.ops[0].op_type =
1912 acc->dvs_stat.operations_data.ops[0].op_indicator =
1915 acc->dvs_stat.cfg.grd_config[i].enable = 0;
1919 struct imgu_abi_acc_param *acc,
1924 acc->bds.per_stripe.aligned_data[i].data.crop.hor_crop_en = 0;
1925 acc->bds.per_stripe.aligned_data[i].data.crop.hor_crop_start = 0;
1926 acc->bds.per_stripe.aligned_data[i].data.crop.hor_crop_end = 0;
1927 acc->bds.per_stripe.aligned_data[i].data.hor_ctrl0 =
1928 acc->bds.hor.hor_ctrl0;
1929 acc->bds.per_stripe.aligned_data[i].data.hor_ctrl0.out_frame_width =
1930 acc->stripe.down_scaled_stripes[i].width;
1931 acc->bds.per_stripe.aligned_data[i].data.ver_ctrl1.out_frame_width =
1932 acc->stripe.down_scaled_stripes[i].width;
1933 acc->bds.per_stripe.aligned_data[i].data.ver_ctrl1.out_frame_height =
1938 * Configure `acc' parameters. `acc_old' contains the old values (or is NULL)
1945 struct imgu_abi_acc_param *acc,
1954 acc->stripe.bds_aligned_frame_width;
1966 if (imgu_css_cfg_acc_stripe(css, pipe, acc))
1983 acc->input_feeder.data.row_stride = pixm->plane_fmt[0].bytesperline;
1984 acc->input_feeder.data.start_row_address =
1986 ofs_y * acc->input_feeder.data.row_stride;
1987 acc->input_feeder.data.start_pixel = ofs_x % IMGU_PIXELS_PER_WORD;
1989 acc->input_feeder.data_per_stripe.input_feeder_data[0].data =
1990 acc->input_feeder.data;
1992 ofs_x += acc->stripe.effective_stripes[1].offset;
1995 &acc->input_feeder.data_per_stripe.input_feeder_data[1].data;
1996 feeder_data->row_stride = acc->input_feeder.data.row_stride;
1999 ofs_y * acc->input_feeder.data.row_stride;
2014 acc->bnr = acc_user->bnr;
2017 acc->bnr = acc_old->bnr;
2020 acc->bnr = imgu_css_bnr_defaults;
2023 acc->bnr.column_size = tnr_frame_width;
2029 acc->green_disparity = acc_user->green_disparity;
2032 acc->green_disparity = acc_old->green_disparity;
2035 memset(&acc->green_disparity, 0, sizeof(acc->green_disparity));
2042 acc->dm = acc_user->dm;
2045 acc->dm = acc_old->dm;
2048 acc->dm = imgu_css_dm_defaults;
2051 acc->dm.frame_width = tnr_frame_width;
2057 acc->ccm = acc_user->ccm;
2060 acc->ccm = acc_old->ccm;
2063 acc->ccm = imgu_css_ccm_defaults;
2070 acc->gamma = acc_user->gamma;
2073 acc->gamma = acc_old->gamma;
2076 acc->gamma.gc_ctrl.enable = 1;
2077 acc->gamma.gc_lut = imgu_css_gamma_lut;
2084 acc->csc = acc_user->csc;
2087 acc->csc = acc_old->csc;
2090 acc->csc = imgu_css_csc_defaults;
2097 acc->cds = acc_user->cds;
2100 acc->cds = acc_old->cds;
2103 acc->cds = imgu_css_cds_defaults;
2110 acc->shd.shd = acc_user->shd.shd;
2111 acc->shd.shd_lut = acc_user->shd.shd_lut;
2114 acc->shd.shd = acc_old->shd.shd;
2115 acc->shd.shd_lut = acc_old->shd.shd_lut;
2118 acc->shd.shd = imgu_css_shd_defaults;
2119 memset(&acc->shd.shd_lut, 0, sizeof(acc->shd.shd_lut));
2122 if (acc->shd.shd.grid.width <= 0)
2125 acc->shd.shd.grid.grid_height_per_slice =
2126 IMGU_ABI_SHD_MAX_CELLS_PER_SET / acc->shd.shd.grid.width;
2128 if (acc->shd.shd.grid.grid_height_per_slice <= 0)
2131 acc->shd.shd.general.init_set_vrt_offst_ul =
2132 (-acc->shd.shd.grid.y_start >>
2133 acc->shd.shd.grid.block_height_log2) %
2134 acc->shd.shd.grid.grid_height_per_slice;
2136 if (imgu_css_shd_ops_calc(&acc->shd.shd_ops, &acc->shd.shd.grid,
2141 imgu_css_cfg_acc_dvs(css, acc, pipe);
2147 acc->iefd = acc_user->iefd;
2150 acc->iefd = acc_old->iefd;
2153 acc->iefd = imgu_css_iefd_defaults;
2160 acc->yds_c0 = acc_user->yds_c0;
2163 acc->yds_c0 = acc_old->yds_c0;
2166 acc->yds_c0 = imgu_css_yds_defaults;
2173 acc->chnr_c0 = acc_user->chnr_c0;
2176 acc->chnr_c0 = acc_old->chnr_c0;
2179 acc->chnr_c0 = imgu_css_chnr_defaults;
2186 acc->y_ee_nr = acc_user->y_ee_nr;
2189 acc->y_ee_nr = acc_old->y_ee_nr;
2192 acc->y_ee_nr = imgu_css_y_ee_nr_defaults;
2199 acc->yds = acc_user->yds;
2202 acc->yds = acc_old->yds;
2205 acc->yds = imgu_css_yds_defaults;
2212 acc->chnr = acc_user->chnr;
2215 acc->chnr = acc_old->chnr;
2218 acc->chnr = imgu_css_chnr_defaults;
2224 acc->ytm.entries[i] = i * 32;
2225 acc->ytm.enable = 0; /* Always disabled on IPU3 */
2231 acc->yds2 = acc_user->yds2;
2234 acc->yds2 = acc_old->yds2;
2237 acc->yds2 = imgu_css_yds_defaults;
2244 acc->tcc = acc_user->tcc;
2247 acc->tcc = acc_old->tcc;
2250 memset(&acc->tcc, 0, sizeof(acc->tcc));
2252 acc->tcc.gen_control.en = 1;
2253 acc->tcc.gen_control.blend_shift = 3;
2254 acc->tcc.gen_control.gain_according_to_y_only = 1;
2255 acc->tcc.gen_control.gamma = 8;
2256 acc->tcc.gen_control.delta = 0;
2259 acc->tcc.macc_table.entries[i].a = 1024;
2260 acc->tcc.macc_table.entries[i].b = 0;
2261 acc->tcc.macc_table.entries[i].c = 0;
2262 acc->tcc.macc_table.entries[i].d = 1024;
2265 acc->tcc.inv_y_lut.entries[6] = 1023;
2267 acc->tcc.inv_y_lut.entries[i] = 1024 >> (i - 6);
2269 acc->tcc.gain_pcwl = imgu_css_tcc_gain_pcwl_lut;
2270 acc->tcc.r_sqr_lut = imgu_css_tcc_r_sqr_lut;
2279 memset(&acc->dpc, 0, sizeof(acc->dpc));
2290 acc->bds.hor.hor_ctrl1.hor_crop_en = 0;
2291 acc->bds.hor.hor_ctrl1.hor_crop_start = 0;
2292 acc->bds.hor.hor_ctrl1.hor_crop_end = 0;
2293 acc->bds.hor.hor_ctrl0.sample_patrn_length =
2295 acc->bds.hor.hor_ctrl0.hor_ds_en = cfg_bds->hor_ds_en;
2296 acc->bds.hor.hor_ctrl0.min_clip_val = IMGU_BDS_MIN_CLIP_VAL;
2297 acc->bds.hor.hor_ctrl0.max_clip_val = IMGU_BDS_MAX_CLIP_VAL;
2298 acc->bds.hor.hor_ctrl0.out_frame_width =
2300 acc->bds.hor.hor_ptrn_arr = cfg_bds->ptrn_arr;
2301 acc->bds.hor.hor_phase_arr = cfg_bds->hor_phase_arr;
2302 acc->bds.hor.hor_ctrl2.input_frame_height =
2304 acc->bds.ver.ver_ctrl0.min_clip_val = IMGU_BDS_MIN_CLIP_VAL;
2305 acc->bds.ver.ver_ctrl0.max_clip_val = IMGU_BDS_MAX_CLIP_VAL;
2306 acc->bds.ver.ver_ctrl0.sample_patrn_length =
2308 acc->bds.ver.ver_ctrl0.ver_ds_en = cfg_bds->ver_ds_en;
2309 acc->bds.ver.ver_ptrn_arr = cfg_bds->ptrn_arr;
2310 acc->bds.ver.ver_phase_arr = cfg_bds->ver_phase_arr;
2311 acc->bds.ver.ver_ctrl1.out_frame_width =
2313 acc->bds.ver.ver_ctrl1.out_frame_height =
2316 acc_bds_per_stripe_data(css, acc, i, pipe);
2318 acc->bds.enabled = cfg_bds->hor_ds_en || cfg_bds->ver_ds_en;
2324 acc->anr.transform = acc_user->anr.transform;
2325 acc->anr.stitch.anr_stitch_en =
2327 memcpy(acc->anr.stitch.pyramid, acc_user->anr.stitch.pyramid,
2328 sizeof(acc->anr.stitch.pyramid));
2331 acc->anr.transform = acc_old->anr.transform;
2332 acc->anr.stitch.anr_stitch_en =
2334 memcpy(acc->anr.stitch.pyramid, acc_old->anr.stitch.pyramid,
2335 sizeof(acc->anr.stitch.pyramid));
2338 acc->anr = imgu_css_anr_defaults;
2342 acc->anr.search.enable = 1;
2343 acc->anr.transform.enable = 1;
2344 acc->anr.tile2strm.enable = 1;
2345 acc->anr.tile2strm.frame_width =
2347 acc->anr.search.frame_width = acc->anr.tile2strm.frame_width;
2348 acc->anr.stitch.frame_width = acc->anr.tile2strm.frame_width;
2349 acc->anr.tile2strm.frame_height = css_pipe->rect[IPU3_CSS_RECT_BDS].height;
2350 acc->anr.search.frame_height = acc->anr.tile2strm.frame_height;
2351 acc->anr.stitch.frame_height = acc->anr.tile2strm.frame_height;
2356 if (acc->anr.transform.xreset + width > IPU3_UAPI_ANR_MAX_RESET)
2357 acc->anr.transform.xreset = IPU3_UAPI_ANR_MAX_RESET - width;
2358 if (acc->anr.transform.xreset < IPU3_UAPI_ANR_MIN_RESET)
2359 acc->anr.transform.xreset = IPU3_UAPI_ANR_MIN_RESET;
2361 if (acc->anr.transform.yreset + height > IPU3_UAPI_ANR_MAX_RESET)
2362 acc->anr.transform.yreset = IPU3_UAPI_ANR_MAX_RESET - height;
2363 if (acc->anr.transform.yreset < IPU3_UAPI_ANR_MIN_RESET)
2364 acc->anr.transform.yreset = IPU3_UAPI_ANR_MIN_RESET;
2370 acc->awb_fr.config = acc_user->awb_fr;
2373 acc->awb_fr.config = acc_old->awb_fr.config;
2376 acc->awb_fr.config = imgu_css_awb_fr_defaults;
2379 imgu_css_grid_end_calc(&acc->awb_fr.config.grid_cfg);
2381 if (acc->awb_fr.config.grid_cfg.width <= 0)
2384 acc->awb_fr.config.grid_cfg.height_per_slice =
2386 acc->awb_fr.config.grid_cfg.width;
2389 acc->awb_fr.stripes[i] = acc->awb_fr.config;
2391 if (acc->awb_fr.config.grid_cfg.x_start >=
2392 acc->stripe.down_scaled_stripes[1].offset + min_overlap) {
2394 acc->awb_fr.stripes[0].grid_cfg.y_start &=
2396 } else if (acc->awb_fr.config.grid_cfg.x_end <=
2397 acc->stripe.bds_out_stripes[0].width - min_overlap) {
2399 acc->awb_fr.stripes[1].grid_cfg.y_start &=
2405 acc->awb_fr.stripes[0].grid_cfg.width =
2406 (acc->stripe.bds_out_stripes[0].width - min_overlap -
2407 acc->awb_fr.config.grid_cfg.x_start + 1) >>
2408 acc->awb_fr.config.grid_cfg.block_width_log2;
2409 acc->awb_fr.stripes[1].grid_cfg.width =
2410 acc->awb_fr.config.grid_cfg.width -
2411 acc->awb_fr.stripes[0].grid_cfg.width;
2413 b_w_log2 = acc->awb_fr.stripes[0].grid_cfg.block_width_log2;
2414 end = imgu_css_grid_end(acc->awb_fr.stripes[0].grid_cfg.x_start,
2415 acc->awb_fr.stripes[0].grid_cfg.width,
2417 acc->awb_fr.stripes[0].grid_cfg.x_end = end;
2419 acc->awb_fr.stripes[1].grid_cfg.x_start =
2420 (acc->awb_fr.stripes[0].grid_cfg.x_end + 1 -
2421 acc->stripe.down_scaled_stripes[1].offset) &
2423 b_w_log2 = acc->awb_fr.stripes[1].grid_cfg.block_width_log2;
2424 end = imgu_css_grid_end(acc->awb_fr.stripes[1].grid_cfg.x_start,
2425 acc->awb_fr.stripes[1].grid_cfg.width,
2427 acc->awb_fr.stripes[1].grid_cfg.x_end = end;
2436 acc->awb_fr.stripes[i].grid_cfg.height_per_slice = 1;
2438 if (imgu_css_awb_fr_ops_calc(css, pipe, &acc->awb_fr))
2445 acc->ae.grid_cfg = acc_user->ae.grid_cfg;
2446 acc->ae.ae_ccm = acc_user->ae.ae_ccm;
2448 acc->ae.weights[i] = acc_user->ae.weights[i];
2451 acc->ae.grid_cfg = acc_old->ae.grid_cfg;
2452 acc->ae.ae_ccm = acc_old->ae.ae_ccm;
2454 acc->ae.weights[i] = acc_old->ae.weights[i];
2460 acc->ae.grid_cfg = imgu_css_ae_grid_defaults;
2461 acc->ae.ae_ccm = imgu_css_ae_ccm_defaults;
2463 acc->ae.weights[i] = weight_def;
2466 b_w_log2 = acc->ae.grid_cfg.block_width_log2;
2467 acc->ae.grid_cfg.x_end = imgu_css_grid_end(acc->ae.grid_cfg.x_start,
2468 acc->ae.grid_cfg.width,
2470 b_w_log2 = acc->ae.grid_cfg.block_height_log2;
2471 acc->ae.grid_cfg.y_end = imgu_css_grid_end(acc->ae.grid_cfg.y_start,
2472 acc->ae.grid_cfg.height,
2476 acc->ae.stripes[i].grid = acc->ae.grid_cfg;
2478 if (acc->ae.grid_cfg.x_start >=
2479 acc->stripe.down_scaled_stripes[1].offset) {
2481 acc->ae.stripes[0].grid.ae_en = 0;
2482 } else if (acc->ae.grid_cfg.x_end <=
2483 acc->stripe.bds_out_stripes[0].width) {
2485 acc->ae.stripes[1].grid.ae_en = 0;
2490 acc->ae.stripes[0].grid.width =
2491 (acc->stripe.bds_out_stripes[0].width -
2492 acc->ae.grid_cfg.x_start + 1) >>
2493 acc->ae.grid_cfg.block_width_log2;
2495 acc->ae.stripes[1].grid.width =
2496 acc->ae.grid_cfg.width - acc->ae.stripes[0].grid.width;
2498 b_w_log2 = acc->ae.stripes[0].grid.block_width_log2;
2499 acc->ae.stripes[0].grid.x_end =
2500 imgu_css_grid_end(acc->ae.stripes[0].grid.x_start,
2501 acc->ae.stripes[0].grid.width,
2504 acc->ae.stripes[1].grid.x_start =
2505 (acc->ae.stripes[0].grid.x_end + 1 -
2506 acc->stripe.down_scaled_stripes[1].offset) &
2508 b_w_log2 = acc->ae.stripes[1].grid.block_width_log2;
2509 acc->ae.stripes[1].grid.x_end =
2510 imgu_css_grid_end(acc->ae.stripes[1].grid.x_start,
2511 acc->ae.stripes[1].grid.width,
2519 acc->af.config.filter_config = acc_user->af.filter_config;
2520 acc->af.config.grid_cfg = acc_user->af.grid_cfg;
2523 acc->af.config = acc_old->af.config;
2526 acc->af.config.filter_config =
2528 acc->af.config.grid_cfg = imgu_css_af_defaults.grid_cfg;
2531 imgu_css_grid_end_calc(&acc->af.config.grid_cfg);
2533 if (acc->af.config.grid_cfg.width <= 0)
2536 acc->af.config.grid_cfg.height_per_slice =
2537 IMGU_ABI_AF_MAX_CELLS_PER_SET / acc->af.config.grid_cfg.width;
2538 acc->af.config.frame_size.width =
2540 acc->af.config.frame_size.height =
2543 if (acc->stripe.bds_out_stripes[0].width <= min_overlap)
2547 acc->af.stripes[i].grid_cfg = acc->af.config.grid_cfg;
2548 acc->af.stripes[i].frame_size.height =
2550 acc->af.stripes[i].frame_size.width =
2551 acc->stripe.bds_out_stripes[i].width;
2554 if (acc->af.config.grid_cfg.x_start >=
2555 acc->stripe.down_scaled_stripes[1].offset + min_overlap) {
2557 acc->af.stripes[0].grid_cfg.y_start &=
2559 acc->af.stripes[1].grid_cfg.x_start =
2560 (acc->af.stripes[1].grid_cfg.x_start -
2561 acc->stripe.down_scaled_stripes[1].offset) &
2563 b_w_log2 = acc->af.stripes[1].grid_cfg.block_width_log2;
2564 acc->af.stripes[1].grid_cfg.x_end =
2565 imgu_css_grid_end(acc->af.stripes[1].grid_cfg.x_start,
2566 acc->af.stripes[1].grid_cfg.width,
2568 } else if (acc->af.config.grid_cfg.x_end <=
2569 acc->stripe.bds_out_stripes[0].width - min_overlap) {
2571 acc->af.stripes[1].grid_cfg.y_start &=
2576 acc->af.stripes[0].grid_cfg.width =
2577 (acc->stripe.bds_out_stripes[0].width - min_overlap -
2578 acc->af.config.grid_cfg.x_start + 1) >>
2579 acc->af.config.grid_cfg.block_width_log2;
2580 acc->af.stripes[1].grid_cfg.width =
2581 acc->af.config.grid_cfg.width -
2582 acc->af.stripes[0].grid_cfg.width;
2584 b_w_log2 = acc->af.stripes[0].grid_cfg.block_width_log2;
2585 acc->af.stripes[0].grid_cfg.x_end =
2586 imgu_css_grid_end(acc->af.stripes[0].grid_cfg.x_start,
2587 acc->af.stripes[0].grid_cfg.width,
2590 acc->af.stripes[1].grid_cfg.x_start =
2591 (acc->af.stripes[0].grid_cfg.x_end + 1 -
2592 acc->stripe.down_scaled_stripes[1].offset) &
2595 b_w_log2 = acc->af.stripes[1].grid_cfg.block_width_log2;
2596 acc->af.stripes[1].grid_cfg.x_end =
2597 imgu_css_grid_end(acc->af.stripes[1].grid_cfg.x_start,
2598 acc->af.stripes[1].grid_cfg.width,
2607 acc->af.stripes[i].grid_cfg.height_per_slice = 1;
2609 if (imgu_css_af_ops_calc(css, pipe, &acc->af))
2616 acc->awb.config = acc_user->awb.config;
2619 acc->awb.config = acc_old->awb.config;
2622 acc->awb.config = imgu_css_awb_defaults;
2625 if (acc->awb.config.grid.width <= 0)
2628 acc->awb.config.grid.height_per_slice =
2629 IMGU_ABI_AWB_MAX_CELLS_PER_SET / acc->awb.config.grid.width,
2630 imgu_css_grid_end_calc(&acc->awb.config.grid);
2633 acc->awb.stripes[i] = acc->awb.config;
2635 if (acc->awb.config.grid.x_start >=
2636 acc->stripe.down_scaled_stripes[1].offset + min_overlap) {
2638 acc->awb.stripes[0].rgbs_thr_b &= ~IPU3_UAPI_AWB_RGBS_THR_B_EN;
2640 acc->awb.stripes[1].grid.x_start =
2641 (acc->awb.stripes[1].grid.x_start -
2642 acc->stripe.down_scaled_stripes[1].offset) &
2645 b_w_log2 = acc->awb.stripes[1].grid.block_width_log2;
2646 acc->awb.stripes[1].grid.x_end =
2647 imgu_css_grid_end(acc->awb.stripes[1].grid.x_start,
2648 acc->awb.stripes[1].grid.width,
2650 } else if (acc->awb.config.grid.x_end <=
2651 acc->stripe.bds_out_stripes[0].width - min_overlap) {
2653 acc->awb.stripes[1].rgbs_thr_b &= ~IPU3_UAPI_AWB_RGBS_THR_B_EN;
2657 acc->awb.stripes[0].grid.width =
2658 (acc->stripe.bds_out_stripes[0].width -
2659 acc->awb.config.grid.x_start + 1) >>
2660 acc->awb.config.grid.block_width_log2;
2661 acc->awb.stripes[1].grid.width = acc->awb.config.grid.width -
2662 acc->awb.stripes[0].grid.width;
2664 b_w_log2 = acc->awb.stripes[0].grid.block_width_log2;
2665 acc->awb.stripes[0].grid.x_end =
2666 imgu_css_grid_end(acc->awb.stripes[0].grid.x_start,
2667 acc->awb.stripes[0].grid.width,
2670 acc->awb.stripes[1].grid.x_start =
2671 (acc->awb.stripes[0].grid.x_end + 1 -
2672 acc->stripe.down_scaled_stripes[1].offset) &
2675 b_w_log2 = acc->awb.stripes[1].grid.block_width_log2;
2676 acc->awb.stripes[1].grid.x_end =
2677 imgu_css_grid_end(acc->awb.stripes[1].grid.x_start,
2678 acc->awb.stripes[1].grid.width,
2687 acc->awb.stripes[i].grid.height_per_slice = 1;
2689 if (imgu_css_awb_ops_calc(css, pipe, &acc->awb))