acrn-config: add CONFIG_SERIAL_x for new board

Add CONFIG_SERIAL_x in $(borad).config, this will help to output
console log and help new board debug.

Tracked-On: #3854
Signed-off-by: Wei Liu <weix.w.liu@intel.com>
Acked-by: Victor Sun <victor.sun@intel.com>
This commit is contained in:
Wei Liu 2019-12-11 19:16:55 +08:00 committed by wenlingz
parent d699347e7b
commit 12a9bc29df
6 changed files with 46 additions and 12 deletions

View File

@ -67,6 +67,7 @@ def get_ram_range():
def get_serial_type():
""" Get the serial type of consle which set by user """
ttys_type = ''
ttys_value = ''
# Get ttySx information from board config file
ttys_lines = board_cfg_lib.get_info(board_cfg_lib.BOARD_INFO_FILE, "<TTYS_INFO>", "</TTYS_INFO>")
@ -85,11 +86,15 @@ def get_serial_type():
if ttyn in line:
# line format:
# seri:/dev/ttyS0 type:portio base:0x3F8 irq:4
# seri:/dev/ttyS0 type:mmio base:0xB3640000 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]
break
return ttys_type
return (ttys_type, ttys_value)
def generate_file(config):
@ -118,12 +123,14 @@ def generate_file(config):
print("{}".format(DESC), file=config)
print('CONFIG_BOARD="{}"'.format(board_cfg_lib.BOARD_NAME), file=config)
serial_type = get_serial_type()
(serial_type, serial_value) = get_serial_type()
if serial_type == "portio":
print("CONFIG_SERIAL_LEGACY=y", file=config)
print("CONFIG_SERIAL_PIO_BASE={}".format(serial_value), file=config)
if serial_type == "mmio":
print("CONFIG_SERIAL_PCI=y", file=config)
print("CONFIG_SERIAL_PCI_BDF={}".format(serial_value), file=config)
print("CONFIG_HV_RAM_START={}".format(hex(hv_start_addr)), file=config)
print("CONFIG_HV_RAM_SIZE={}".format(hex(hv_ram_size)), file=config)

View File

@ -284,8 +284,10 @@ def get_valid_console():
if used_console_lines:
vuart0_valid_console.clear()
for console in used_console_lines:
#seri:/dev/ttySx type:mmio base:0x91526000 irq:4 bdf:"00:18.0"
#seri:/dev/ttySy type:portio base:0x2f8 irq:5
tty = console.split('/')[2].split()[0]
ttys_irq = console.split(':')[-1].strip()
ttys_irq = console.split()[3].split(':')[1].strip()
NATIVE_CONSOLE_DIC[tty] = ttys_irq
vuart0_valid_console.append(tty)
if tty:

View File

@ -48,6 +48,30 @@ def detected_ttys():
return tty_used_list
def irq2bdf(irq_n):
cmd = 'lspci -vv'
res = parser_lib.cmd_execute(cmd)
bdf = ''
irq = 0
while True:
line = res.stdout.readline().decode('ascii')
if not line:
break
if ':' not in line:
continue
if '.' in line.split()[0]:
bdf = line.split()[0]
if "Interrupt:" in line.strip():
irq = line.split()[-1]
if irq == irq_n and bdf:
break
return bdf
def dump_ttys_info(ttys_list, config):
for ttys in ttys_list:
ttys_n = ttys.split('/')[-1]
@ -65,7 +89,8 @@ def dump_ttys_info(ttys_list, config):
elif ttys_type[serial_type] == 'MMIO':
base_path = '{}{}/iomem_base'.format(TTY_PATH, ttys_n)
base = read_ttys_node(base_path)
print("\tseri:{} type:mmio base:{} irq:{}".format(ttys, base, irq), file=config)
bdf = irq2bdf(irq)
print('\tseri:{} type:mmio base:{} irq:{} bdf:"{}"'.format(ttys, base, irq, bdf), file=config)
def dump_ttys(config):

View File

@ -278,9 +278,9 @@
</BLOCK_DEVICE_INFO>
<TTYS_INFO>
seri:/dev/ttyS0 type:mmio base:0xB3640000 irq:4
seri:/dev/ttyS2 type:mmio base:0x80E00000 irq:6
seri:/dev/ttyS3 type:mmio base:0xB363A000 irq:7
seri:/dev/ttyS0 type:mmio base:0xB3640000 irq:4 bdf:"00:18.0"
seri:/dev/ttyS2 type:mmio base:0x80E00000 irq:6 bdf:"00:18.2"
seri:/dev/ttyS3 type:mmio base:0xB363A000 irq:7 bdf:"00:18.2"
</TTYS_INFO>
<AVAILABLE_IRQ_INFO>

View File

@ -257,8 +257,8 @@
</BLOCK_DEVICE_INFO>
<TTYS_INFO>
seri:/dev/ttyS0 type:mmio base:0x91526000 irq:4
seri:/dev/ttyS1 type:mmio base:0x91524000 irq:5
seri:/dev/ttyS0 type:mmio base:0x91526000 irq:4 bdf:"00:18.0"
seri:/dev/ttyS1 type:mmio base:0x91524000 irq:5 bdf:"00:18.1"
</TTYS_INFO>
<AVAILABLE_IRQ_INFO>

View File

@ -257,8 +257,8 @@
</BLOCK_DEVICE_INFO>
<TTYS_INFO>
seri:/dev/ttyS0 type:mmio base:0x91526000 irq:4
seri:/dev/ttyS1 type:mmio base:0x91524000 irq:5
seri:/dev/ttyS0 type:mmio base:0x91526000 irq:4 bdf:"00:18.0"
seri:/dev/ttyS1 type:mmio base:0x91524000 irq:5 bdf:"00:18.1"
</TTYS_INFO>
<AVAILABLE_IRQ_INFO>