Lines Matching +full:console +full:- +full:size

108  * Structure that defines a single console.
111 * size of each console is console_buf_size -1;
143 * This macro returns the size of a member of a structure. Logically it is
146 #define SIZEOF_FIELD(s, field) sizeof(((s *)NULL)->field)
156 * @param size Size of the structure member.
162 uint32_t offset, uint32_t size) in __cvmx_bootmem_desc_get() argument
166 switch (size) { in __cvmx_bootmem_desc_get()
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()
260 offsetof(struct cvmx_bootmem_named_block_desc, size), in __cvmx_bootmem_find_named_block_flags()
262 size)); 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()
310 size), in cvmx_bootmem_phy_named_block_find()
312 size)); in cvmx_bootmem_phy_named_block_find()
351 * @param size The size of the block (OUTPUT)
357 uint64_t * base_addr, uint64_t * size) in lio_named_block_find() argument
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()
456 struct lio_console *console; in lio_console_handle_result() local
458 console = &oct->console[console_num]; in lio_console_handle_result()
460 console->waiting = 0; in lio_console_handle_result()
466 lio_output_console_line(struct octeon_device *oct, struct lio_console *console, in lio_output_console_line() argument
482 * having been read from the console). in lio_output_console_line()
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()
516 struct lio_console *console; in lio_check_console() local
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()
534 * Take console output regardless of whether it will be 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()
545 lio_output_console_line(oct, console, in lio_check_console()
552 lio_dev_err(oct, "Error reading console %u, ret=%d\n", in lio_check_console()
560 * If nothing is read after polling the console, output any leftovers 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()
567 lio_output_console_line(oct, console, console_num, 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()
579 uint64_t addr, size; in lio_init_consoles() local
588 &size); in lio_init_consoles()
590 lio_dev_err(oct, "Could not find console '%s'\n", in lio_init_consoles()
597 * Octeon's DRAM that contains the PCI console named block. in lio_init_consoles()
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()
614 oct->num_consoles); in lio_init_consoles()
623 struct lio_console *console; in lio_add_console() local
627 if (console_num >= oct->num_consoles) { in lio_add_console()
628 lio_dev_err(oct, "trying to read from console number %d when only 0 to %d exist\n", 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()
662 /* an empty string means use default debug console enablement */ in lio_add_console()
669 console->active = 1; in lio_add_console()
683 struct lio_console *console; in lio_remove_consoles() local
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()
727 struct lio_console *console; in lio_console_read() local
731 if (console_num >= oct->num_consoles) { in lio_console_read()
732 lio_dev_err(oct, "Attempted to read from disabled console %d\n", 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()
775 struct lio_console *console; in lio_get_uboot_version() local
782 console = &oct->console[console_num]; in lio_get_uboot_version()
790 * Take console output regardless of whether it will be 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()
806 lio_dev_err(oct, "Error reading console %u, ret=%d\n", in lio_get_uboot_version()
814 * If nothing is read after polling the console, output any leftovers 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()
857 size_t size) in lio_download_firmware() argument
863 if (size < sizeof(struct lio_firmware_file_header)) { in lio_download_firmware()
865 (uint32_t) size, in lio_download_firmware()
867 return (-EINVAL); in lio_download_firmware()
872 if (be32toh(h->magic) != LIO_NIC_MAGIC) { 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()
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()
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()
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()
919 size = rem; in lio_download_firmware()
921 size = FBUF_SIZE; in lio_download_firmware()
926 (uint32_t) size); in lio_download_firmware()
928 data += size; in lio_download_firmware()
929 rem -= (uint32_t) size; in lio_download_firmware()
930 load_addr += 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()