mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
media: atomisp: Clean up unused macros from math_support.h
Clean up unused macros from math_support.h and replace rarely used by generic ones from Linux kernel headers. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/r/20240424184421.1737776-2-andriy.shevchenko@linux.intel.com Reviewed-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
parent
e323de473d
commit
143fd8feb8
@ -100,17 +100,6 @@ bool ia_css_util_res_leq(
|
|||||||
bool ia_css_util_resolution_is_zero(
|
bool ia_css_util_resolution_is_zero(
|
||||||
const struct ia_css_resolution resolution);
|
const struct ia_css_resolution resolution);
|
||||||
|
|
||||||
/* ISP2401 */
|
|
||||||
/**
|
|
||||||
* @brief Check if resolution is even
|
|
||||||
*
|
|
||||||
* @param[in] resolution The resolution to check
|
|
||||||
*
|
|
||||||
* @returns true if resolution is even
|
|
||||||
*/
|
|
||||||
bool ia_css_util_resolution_is_even(
|
|
||||||
const struct ia_css_resolution resolution);
|
|
||||||
|
|
||||||
/* @brief check width and height
|
/* @brief check width and height
|
||||||
*
|
*
|
||||||
* @param[in] stream_format
|
* @param[in] stream_format
|
||||||
|
@ -119,17 +119,6 @@ int ia_css_util_check_vf_out_info(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ia_css_util_check_res(unsigned int width, unsigned int height)
|
|
||||||
{
|
|
||||||
/* height can be odd number for jpeg/embedded data from ISYS2401 */
|
|
||||||
if (((width == 0) ||
|
|
||||||
(height == 0) ||
|
|
||||||
IS_ODD(width))) {
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ISP2401 */
|
/* ISP2401 */
|
||||||
bool ia_css_util_res_leq(struct ia_css_resolution a, struct ia_css_resolution b)
|
bool ia_css_util_res_leq(struct ia_css_resolution a, struct ia_css_resolution b)
|
||||||
{
|
{
|
||||||
@ -142,10 +131,18 @@ bool ia_css_util_resolution_is_zero(const struct ia_css_resolution resolution)
|
|||||||
return (resolution.width == 0) || (resolution.height == 0);
|
return (resolution.width == 0) || (resolution.height == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ISP2401 */
|
int ia_css_util_check_res(unsigned int width, unsigned int height)
|
||||||
bool ia_css_util_resolution_is_even(const struct ia_css_resolution resolution)
|
|
||||||
{
|
{
|
||||||
return IS_EVEN(resolution.height) && IS_EVEN(resolution.width);
|
const struct ia_css_resolution resolution = { .width = width, .height = height };
|
||||||
|
|
||||||
|
if (ia_css_util_resolution_is_zero(resolution))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
/* height can be odd number for jpeg/embedded data from ISYS2401 */
|
||||||
|
if (width & 1)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ia_css_util_is_input_format_raw(enum atomisp_input_format format)
|
bool ia_css_util_is_input_format_raw(enum atomisp_input_format format)
|
||||||
|
@ -16,133 +16,27 @@
|
|||||||
#ifndef __MATH_SUPPORT_H
|
#ifndef __MATH_SUPPORT_H
|
||||||
#define __MATH_SUPPORT_H
|
#define __MATH_SUPPORT_H
|
||||||
|
|
||||||
#include <linux/kernel.h> /* Override the definition of max/min from linux kernel*/
|
/* Override the definition of max/min from Linux kernel */
|
||||||
|
#include <linux/minmax.h>
|
||||||
#define IS_ODD(a) ((a) & 0x1)
|
|
||||||
#define IS_EVEN(a) (!IS_ODD(a))
|
|
||||||
|
|
||||||
/* force a value to a lower even value */
|
/* force a value to a lower even value */
|
||||||
#define EVEN_FLOOR(x) ((x) & ~1)
|
#define EVEN_FLOOR(x) ((x) & ~1)
|
||||||
|
|
||||||
/* ISP2401 */
|
|
||||||
/* If the number is odd, find the next even number */
|
|
||||||
#define EVEN_CEIL(x) ((IS_ODD(x)) ? ((x) + 1) : (x))
|
|
||||||
|
|
||||||
/* A => B */
|
|
||||||
#define IMPLIES(a, b) (!(a) || (b))
|
|
||||||
|
|
||||||
/* for preprocessor and array sizing use MIN and MAX
|
/* for preprocessor and array sizing use MIN and MAX
|
||||||
otherwise use min and max */
|
otherwise use min and max */
|
||||||
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
|
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
|
||||||
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
|
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
|
||||||
|
|
||||||
#define ROUND_DIV(a, b) (((b) != 0) ? ((a) + ((b) >> 1)) / (b) : 0)
|
|
||||||
#define CEIL_DIV(a, b) (((b) != 0) ? ((a) + (b) - 1) / (b) : 0)
|
#define CEIL_DIV(a, b) (((b) != 0) ? ((a) + (b) - 1) / (b) : 0)
|
||||||
#define CEIL_MUL(a, b) (CEIL_DIV(a, b) * (b))
|
#define CEIL_MUL(a, b) (CEIL_DIV(a, b) * (b))
|
||||||
#define CEIL_MUL2(a, b) (((a) + (b) - 1) & ~((b) - 1))
|
#define CEIL_MUL2(a, b) (((a) + (b) - 1) & ~((b) - 1))
|
||||||
#define CEIL_SHIFT(a, b) (((a) + (1 << (b)) - 1) >> (b))
|
#define CEIL_SHIFT(a, b) (((a) + (1 << (b)) - 1) >> (b))
|
||||||
#define CEIL_SHIFT_MUL(a, b) (CEIL_SHIFT(a, b) << (b))
|
#define CEIL_SHIFT_MUL(a, b) (CEIL_SHIFT(a, b) << (b))
|
||||||
#define ROUND_HALF_DOWN_DIV(a, b) (((b) != 0) ? ((a) + (b / 2) - 1) / (b) : 0)
|
|
||||||
#define ROUND_HALF_DOWN_MUL(a, b) (ROUND_HALF_DOWN_DIV(a, b) * (b))
|
|
||||||
|
|
||||||
/*To Find next power of 2 number from x */
|
|
||||||
#define bit2(x) ((x) | ((x) >> 1))
|
|
||||||
#define bit4(x) (bit2(x) | (bit2(x) >> 2))
|
|
||||||
#define bit8(x) (bit4(x) | (bit4(x) >> 4))
|
|
||||||
#define bit16(x) (bit8(x) | (bit8(x) >> 8))
|
|
||||||
#define bit32(x) (bit16(x) | (bit16(x) >> 16))
|
|
||||||
#define NEXT_POWER_OF_2(x) (bit32(x - 1) + 1)
|
|
||||||
|
|
||||||
/* min and max should not be macros as they will evaluate their arguments twice.
|
|
||||||
if you really need a macro (e.g. for CPP or for initializing an array)
|
|
||||||
use MIN() and MAX(), otherwise use min() and max().
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined(PIPE_GENERATION)
|
#if !defined(PIPE_GENERATION)
|
||||||
|
|
||||||
/*
|
|
||||||
This macro versions are added back as we are mixing types in usage of inline.
|
|
||||||
This causes corner cases of calculations to be incorrect due to conversions
|
|
||||||
between signed and unsigned variables or overflows.
|
|
||||||
Before the addition of the inline functions, max, min and ceil_div were macros
|
|
||||||
and therefore adding them back.
|
|
||||||
|
|
||||||
Leaving out the other math utility functions as they are newly added
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define ceil_div(a, b) (CEIL_DIV(a, b))
|
#define ceil_div(a, b) (CEIL_DIV(a, b))
|
||||||
|
|
||||||
static inline unsigned int ceil_mul(unsigned int a, unsigned int b)
|
|
||||||
{
|
|
||||||
return CEIL_MUL(a, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline unsigned int ceil_mul2(unsigned int a, unsigned int b)
|
|
||||||
{
|
|
||||||
return CEIL_MUL2(a, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline unsigned int ceil_shift(unsigned int a, unsigned int b)
|
|
||||||
{
|
|
||||||
return CEIL_SHIFT(a, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline unsigned int ceil_shift_mul(unsigned int a, unsigned int b)
|
|
||||||
{
|
|
||||||
return CEIL_SHIFT_MUL(a, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ISP2401 */
|
|
||||||
static inline unsigned int round_half_down_div(unsigned int a, unsigned int b)
|
|
||||||
{
|
|
||||||
return ROUND_HALF_DOWN_DIV(a, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ISP2401 */
|
|
||||||
static inline unsigned int round_half_down_mul(unsigned int a, unsigned int b)
|
|
||||||
{
|
|
||||||
return ROUND_HALF_DOWN_MUL(a, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* @brief Next Power of Two
|
|
||||||
*
|
|
||||||
* @param[in] unsigned number
|
|
||||||
*
|
|
||||||
* @return next power of two
|
|
||||||
*
|
|
||||||
* This function rounds input to the nearest power of 2 (2^x)
|
|
||||||
* towards infinity
|
|
||||||
*
|
|
||||||
* Input Range: 0 .. 2^(8*sizeof(int)-1)
|
|
||||||
*
|
|
||||||
* IF input is a power of 2
|
|
||||||
* out = in
|
|
||||||
* OTHERWISE
|
|
||||||
* out = 2^(ceil(log2(in))
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
static inline unsigned int ceil_pow2(unsigned int a)
|
|
||||||
{
|
|
||||||
if (a == 0) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
/* IF input is already a power of two*/
|
|
||||||
else if ((!((a) & ((a) - 1)))) {
|
|
||||||
return a;
|
|
||||||
} else {
|
|
||||||
unsigned int v = a;
|
|
||||||
|
|
||||||
v |= v >> 1;
|
|
||||||
v |= v >> 2;
|
|
||||||
v |= v >> 4;
|
|
||||||
v |= v >> 8;
|
|
||||||
v |= v >> 16;
|
|
||||||
return (v + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* !defined(PIPE_GENERATION) */
|
#endif /* !defined(PIPE_GENERATION) */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
* This file contains types used for 3A statistics
|
* This file contains types used for 3A statistics
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <math_support.h>
|
||||||
#include <type_support.h>
|
#include <type_support.h>
|
||||||
#include "ia_css_types.h"
|
#include "ia_css_types.h"
|
||||||
#include "ia_css_err.h"
|
#include "ia_css_err.h"
|
||||||
|
@ -13,6 +13,8 @@
|
|||||||
* more details.
|
* more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <linux/log2.h>
|
||||||
|
|
||||||
#include "type_support.h"
|
#include "type_support.h"
|
||||||
#include "math_support.h"
|
#include "math_support.h"
|
||||||
#include "sh_css_defs.h"
|
#include "sh_css_defs.h"
|
||||||
@ -137,9 +139,7 @@ ia_css_xnr3_encode(
|
|||||||
unsigned int size)
|
unsigned int size)
|
||||||
{
|
{
|
||||||
int kernel_size = XNR_FILTER_SIZE;
|
int kernel_size = XNR_FILTER_SIZE;
|
||||||
/* The adjust factor is the next power of 2
|
int adjust_factor = roundup_pow_of_two(kernel_size);
|
||||||
w.r.t. the kernel size*/
|
|
||||||
int adjust_factor = ceil_pow2(kernel_size);
|
|
||||||
s32 max_diff = (1 << (ISP_VEC_ELEMBITS - 1)) - 1;
|
s32 max_diff = (1 << (ISP_VEC_ELEMBITS - 1)) - 1;
|
||||||
s32 min_diff = -(1 << (ISP_VEC_ELEMBITS - 1));
|
s32 min_diff = -(1 << (ISP_VEC_ELEMBITS - 1));
|
||||||
|
|
||||||
|
@ -43,8 +43,6 @@
|
|||||||
|
|
||||||
#include "assert_support.h"
|
#include "assert_support.h"
|
||||||
|
|
||||||
#define IMPLIES(a, b) (!(a) || (b)) /* A => B */
|
|
||||||
|
|
||||||
static struct ia_css_binary_xinfo *all_binaries; /* ISP binaries only (no SP) */
|
static struct ia_css_binary_xinfo *all_binaries; /* ISP binaries only (no SP) */
|
||||||
static struct ia_css_binary_xinfo
|
static struct ia_css_binary_xinfo
|
||||||
*binary_infos[IA_CSS_BINARY_NUM_MODES] = { NULL, };
|
*binary_infos[IA_CSS_BINARY_NUM_MODES] = { NULL, };
|
||||||
|
@ -16,7 +16,9 @@
|
|||||||
#ifndef __SH_CSS_FRAC_H
|
#ifndef __SH_CSS_FRAC_H
|
||||||
#define __SH_CSS_FRAC_H
|
#define __SH_CSS_FRAC_H
|
||||||
|
|
||||||
#include <math_support.h>
|
#include <linux/minmax.h>
|
||||||
|
|
||||||
|
#include "mamoiada_params.h"
|
||||||
|
|
||||||
#define sISP_REG_BIT ISP_VEC_ELEMBITS
|
#define sISP_REG_BIT ISP_VEC_ELEMBITS
|
||||||
#define uISP_REG_BIT ((unsigned int)(sISP_REG_BIT - 1))
|
#define uISP_REG_BIT ((unsigned int)(sISP_REG_BIT - 1))
|
||||||
|
Loading…
Reference in New Issue
Block a user