Lines Matching +full:firmware +full:- +full:initialized
111 * size of each console is console_buf_size -1;
146 #define SIZEOF_FIELD(s, field) sizeof(((s *)NULL)->field)
216 if (!oct->bootmem_desc_addr) in __cvmx_bootmem_check_version()
217 oct->bootmem_desc_addr = in __cvmx_bootmem_check_version()
222 oct->bootmem_desc_addr, in __cvmx_bootmem_check_version()
226 oct->bootmem_desc_addr, in __cvmx_bootmem_check_version()
235 CAST_ULL(oct->bootmem_desc_addr)); in __cvmx_bootmem_check_version()
236 return (-1); in __cvmx_bootmem_check_version()
247 &oct->bootmem_named_block_desc; in __cvmx_bootmem_find_named_block_flags()
253 desc->base_addr = __cvmx_bootmem_desc_get(oct, named_addr, in __cvmx_bootmem_find_named_block_flags()
259 desc->size = __cvmx_bootmem_desc_get(oct, named_addr, in __cvmx_bootmem_find_named_block_flags()
264 strncpy(desc->name, name, sizeof(desc->name)); in __cvmx_bootmem_find_named_block_flags()
265 desc->name[sizeof(desc->name) - 1] = 0; in __cvmx_bootmem_find_named_block_flags()
267 return (&oct->bootmem_named_block_desc); in __cvmx_bootmem_find_named_block_flags()
283 __cvmx_bootmem_desc_get(oct, oct->bootmem_desc_addr, in cvmx_bootmem_phy_named_block_find()
290 oct->bootmem_desc_addr, in cvmx_bootmem_phy_named_block_find()
298 oct->bootmem_desc_addr, in cvmx_bootmem_phy_named_block_find()
365 *base_addr = named_block->base_addr; in lio_named_block_find()
366 *size = named_block->size; in lio_named_block_find()
396 if (len > LIO_BOOTLOADER_PCI_WRITE_BUFFER_STR_LEN - 1) { in lio_console_send_cmd()
398 LIO_BOOTLOADER_PCI_WRITE_BUFFER_STR_LEN - 1); in lio_console_send_cmd()
399 return (-1); in lio_console_send_cmd()
404 return (-1); in lio_console_send_cmd()
423 return (-1); in lio_console_send_cmd()
438 return (-1); in lio_wait_for_bootloader()
444 if (--wait_time_hundredths <= 0) in lio_wait_for_bootloader()
445 return (-1); in lio_wait_for_bootloader()
458 console = &oct->console[console_num]; in lio_console_handle_result()
460 console->waiting = 0; in lio_console_handle_result()
486 if (console->leftover[0] && in lio_output_console_line()
487 (line != console->leftover)) { in lio_output_console_line()
488 if (console->print) in lio_output_console_line()
489 (*console->print)(oct, in lio_output_console_line()
491 console->leftover,line); in lio_output_console_line()
492 console->leftover[0] = '\0'; in lio_output_console_line()
494 if (console->print) in lio_output_console_line()
495 (*console->print)(oct, in lio_output_console_line()
507 len = strlen(console->leftover); in lio_output_console_line()
508 strncpy(&console->leftover[len], line, in lio_output_console_line()
509 sizeof(console->leftover) - len); in lio_output_console_line()
519 (struct octeon_device *)console_callout->ctxptr; in lio_check_console()
521 uint32_t console_num = (uint32_t) console_callout->ctxul; in lio_check_console()
524 console = &oct->console[console_num]; in lio_check_console()
528 if (callout_pending(&console_callout->timer) || in lio_check_console()
529 (callout_active(&console_callout->timer) == 0)) in lio_check_console()
538 sizeof(console_buffer) - 1); in lio_check_console()
541 if (console->waiting) in lio_check_console()
544 if (console->print) { in lio_check_console()
563 if (console->print && (total_read == 0) && (console->leftover[0])) { in lio_check_console()
565 len = strlen(console->leftover); in lio_check_console()
566 console->leftover[len] = '\n'; in lio_check_console()
568 console->leftover, (int32_t)(len + 1)); in lio_check_console()
569 console->leftover[0] = '\0'; in lio_check_console()
571 callout_schedule(&oct->console_timer[console_num].timer, in lio_check_console()
599 oct->console_nb_info.bar1_index = 15; in lio_init_consoles()
600 oct->fn_list.bar1_idx_setup(oct, addr, oct->console_nb_info.bar1_index, in lio_init_consoles()
602 oct->console_nb_info.dram_region_base = addr & 0xFFFFFFFFFFC00000ULL; in lio_init_consoles()
608 oct->num_consoles = lio_read_device_mem32(oct, in lio_init_consoles()
611 oct->console_desc_addr = addr; in lio_init_consoles()
613 lio_dev_dbg(oct, "Initialized consoles. %d available\n", in lio_init_consoles()
614 oct->num_consoles); in lio_init_consoles()
627 if (console_num >= oct->num_consoles) { in lio_add_console()
629 console_num, oct->num_consoles); in lio_add_console()
631 console = &oct->console[console_num]; in lio_add_console()
633 console->waiting = 0; in lio_add_console()
635 coreaddr = oct->console_desc_addr + console_num * 8 + in lio_add_console()
638 console->addr = lio_read_device_mem64(oct, coreaddr); in lio_add_console()
639 coreaddr = console->addr + offsetof(struct lio_pci_console, in lio_add_console()
641 console->buffer_size = lio_read_device_mem32(oct, coreaddr); in lio_add_console()
642 coreaddr = console->addr + offsetof(struct lio_pci_console, in lio_add_console()
644 console->input_base_addr = lio_read_device_mem64(oct, coreaddr); in lio_add_console()
645 coreaddr = console->addr + offsetof(struct lio_pci_console, in lio_add_console()
647 console->output_base_addr = in lio_add_console()
649 console->leftover[0] = '\0'; in lio_add_console()
651 timer = &oct->console_timer[console_num].timer; in lio_add_console()
653 if (oct->uboot_len == 0) in lio_add_console()
657 oct->console_timer[console_num].ctxptr = (void *)oct; in lio_add_console()
658 oct->console_timer[console_num].ctxul = console_num; in lio_add_console()
669 console->active = 1; in lio_add_console()
686 for (i = 0; i < oct->num_consoles; i++) { in lio_remove_consoles()
687 console = &oct->console[i]; in lio_remove_consoles()
689 if (!console->active) in lio_remove_consoles()
692 callout_stop(&oct->console_timer[i].timer); in lio_remove_consoles()
693 console->addr = 0; in lio_remove_consoles()
694 console->buffer_size = 0; in lio_remove_consoles()
695 console->input_base_addr = 0; in lio_remove_consoles()
696 console->output_base_addr = 0; in lio_remove_consoles()
699 oct->num_consoles = 0; in lio_remove_consoles()
707 return (-1); in lio_console_free_bytes()
709 return (((buffer_size - 1) - (wr_idx - rd_idx)) % buffer_size); in lio_console_free_bytes()
717 return (-1); in lio_console_avail_bytes()
719 return (buffer_size - 1 - in lio_console_avail_bytes()
731 if (console_num >= oct->num_consoles) { in lio_console_read()
737 console = &oct->console[console_num]; in lio_console_read()
741 * 64-bit read. in lio_console_read()
743 rd_idx = lio_read_device_mem32(oct, console->addr + in lio_console_read()
745 wr_idx = lio_read_device_mem32(oct, console->addr + in lio_console_read()
748 bytes_to_read = lio_console_avail_bytes(console->buffer_size, in lio_console_read()
759 if (rd_idx + bytes_to_read >= console->buffer_size) in lio_console_read()
760 bytes_to_read = console->buffer_size - rd_idx; in lio_console_read()
762 lio_pci_read_core_mem(oct, console->output_base_addr + rd_idx, in lio_console_read()
764 lio_write_device_mem32(oct, console->addr + in lio_console_read()
767 (rd_idx + bytes_to_read) % console->buffer_size); in lio_console_read()
782 console = &oct->console[console_num]; in lio_get_uboot_version()
794 console_num, oct->uboot_version + in lio_get_uboot_version()
796 OCTEON_UBOOT_BUFFER_SIZE - 1 - in lio_get_uboot_version()
799 oct->uboot_version[bytes_read] = 0x0; in lio_get_uboot_version()
802 if (console->waiting) in lio_get_uboot_version()
817 if ((total_read == 0) && (console->leftover[0])) { in lio_get_uboot_version()
818 lio_dev_dbg(oct, "%u: %s\n", console_num, console->leftover); in lio_get_uboot_version()
819 console->leftover[0] = '\0'; in lio_get_uboot_version()
824 /* U-Boot */ in lio_get_uboot_version()
825 for (i = 0; i < (OCTEON_UBOOT_BUFFER_SIZE - 9); i++) { in lio_get_uboot_version()
826 if (oct->uboot_version[i] == 'U' && in lio_get_uboot_version()
827 oct->uboot_version[i + 2] == 'B' && in lio_get_uboot_version()
828 oct->uboot_version[i + 3] == 'o' && in lio_get_uboot_version()
829 oct->uboot_version[i + 4] == 'o' && in lio_get_uboot_version()
830 oct->uboot_version[i + 5] == 't') { in lio_get_uboot_version()
831 oct->uboot_sidx = i; in lio_get_uboot_version()
833 for (; oct->uboot_version[i] != 0x0; i++) { in lio_get_uboot_version()
834 if (oct->uboot_version[i] == 'm' && in lio_get_uboot_version()
835 oct->uboot_version[i + 1] == 'i' && in lio_get_uboot_version()
836 oct->uboot_version[i + 2] == 'p' && in lio_get_uboot_version()
837 oct->uboot_version[i + 3] == 's') { in lio_get_uboot_version()
838 oct->uboot_eidx = i - 1; in lio_get_uboot_version()
839 oct->uboot_version[i - 1] = 0x0; in lio_get_uboot_version()
840 oct->uboot_len = oct->uboot_eidx - in lio_get_uboot_version()
841 oct->uboot_sidx + 1; in lio_get_uboot_version()
843 &oct->uboot_version in lio_get_uboot_version()
844 [oct->uboot_sidx]); in lio_get_uboot_version()
864 lio_dev_err(oct, "Firmware file too small (%d < %d).\n", in lio_download_firmware()
867 return (-EINVAL); in lio_download_firmware()
872 if (be32toh(h->magic) != LIO_NIC_MAGIC) { in lio_download_firmware()
873 lio_dev_err(oct, "Unrecognized firmware file.\n"); in lio_download_firmware()
874 return (-EINVAL); in lio_download_firmware()
877 crc32_result = crc32(data, sizeof(struct lio_firmware_file_header) - in lio_download_firmware()
879 if (crc32_result != be32toh(h->crc32)) { in lio_download_firmware()
880 lio_dev_err(oct, "Firmware CRC mismatch (0x%08x != 0x%08x).\n", in lio_download_firmware()
881 crc32_result, be32toh(h->crc32)); in lio_download_firmware()
882 return (-EINVAL); in lio_download_firmware()
885 if (memcmp(LIO_BASE_VERSION, h->version, in lio_download_firmware()
887 lio_dev_err(oct, "Unmatched firmware version. Expected %s.x, got %s.\n", in lio_download_firmware()
888 LIO_BASE_VERSION, h->version); in lio_download_firmware()
889 return (-EINVAL); in lio_download_firmware()
892 if (be32toh(h->num_images) > LIO_MAX_IMAGES) { in lio_download_firmware()
893 lio_dev_err(oct, "Too many images in firmware file (%d).\n", in lio_download_firmware()
894 be32toh(h->num_images)); in lio_download_firmware()
895 return (-EINVAL); in lio_download_firmware()
898 lio_dev_info(oct, "Firmware version: %s\n", h->version); in lio_download_firmware()
899 snprintf(oct->fw_info.lio_firmware_version, 32, "LIQUIDIO: %s", in lio_download_firmware()
900 h->version); in lio_download_firmware()
904 lio_dev_info(oct, "Loading %d image(s)\n", be32toh(h->num_images)); in lio_download_firmware()
907 for (i = 0; i < be32toh(h->num_images); i++) { in lio_download_firmware()
908 load_addr = be64toh(h->desc[i].addr); in lio_download_firmware()
909 image_len = be32toh(h->desc[i].len); in lio_download_firmware()
911 lio_dev_info(oct, "Loading firmware %d at %llx\n", image_len, in lio_download_firmware()
929 rem -= (uint32_t) size; in lio_download_firmware()
934 lio_dev_info(oct, "Writing boot command: %s\n", h->bootcmd); in lio_download_firmware()
937 lio_console_send_cmd(oct, h->bootcmd, 50); in lio_download_firmware()