summaryrefslogtreecommitdiffstats
path: root/drivers/staging/media/atomisp/pci/atomisp2/css2400/isp/kernels/vf/vf_1.0/ia_css_vf.host.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/media/atomisp/pci/atomisp2/css2400/isp/kernels/vf/vf_1.0/ia_css_vf.host.c')
-rw-r--r--drivers/staging/media/atomisp/pci/atomisp2/css2400/isp/kernels/vf/vf_1.0/ia_css_vf.host.c140
1 files changed, 0 insertions, 140 deletions
diff --git a/drivers/staging/media/atomisp/pci/atomisp2/css2400/isp/kernels/vf/vf_1.0/ia_css_vf.host.c b/drivers/staging/media/atomisp/pci/atomisp2/css2400/isp/kernels/vf/vf_1.0/ia_css_vf.host.c
deleted file mode 100644
index c2076e412410..000000000000
--- a/drivers/staging/media/atomisp/pci/atomisp2/css2400/isp/kernels/vf/vf_1.0/ia_css_vf.host.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Support for Intel Camera Imaging ISP subsystem.
- * Copyright (c) 2015, Intel Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- */
-
-#include "ia_css_vf.host.h"
-#include <assert_support.h>
-#include <ia_css_err.h>
-#include <ia_css_frame.h>
-#include <ia_css_frame_public.h>
-#include <ia_css_pipeline.h>
-#define IA_CSS_INCLUDE_CONFIGURATIONS
-#include "ia_css_isp_configs.h"
-
-#include "isp.h"
-
-void
-ia_css_vf_config(
- struct sh_css_isp_vf_isp_config *to,
- const struct ia_css_vf_configuration *from,
- unsigned size)
-{
- unsigned elems_a = ISP_VEC_NELEMS;
-
- (void)size;
- to->vf_downscale_bits = from->vf_downscale_bits;
- to->enable = from->info != NULL;
-
- if (from->info) {
- ia_css_frame_info_to_frame_sp_info(&to->info, from->info);
- ia_css_dma_configure_from_info(&to->dma.port_b, from->info);
- to->dma.width_a_over_b = elems_a / to->dma.port_b.elems;
-
- /* Assume divisiblity here, may need to generalize to fixed point. */
- assert (elems_a % to->dma.port_b.elems == 0);
- }
-}
-
-/* compute the log2 of the downscale factor needed to get closest
- * to the requested viewfinder resolution on the upper side. The output cannot
- * be smaller than the requested viewfinder resolution.
- */
-enum ia_css_err
-sh_css_vf_downscale_log2(
- const struct ia_css_frame_info *out_info,
- const struct ia_css_frame_info *vf_info,
- unsigned int *downscale_log2)
-{
- unsigned int ds_log2 = 0;
- unsigned int out_width;
-
- if ((out_info == NULL) | (vf_info == NULL))
- return IA_CSS_ERR_INVALID_ARGUMENTS;
-
- out_width = out_info->res.width;
-
- if (out_width == 0)
- return IA_CSS_ERR_INVALID_ARGUMENTS;
-
- /* downscale until width smaller than the viewfinder width. We don't
- * test for the height since the vmem buffers only put restrictions on
- * the width of a line, not on the number of lines in a frame.
- */
- while (out_width >= vf_info->res.width) {
- ds_log2++;
- out_width /= 2;
- }
- /* now width is smaller, so we go up one step */
- if ((ds_log2 > 0) && (out_width < ia_css_binary_max_vf_width()))
- ds_log2--;
- /* TODO: use actual max input resolution of vf_pp binary */
- if ((out_info->res.width >> ds_log2) >= 2 * ia_css_binary_max_vf_width())
- return IA_CSS_ERR_INVALID_ARGUMENTS;
- *downscale_log2 = ds_log2;
- return IA_CSS_SUCCESS;
-}
-
-static enum ia_css_err
-configure_kernel(
- const struct ia_css_binary_info *info,
- const struct ia_css_frame_info *out_info,
- const struct ia_css_frame_info *vf_info,
- unsigned int *downscale_log2,
- struct ia_css_vf_configuration *config)
-{
- enum ia_css_err err;
- unsigned vf_log_ds = 0;
-
- /* First compute value */
- if (vf_info) {
- err = sh_css_vf_downscale_log2(out_info, vf_info, &vf_log_ds);
- if (err != IA_CSS_SUCCESS)
- return err;
- }
- vf_log_ds = min(vf_log_ds, info->vf_dec.max_log_downscale);
- *downscale_log2 = vf_log_ds;
-
- /* Then store it in isp config section */
- config->vf_downscale_bits = vf_log_ds;
- return IA_CSS_SUCCESS;
-}
-
-static void
-configure_dma(
- struct ia_css_vf_configuration *config,
- const struct ia_css_frame_info *vf_info)
-{
- config->info = vf_info;
-}
-
-enum ia_css_err
-ia_css_vf_configure(
- const struct ia_css_binary *binary,
- const struct ia_css_frame_info *out_info,
- struct ia_css_frame_info *vf_info,
- unsigned int *downscale_log2)
-{
- enum ia_css_err err;
- struct ia_css_vf_configuration config;
- const struct ia_css_binary_info *info = &binary->info->sp;
-
- err = configure_kernel(info, out_info, vf_info, downscale_log2, &config);
- configure_dma(&config, vf_info);
-
- if (vf_info)
- vf_info->raw_bit_depth = info->dma.vfdec_bits_per_pixel;
- ia_css_configure_vf (binary, &config);
-
- return IA_CSS_SUCCESS;
-}
-