Lines Matching refs:bin

23 static void *bin_alloc(struct bin_container *bin, size_t len)
29 if (bin->end - bin->now < len)
32 ptr = bin->now;
33 bin->now += len;
38 static void bin_reserve(struct bin_container *bin, size_t len)
40 bin->size += ALIGN(len, 8);
43 static int bin_backing_alloc(struct bin_container *bin)
45 bin->base = bin->now = kvzalloc(bin->size, GFP_KERNEL);
46 if (!bin->base)
49 bin->end = bin->base + bin->size;
131 static int ccs_data_parse_version(struct bin_container *bin,
141 if (!bin->base) {
142 bin_reserve(bin, sizeof(*ccsdata->version));
146 ccsdata->version = bin_alloc(bin, sizeof(*ccsdata->version));
212 static int ccs_data_parse_regs(struct bin_container *bin,
221 if (bin->base && __regs) {
222 regs = regs_base = bin_alloc(bin, sizeof(*regs) * *__num_regs);
285 if (!bin->base) {
286 bin_reserve(bin, len);
293 regs->value = bin_alloc(bin, len);
305 if (!bin->base)
306 bin_reserve(bin, sizeof(*regs) * num_regs);
311 if (bin->base && __regs) {
321 static int ccs_data_parse_reg_rules(struct bin_container *bin,
329 if (!bin->base)
330 return ccs_data_parse_regs(bin, NULL, NULL, payload, endp, dev);
332 rval = ccs_data_parse_regs(bin, NULL, __num_regs, payload, endp, dev);
336 return ccs_data_parse_regs(bin, __regs, __num_regs, payload, endp,
347 static int ccs_data_parse_ffd(struct bin_container *bin,
365 if (!bin->base) {
366 bin_reserve(bin, sizeof(**ffd));
367 bin_reserve(bin, __ffd->num_column_descs *
369 bin_reserve(bin, __ffd->num_row_descs *
375 *ffd = bin_alloc(bin, sizeof(**ffd));
383 (*ffd)->column_descs = bin_alloc(bin, __ffd->num_column_descs *
391 (*ffd)->row_descs = bin_alloc(bin, __ffd->num_row_descs *
405 static int ccs_data_parse_pdaf_readout(struct bin_container *bin,
415 if (!bin->base) {
416 bin_reserve(bin, sizeof(**pdaf_readout));
418 *pdaf_readout = bin_alloc(bin, sizeof(**pdaf_readout));
426 return ccs_data_parse_ffd(bin, !bin->base ? NULL : &(*pdaf_readout)->ffd,
430 static int ccs_data_parse_rules(struct bin_container *bin,
440 if (bin->base) {
442 bin_alloc(bin, sizeof(*rules) * *__num_rules);
484 if (!bin->base) {
485 bin_reserve(bin,
498 if_rule = bin_alloc(bin,
518 if (bin->base && !rules)
523 rval = ccs_data_parse_reg_rules(bin,
535 rval = ccs_data_parse_ffd(bin, rules ?
544 rval = ccs_data_parse_reg_rules(bin,
556 rval = ccs_data_parse_pdaf_readout(bin,
575 if (!bin->base) {
576 bin_reserve(bin, sizeof(*rules) * num_rules);
588 static int ccs_data_parse_pdaf(struct bin_container *bin, struct ccs_pdaf_pix_loc **pdaf,
603 if (bin->base) {
604 *pdaf = bin_alloc(bin, sizeof(**pdaf));
608 bin_reserve(bin, sizeof(**pdaf));
615 if (bin->base) {
630 if (bin->base) {
632 bin_alloc(bin,
638 bin_reserve(bin, sizeof(struct ccs_pdaf_pix_loc_block_desc_group) *
654 if (bin->base) {
663 if (bin->base) {
665 bin_alloc(bin,
671 bin_reserve(bin, sizeof(struct ccs_pdaf_pix_loc_block_desc) *
684 if (!bin->base)
703 if (bin->base) {
705 bin_alloc(bin,
712 bin_reserve(bin, sizeof(struct ccs_pdaf_pix_loc_pixel_desc_group) *
723 if (bin->base) {
726 bin_alloc(bin,
733 bin_reserve(bin, sizeof(struct ccs_pdaf_pix_loc_pixel_desc) *
745 if (!bin->base)
763 static int ccs_data_parse_license(struct bin_container *bin,
771 if (!bin->base) {
772 bin_reserve(bin, size);
776 license = bin_alloc(bin, size);
804 static int __ccs_data_parse(struct bin_container *bin,
824 if (!bin->base)
835 bin->base ? false : verbose);
844 rval = ccs_data_parse_version(bin, ccsdata, payload,
851 bin, &ccsdata->sensor_read_only_regs,
859 bin, &ccsdata->sensor_manufacturer_regs,
867 bin, &ccsdata->module_read_only_regs,
875 bin, &ccsdata->module_manufacturer_regs,
882 rval = ccs_data_parse_pdaf(bin, &ccsdata->sensor_pdaf,
888 rval = ccs_data_parse_pdaf(bin, &ccsdata->module_pdaf,
895 bin, &ccsdata->sensor_rules,
903 bin, &ccsdata->module_rules,
910 rval = ccs_data_parse_license(bin, &ccsdata->license,
946 struct bin_container bin = { 0 };
949 rval = __ccs_data_parse(&bin, ccsdata, data, len, dev, verbose);
953 rval = bin_backing_alloc(&bin);
957 rval = __ccs_data_parse(&bin, ccsdata, data, len, dev, false);
964 if (bin.now != bin.end) {
967 bin.base, bin.now, bin.end);
971 ccsdata->backing = bin.base;
976 kvfree(bin.base);