• Home
  • Raw
  • Download

Lines Matching refs:fw

365 static int check_register(struct host1x_firewall *fw, unsigned long offset)  in check_register()  argument
367 if (!fw->job->is_addr_reg) in check_register()
370 if (fw->job->is_addr_reg(fw->dev, fw->class, offset)) { in check_register()
371 if (!fw->num_relocs) in check_register()
374 if (!check_reloc(fw->reloc, fw->cmdbuf, fw->offset)) in check_register()
377 fw->num_relocs--; in check_register()
378 fw->reloc++; in check_register()
382 if (fw->class != HOST1X_CLASS_HOST1X) in check_register()
385 if (!fw->num_waitchks) in check_register()
388 if (!check_wait(fw->waitchk, fw->cmdbuf, fw->offset)) in check_register()
391 fw->num_waitchks--; in check_register()
392 fw->waitchk++; in check_register()
398 static int check_class(struct host1x_firewall *fw, u32 class) in check_class() argument
400 if (!fw->job->is_valid_class) { in check_class()
401 if (fw->class != class) in check_class()
404 if (!fw->job->is_valid_class(fw->class)) in check_class()
411 static int check_mask(struct host1x_firewall *fw) in check_mask() argument
413 u32 mask = fw->mask; in check_mask()
414 u32 reg = fw->reg; in check_mask()
418 if (fw->words == 0) in check_mask()
422 ret = check_register(fw, reg); in check_mask()
426 fw->words--; in check_mask()
427 fw->offset++; in check_mask()
436 static int check_incr(struct host1x_firewall *fw) in check_incr() argument
438 u32 count = fw->count; in check_incr()
439 u32 reg = fw->reg; in check_incr()
443 if (fw->words == 0) in check_incr()
446 ret = check_register(fw, reg); in check_incr()
451 fw->words--; in check_incr()
452 fw->offset++; in check_incr()
459 static int check_nonincr(struct host1x_firewall *fw) in check_nonincr() argument
461 u32 count = fw->count; in check_nonincr()
465 if (fw->words == 0) in check_nonincr()
468 ret = check_register(fw, fw->reg); in check_nonincr()
472 fw->words--; in check_nonincr()
473 fw->offset++; in check_nonincr()
480 static int validate(struct host1x_firewall *fw, struct host1x_job_gather *g) in validate() argument
482 u32 *cmdbuf_base = (u32 *)fw->job->gather_copy_mapped + in validate()
484 u32 job_class = fw->class; in validate()
487 fw->words = g->words; in validate()
488 fw->cmdbuf = g->bo; in validate()
489 fw->offset = 0; in validate()
491 while (fw->words && !err) { in validate()
492 u32 word = cmdbuf_base[fw->offset]; in validate()
495 fw->mask = 0; in validate()
496 fw->reg = 0; in validate()
497 fw->count = 0; in validate()
498 fw->words--; in validate()
499 fw->offset++; in validate()
503 fw->class = word >> 6 & 0x3ff; in validate()
504 fw->mask = word & 0x3f; in validate()
505 fw->reg = word >> 16 & 0xfff; in validate()
506 err = check_class(fw, job_class); in validate()
508 err = check_mask(fw); in validate()
513 fw->reg = word >> 16 & 0xfff; in validate()
514 fw->count = word & 0xffff; in validate()
515 err = check_incr(fw); in validate()
521 fw->reg = word >> 16 & 0xfff; in validate()
522 fw->count = word & 0xffff; in validate()
523 err = check_nonincr(fw); in validate()
529 fw->mask = word & 0xffff; in validate()
530 fw->reg = word >> 16 & 0xfff; in validate()
531 err = check_mask(fw); in validate()
551 struct host1x_firewall fw; in copy_gathers() local
556 fw.job = job; in copy_gathers()
557 fw.dev = dev; in copy_gathers()
558 fw.reloc = job->relocarray; in copy_gathers()
559 fw.num_relocs = job->num_relocs; in copy_gathers()
560 fw.waitchk = job->waitchk; in copy_gathers()
561 fw.num_waitchks = job->num_waitchk; in copy_gathers()
562 fw.class = job->class; in copy_gathers()
602 if (validate(&fw, g)) in copy_gathers()
609 if (fw.num_relocs || fw.num_waitchks) in copy_gathers()