I seems that FreeBSD ATA (and by extension ATACAM) code always sets timeout to
SCSI_TIMEOUT_DEFAULT (20 seconds).
This is also the case for captive self-test commands, which can take much much
longer. I think that the code should check for that case and set more appropriate
timeout, like e.g. SCSI_TIMEOUT_SELF_TEST.