def get_serial_type(): """ Get serial console type specified by user """ ttys_type = '' ttys_value = '' # Get ttySx information from board config file ttys_lines = board_cfg_lib.get_info(common.BOARD_INFO_FILE, "<TTYS_INFO>", "</TTYS_INFO>") # Get ttySx from scenario config file which selected by user (err_dic, ttyn) = board_cfg_lib.parser_vuart_console() if err_dic: hv_cfg_lib.ERR_LIST.update(err_dic) # query the serial type from board config file for line in ttys_lines: if ttyn in line: # line format: # seri:/dev/ttyS0 type:portio base:0x3F8 irq:4 # seri:/dev/ttyS0 type:mmio base:0xB3640000 irq:4 bdf:"0:x.y" ttys_type = line.split()[1].split(':')[1] if ttys_type == "portio": ttys_value = line.split()[2].split(':')[1] elif ttys_type == "mmio": ttys_value = line.split()[-1].split('"')[1:-1][0] break return (ttys_type, ttys_value)
def get_serial_type(): """ Get the serial type of consle which set by user """ ttys_type = '' # Get ttySx information from board config file ttys_lines = board_cfg_lib.get_info(board_cfg_lib.BOARD_INFO_FILE, "<TTYS_INFO>", "</TTYS_INFO>") scenario_name = board_cfg_lib.get_scenario_name() if scenario_name == "logical_partition": ttyn = 'ttyS0' else: # Get ttySx from scenario config file which selected by user (err_dic, ttyn) = board_cfg_lib.parser_vuart_console() if err_dic: board_cfg_lib.ERR_LIST.update(err_dic) # query the serial type from board config file for line in ttys_lines: if ttyn in line: # line format: # seri:/dev/ttyS0 type:portio base:0x3F8 irq:4 # seri:/dev/ttyS0 type:mmio base:0xB3640000 irq:4 ttys_type = line.split()[1].split(':')[1] break return ttys_type
def generate_file(config): """ Start to generate board.c :param config: it is a file pointer of board information for writing to """ board_cfg_lib.get_valid_irq(common.BOARD_INFO_FILE) # get cpu processor list cpu_list = board_cfg_lib.get_processor_info() max_cpu_num = len(cpu_list) # get the vuart0/vuart1 which user chosed from scenario.xml of board_private section (err_dic, ttys_n) = board_cfg_lib.parser_vuart_console() if err_dic: return err_dic # parse sos_bootargs/rootfs/console (err_dic, sos_cmdlines, sos_rootfs, vuart0_dic, vuart1_dic, vm_types) = parse_boot_info() if err_dic: return err_dic if vuart0_dic: # parse to get poart/base of vuart0/vuart1 vuart0_port_base = board_cfg_lib.LEGACY_TTYS[list( vuart0_dic.keys())[0]] vuart0_irq = vuart0_dic[list(vuart0_dic.keys())[0]] vuart1_port_base = board_cfg_lib.LEGACY_TTYS[list(vuart1_dic.keys())[0]] vuart1_irq = vuart1_dic[list(vuart1_dic.keys())[0]] # parse the setting ttys vuatx dic: {vmid:base/irq} vuart0_setting = Vuart() vuart1_setting = Vuart() vuart0_setting = board_cfg_lib.get_vuart_info_id(common.SCENARIO_INFO_FILE, 0) vuart1_setting = board_cfg_lib.get_vuart_info_id(common.SCENARIO_INFO_FILE, 1) # sos command lines information sos_cmdlines = [i for i in sos_cmdlines[0].split() if i != ''] # get native rootfs list from board_info.xml (root_devs, root_dev_num) = board_cfg_lib.get_rootfs(common.BOARD_INFO_FILE) # start to generate misc_cfg.h print("{0}".format(board_cfg_lib.HEADER_LICENSE), file=config) print("{}".format(MISC_CFG_HEADER), file=config) # define CONFIG_MAX_PCPCU_NUM print("#define MAX_PCPU_NUM\t{}U".format(max_cpu_num), file=config) # set macro of max clos number (_, clos_max, _) = board_cfg_lib.clos_info_parser(common.BOARD_INFO_FILE) if len(clos_max) != 0: common_clos_max = min(clos_max) else: common_clos_max = 0 print("#define MAX_PLATFORM_CLOS_NUM\t{}U".format(common_clos_max), file=config) # define rootfs with macro for i in range(root_dev_num): print('#define ROOTFS_{}\t\t"root={} "'.format(i, root_devs[i]), file=config) # sos rootfs and console print("", file=config) if "SOS_VM" in vm_types: print('#define SOS_ROOTFS\t\t"root={} "'.format(sos_rootfs[0]), file=config) if ttys_n: print('#define SOS_CONSOLE\t\t"console={} "'.format(ttys_n), file=config) else: print('#define SOS_CONSOLE\t\t" "', file=config) # sos com base/irq i_type = 0 for vm_type in vm_types: if vm_type == "SOS_VM": break i_type += 1 if "SOS_VM" in vm_types: if vuart0_dic: print("#define SOS_COM1_BASE\t\t{}U".format(vuart0_port_base), file=config) print("#define SOS_COM1_IRQ\t\t{}U".format(vuart0_irq), file=config) else: print("#define SOS_COM1_BASE\t\t0U", file=config) print("#define SOS_COM1_IRQ\t\t0U", file=config) if vuart1_setting[i_type]['base'] != "INVALID_COM_BASE": print("#define SOS_COM2_BASE\t\t{}U".format(vuart1_port_base), file=config) print("#define SOS_COM2_IRQ\t\t{}U".format(vuart1_irq), file=config) # sos boot command line print("", file=config) if "SOS_VM" in vm_types: sos_bootarg_diff(sos_cmdlines, config) # set macro for HIDDEN PTDEVS print("", file=config) if board_cfg_lib.BOARD_NAME in list( board_cfg_lib.KNOWN_HIDDEN_PDEVS_BOARD_DB): print("#define MAX_HIDDEN_PDEVS_NUM {}U".format( len(board_cfg_lib.KNOWN_HIDDEN_PDEVS_BOARD_DB[ board_cfg_lib.BOARD_NAME])), file=config) else: print("#define MAX_HIDDEN_PDEVS_NUM 0U", file=config) # generate HI_MMIO_START/HI_MMIO_END find_hi_mmio_window(config) print("", file=config) print("{}".format(MISC_CFG_END), file=config) return err_dic
def generate_file(config): """ Start to generate board.c :param config: it is a file pointer of board information for writing to """ board_cfg_lib.get_valid_irq(board_cfg_lib.BOARD_INFO_FILE) # get the vuart0/vuart1 which user chosed from scenario.xml of board_private section (err_dic, ttys_n) = board_cfg_lib.parser_vuart_console() if err_dic: return err_dic # parse sos_bootargs/rootfs/console (err_dic, sos_cmdlines, sos_rootfs, vuart0_dic, vuart1_dic, vm_types) = parse_boot_info() if err_dic: return err_dic # parse to get poart/base of vuart0/vuart1 vuart0_port_base = board_cfg_lib.TTY_CONSOLE[list(vuart0_dic.keys())[0]] vuart0_irq = vuart0_dic[list(vuart0_dic.keys())[0]] vuart1_port_base = board_cfg_lib.TTY_CONSOLE[list(vuart1_dic.keys())[0]] vuart1_irq = vuart1_dic[list(vuart1_dic.keys())[0]] # parse the setting ttys vuatx dic: {vmid:base/irq} vuart0_setting = Vuart() vuart1_setting = Vuart() vuart0_setting = board_cfg_lib.get_vuart_info_id( board_cfg_lib.SCENARIO_INFO_FILE, 0) vuart1_setting = board_cfg_lib.get_vuart_info_id( board_cfg_lib.SCENARIO_INFO_FILE, 1) # sos command lines information sos_cmdlines = [i for i in sos_cmdlines[0].split() if i != ''] # get native rootfs list from board_info.xml (root_devs, root_dev_num) = board_cfg_lib.get_rootfs(board_cfg_lib.BOARD_INFO_FILE) # start to generate misc_cfg.h print("{0}".format(board_cfg_lib.HEADER_LICENSE), file=config) print("{}".format(MISC_CFG_HEADER), file=config) # define rootfs with macro for i in range(root_dev_num): print('#define ROOTFS_{}\t\t"root={} "'.format(i, root_devs[i]), file=config) # sos rootfs and console print("", file=config) if "SOS_VM" in vm_types: print('#define SOS_ROOTFS\t\t"root={} "'.format(sos_rootfs[0]), file=config) print('#define SOS_CONSOLE\t\t"console={} "'.format(ttys_n), file=config) # sos com base/irq i_type = 0 for vm_type in vm_types: if vm_type == "SOS_VM": break i_type += 1 if "SOS_VM" in vm_types: print("#define SOS_COM1_BASE\t\t{}U".format(vuart0_port_base), file=config) print("#define SOS_COM1_IRQ\t\t{}U".format(vuart0_irq), file=config) if vuart1_setting[i_type]['base'] != "INVALID_COM_BASE": print("#define SOS_COM2_BASE\t\t{}U".format(vuart1_port_base), file=config) print("#define SOS_COM2_IRQ\t\t{}U".format(vuart1_irq), file=config) # sos boot command line print("", file=config) if "SOS_VM" in vm_types: sos_bootarg_diff(sos_cmdlines, config) print("{}".format(MISC_CFG_END), file=config) return err_dic