Lines Matching full:ack
58 * reboot barker (4 le32 words with the same value). We ack it by
60 * reboot ack barker (4 le32 words with value I2400M_ACK_BARKER) and
437 * Verify the ack data received
442 * @opcode: opcode which generated this ack. For error messages.
443 * @ack: pointer to ack data we received
451 struct i2400m_bootrom_header *ack, in __i2400m_bm_ack_verify() argument
457 d_fnstart(8, dev, "(i2400m %p opcode %d ack %p size %zu)\n", in __i2400m_bm_ack_verify()
458 i2400m, opcode, ack, ack_size); in __i2400m_bm_ack_verify()
459 if (ack_size < sizeof(*ack)) { in __i2400m_bm_ack_verify()
463 opcode, ack_size, sizeof(*ack)); in __i2400m_bm_ack_verify()
466 result = i2400m_is_boot_barker(i2400m, ack, ack_size); in __i2400m_bm_ack_verify()
473 && memcmp(ack, i2400m_ACK_BARKER, sizeof(*ack)) == 0) { in __i2400m_bm_ack_verify()
475 d_printf(3, dev, "boot-mode cmd %d: HW reboot ack barker\n", in __i2400m_bm_ack_verify()
482 ack->data_size = le32_to_cpu(ack->data_size); in __i2400m_bm_ack_verify()
483 ack->target_addr = le32_to_cpu(ack->target_addr); in __i2400m_bm_ack_verify()
484 ack->block_checksum = le32_to_cpu(ack->block_checksum); in __i2400m_bm_ack_verify()
487 opcode, i2400m_brh_get_opcode(ack), in __i2400m_bm_ack_verify()
488 i2400m_brh_get_response(ack), in __i2400m_bm_ack_verify()
489 i2400m_brh_get_use_checksum(ack), in __i2400m_bm_ack_verify()
490 i2400m_brh_get_response_required(ack), in __i2400m_bm_ack_verify()
491 i2400m_brh_get_direct_access(ack)); in __i2400m_bm_ack_verify()
493 if (i2400m_brh_get_signature(ack) != 0xcbbc) { in __i2400m_bm_ack_verify()
495 "0x%04x\n", opcode, i2400m_brh_get_signature(ack)); in __i2400m_bm_ack_verify()
498 if (opcode != -1 && opcode != i2400m_brh_get_opcode(ack)) { in __i2400m_bm_ack_verify()
501 opcode, i2400m_brh_get_opcode(ack), opcode); in __i2400m_bm_ack_verify()
504 if (i2400m_brh_get_response(ack) != 0) { /* failed? */ in __i2400m_bm_ack_verify()
506 opcode, i2400m_brh_get_response(ack)); in __i2400m_bm_ack_verify()
509 if (ack_size < ack->data_size + sizeof(*ack)) { in __i2400m_bm_ack_verify()
513 (size_t) le32_to_cpu(ack->data_size) + sizeof(*ack)); in __i2400m_bm_ack_verify()
528 d_fnend(8, dev, "(i2400m %p opcode %d ack %p size %zu) = %d\n", in __i2400m_bm_ack_verify()
529 i2400m, opcode, ack, ack_size, (int) result); in __i2400m_bm_ack_verify()
552 * If NULL, no command is sent (we just wait for an ack).
557 * @ack: buffer where to place the acknowledgement. If it is a regular
563 * @ack_size: size of @ack, 16 aligned; you need to provide at least
564 * sizeof(*ack) bytes and then enough to contain the return data
582 struct i2400m_bootrom_header *ack, size_t ack_size, in i2400m_bm_cmd() argument
589 d_fnstart(6, dev, "(i2400m %p cmd %p size %zu ack %p size %zu)\n", in i2400m_bm_cmd()
590 i2400m, cmd, cmd_size, ack, ack_size); in i2400m_bm_cmd()
591 BUG_ON(ack_size < sizeof(*ack)); in i2400m_bm_cmd()
608 result = i2400m->bus_bm_wait_for_ack(i2400m, ack, ack_size); in i2400m_bm_cmd()
610 dev_err(dev, "boot-mode cmd %d: error waiting for an ack: %d\n", in i2400m_bm_cmd()
615 /* verify the ack and read more if necessary [result is the in i2400m_bm_cmd()
616 * final amount of bytes we get in the ack] */ in i2400m_bm_cmd()
617 result = __i2400m_bm_ack_verify(i2400m, opcode, ack, ack_size, flags); in i2400m_bm_cmd()
627 d_fnend(6, dev, "(i2400m %p cmd %p size %zu ack %p size %zu) = %d\n", in i2400m_bm_cmd()
628 i2400m, cmd, cmd_size, ack, ack_size, (int) result); in i2400m_bm_cmd()
654 struct i2400m_bootrom_header ack; in i2400m_download_chunk() local
669 &ack, sizeof(ack), 0); in i2400m_download_chunk()
708 struct i2400m_bootrom_header ack; in i2400m_dnload_bcf() local
744 &ack, sizeof(ack), I2400M_BM_CMD_RAW); in i2400m_dnload_bcf()
792 struct i2400m_bootrom_header *cmd, ack; in i2400m_dnload_finalize() local
829 &ack, sizeof(ack), I2400M_BM_CMD_RAW); in i2400m_dnload_finalize()
859 * b. (1) echo/ack the reboot sending the reboot barker back and (2)
860 * getting an ack barker in return
871 * echo/ack reboot barker being sent back, it doesn't understand
875 * known barkers and tries them all until an ACK is
885 struct i2400m_bootrom_header ack; in i2400m_bootrom_init() local
891 BUILD_BUG_ON(sizeof(ack) != sizeof(i2400m_ACK_BARKER)); in i2400m_bootrom_init()
906 result = i2400m_bm_cmd(i2400m, NULL, 0, &ack, sizeof(ack), in i2400m_bootrom_init()
919 d_printf(4, dev, "device reboot: got ack barker - whatever\n"); in i2400m_bootrom_init()
924 * already and expecting an ack; if we don't know what in i2400m_bootrom_init()
930 "trying (set) %08x echo/ack\n", in i2400m_bootrom_init()
938 &ack, sizeof(ack), in i2400m_bootrom_init()
941 dev_warn(dev, "device boot: got ack barker " in i2400m_bootrom_init()
942 "after sending echo/ack barker " in i2400m_bootrom_init()
959 d_dump(1, dev, &ack, result); in i2400m_bootrom_init()
962 /* At this point we ack back with 4 REBOOT barkers and expect in i2400m_bootrom_init()
963 * 4 ACK barkers. This is ugly, as we send a raw command -- in i2400m_bootrom_init()
964 * hence the cast. _bm_cmd() will catch the reboot ack in i2400m_bootrom_init()
967 d_printf(4, dev, "device reboot ack: sending ack [%d # left]\n", count); in i2400m_bootrom_init()
970 &ack, sizeof(ack), I2400M_BM_CMD_RAW); in i2400m_bootrom_init()
973 d_printf(4, dev, "reboot ack: got reboot barker - retrying\n"); in i2400m_bootrom_init()
978 d_printf(4, dev, "reboot ack: got ack barker - good\n"); in i2400m_bootrom_init()
982 d_printf(4, dev, "reboot ack timedout: retrying\n"); in i2400m_bootrom_init()
985 dev_err(dev, "reboot ack timedout too long: " in i2400m_bootrom_init()
994 dev_err(dev, "device reboot ack: error %d while waiting for " in i2400m_bootrom_init()
995 "reboot ack barker - rebooting\n", result); in i2400m_bootrom_init()
998 d_printf(2, dev, "device reboot ack: got ack barker - boot done\n"); in i2400m_bootrom_init()
1007 dev_err(dev, "Timed out waiting for reboot ack\n"); in i2400m_bootrom_init()
1029 struct i2400m_bootrom_header ack; in i2400m_read_mac_addr() member
1039 &ack_buf.ack, sizeof(ack_buf), 0); in i2400m_read_mac_addr()
1117 struct i2400m_bootrom_header ack; in i2400m_dnload_init_signed() local
1127 &ack, sizeof(ack), 0); in i2400m_dnload_init_signed()