63 lines
1.9 KiB
C
63 lines
1.9 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* camss-format.h
|
|
*
|
|
* Qualcomm MSM Camera Subsystem - Format helpers
|
|
*
|
|
* Copyright (c) 2023, The Linux Foundation. All rights reserved.
|
|
* Copyright (c) 2023 Qualcomm Technologies, Inc.
|
|
*/
|
|
#ifndef __CAMSS_FORMAT_H__
|
|
#define __CAMSS_FORMAT_H__
|
|
|
|
#include <linux/types.h>
|
|
|
|
#define PER_PLANE_DATA(plane, h_fract_num, h_fract_den, v_fract_num, v_fract_den, _bpp) \
|
|
.hsub[(plane)].numerator = (h_fract_num), \
|
|
.hsub[(plane)].denominator = (h_fract_den), \
|
|
.vsub[(plane)].numerator = (v_fract_num), \
|
|
.vsub[(plane)].denominator = (v_fract_den), \
|
|
.bpp[(plane)] = (_bpp)
|
|
|
|
/*
|
|
* struct fract - Represents a fraction
|
|
* @numerator: Store the numerator part of the fraction
|
|
* @denominator: Store the denominator part of the fraction
|
|
*/
|
|
struct fract {
|
|
u8 numerator;
|
|
u8 denominator;
|
|
};
|
|
|
|
/*
|
|
* struct camss_format_info - ISP media bus format information
|
|
* @code: V4L2 media bus format code
|
|
* @mbus_bpp: Media bus bits per pixel
|
|
* @pixelformat: V4L2 pixel format FCC identifier
|
|
* @planes: Number of planes
|
|
* @hsub: Horizontal subsampling (for each plane)
|
|
* @vsub: Vertical subsampling (for each plane)
|
|
* @bpp: Bits per pixel when stored in memory (for each plane)
|
|
*/
|
|
struct camss_format_info {
|
|
u32 code;
|
|
u32 mbus_bpp;
|
|
u32 pixelformat;
|
|
u8 planes;
|
|
struct fract hsub[3];
|
|
struct fract vsub[3];
|
|
unsigned int bpp[3];
|
|
};
|
|
|
|
struct camss_formats {
|
|
unsigned int nformats;
|
|
const struct camss_format_info *formats;
|
|
};
|
|
|
|
u8 camss_format_get_bpp(const struct camss_format_info *formats, unsigned int nformats, u32 code);
|
|
u32 camss_format_find_code(u32 *code, unsigned int n_code, unsigned int index, u32 req_code);
|
|
int camss_format_find_format(u32 code, u32 pixelformat, const struct camss_format_info *formats,
|
|
unsigned int nformats);
|
|
|
|
#endif /* __CAMSS_FORMAT_H__ */
|