#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 {
u8 numerator;
u8 denominator;
};
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);
unsigned int camss_format_get_bpl_alignment(const struct camss_format_info *f);
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