#include <linux/device.h>
#include <linux/errno.h>
#include <linux/limits.h>
#include <linux/mm.h>
#include <linux/slab.h>
#include "ccs-data-defs.h"
struct bin_container { … };
static void *bin_alloc(struct bin_container *bin, size_t len)
{ … }
static void bin_reserve(struct bin_container *bin, size_t len)
{ … }
static int bin_backing_alloc(struct bin_container *bin)
{ … }
#define is_contained(var, endp) …
#define has_headroom(ptr, headroom, endp) …
#define is_contained_with_headroom(var, headroom, endp) …
static int
ccs_data_parse_length_specifier(const struct __ccs_data_length_specifier *__len,
size_t *__hlen, size_t *__plen,
const void *endp)
{ … }
static u8
ccs_data_parse_format_version(const struct __ccs_data_block *block)
{ … }
static u8 ccs_data_parse_block_id(const struct __ccs_data_block *block,
bool is_first)
{ … }
static int ccs_data_parse_version(struct bin_container *bin,
struct ccs_data_container *ccsdata,
const void *payload, const void *endp)
{ … }
static void print_ccs_data_version(struct device *dev,
struct ccs_data_block_version *v)
{ … }
static int ccs_data_block_parse_header(const struct __ccs_data_block *block,
bool is_first, unsigned int *__block_id,
const void **payload,
const struct __ccs_data_block **next_block,
const void *endp, struct device *dev,
bool verbose)
{ … }
static int ccs_data_parse_regs(struct bin_container *bin,
struct ccs_reg **__regs,
size_t *__num_regs, const void *payload,
const void *endp, struct device *dev)
{ … }
static int ccs_data_parse_reg_rules(struct bin_container *bin,
struct ccs_reg **__regs,
size_t *__num_regs,
const void *payload,
const void *endp, struct device *dev)
{ … }
static void assign_ffd_entry(struct ccs_frame_format_desc *desc,
const struct __ccs_data_block_ffd_entry *ent)
{ … }
static int ccs_data_parse_ffd(struct bin_container *bin,
struct ccs_frame_format_descs **ffd,
const void *payload,
const void *endp, struct device *dev)
{ … }
static int ccs_data_parse_pdaf_readout(struct bin_container *bin,
struct ccs_pdaf_readout **pdaf_readout,
const void *payload,
const void *endp, struct device *dev)
{ … }
static int ccs_data_parse_rules(struct bin_container *bin,
struct ccs_rule **__rules,
size_t *__num_rules, const void *payload,
const void *endp, struct device *dev)
{ … }
static int ccs_data_parse_pdaf(struct bin_container *bin, struct ccs_pdaf_pix_loc **pdaf,
const void *payload, const void *endp,
struct device *dev)
{ … }
static int ccs_data_parse_license(struct bin_container *bin,
char **__license,
size_t *__license_length,
const void *payload, const void *endp)
{ … }
static int ccs_data_parse_end(bool *end, const void *payload, const void *endp,
struct device *dev)
{ … }
static int __ccs_data_parse(struct bin_container *bin,
struct ccs_data_container *ccsdata,
const void *data, size_t len, struct device *dev,
bool verbose)
{ … }
int ccs_data_parse(struct ccs_data_container *ccsdata, const void *data,
size_t len, struct device *dev, bool verbose)
{ … }