Separate out DMAMUX1 and DMAMUX2 requests.
This commit is contained in:
parent
ae5f130474
commit
bbd3378cdc
39
parse.py
39
parse.py
@ -1,5 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import sys
|
||||||
import xmltodict
|
import xmltodict
|
||||||
import yaml
|
import yaml
|
||||||
try:
|
try:
|
||||||
@ -444,6 +445,7 @@ dma_request_headers_parsed = {}
|
|||||||
|
|
||||||
def adjust_dma_requests(chip_name, pname, requests):
|
def adjust_dma_requests(chip_name, pname, requests):
|
||||||
adjusted = {}
|
adjusted = {}
|
||||||
|
adjusted.update( requests )
|
||||||
|
|
||||||
if (dma_request_header := find_dma_request_header(chip_name)) is not None:
|
if (dma_request_header := find_dma_request_header(chip_name)) is not None:
|
||||||
for (request, original) in requests.items():
|
for (request, original) in requests.items():
|
||||||
@ -473,12 +475,11 @@ def adjust_dma_requests(chip_name, pname, requests):
|
|||||||
define = dmamux_request_header['defines']['all'].get(define_name)
|
define = dmamux_request_header['defines']['all'].get(define_name)
|
||||||
|
|
||||||
if define is not None:
|
if define is not None:
|
||||||
adjusted[request] = define
|
adjusted[request]['request'] = define
|
||||||
else:
|
else:
|
||||||
adjusted[request] = original
|
adjusted[request]['request'] = original['request']
|
||||||
return adjusted
|
|
||||||
else:
|
return adjusted
|
||||||
return requests
|
|
||||||
|
|
||||||
def find_dma_request_header(chip_name):
|
def find_dma_request_header(chip_name):
|
||||||
target = chip_name.lower()
|
target = chip_name.lower()
|
||||||
@ -558,6 +559,9 @@ def parse_chips():
|
|||||||
for f in sorted(glob('sources/cubedb/mcu/STM32*.xml')):
|
for f in sorted(glob('sources/cubedb/mcu/STM32*.xml')):
|
||||||
if 'STM32MP' in f:
|
if 'STM32MP' in f:
|
||||||
continue
|
continue
|
||||||
|
if len(sys.argv) > 1:
|
||||||
|
if not sys.argv[1] in f:
|
||||||
|
continue
|
||||||
print(f)
|
print(f)
|
||||||
|
|
||||||
r = xmltodict.parse(open(f, 'rb'))['Mcu']
|
r = xmltodict.parse(open(f, 'rb'))['Mcu']
|
||||||
@ -693,6 +697,9 @@ def parse_chips():
|
|||||||
pins[peri_name].append(entry)
|
pins[peri_name].append(entry)
|
||||||
|
|
||||||
for chip_name, chip in chips.items():
|
for chip_name, chip in chips.items():
|
||||||
|
if len(sys.argv) > 1:
|
||||||
|
if not chip_name.startswith(sys.argv[1]):
|
||||||
|
continue
|
||||||
print(f'* processing chip {chip_name}')
|
print(f'* processing chip {chip_name}')
|
||||||
rcc = chip['rcc']
|
rcc = chip['rcc']
|
||||||
del chip['rcc']
|
del chip['rcc']
|
||||||
@ -762,6 +769,11 @@ def parse_chips():
|
|||||||
p['dma_channels'] = dma_channels[chip_dma]['peripherals'][pname]['channels']
|
p['dma_channels'] = dma_channels[chip_dma]['peripherals'][pname]['channels']
|
||||||
if 'requests' in dma_channels[chip_dma]['peripherals'][pname]:
|
if 'requests' in dma_channels[chip_dma]['peripherals'][pname]:
|
||||||
p['dma_requests'] = adjust_dma_requests(chip_name, pname, dma_channels[chip_dma]['peripherals'][pname]['requests'])
|
p['dma_requests'] = adjust_dma_requests(chip_name, pname, dma_channels[chip_dma]['peripherals'][pname]['requests'])
|
||||||
|
if chip_bdma is not None and pname in dma_channels[chip_bdma]['peripherals']:
|
||||||
|
if 'channels' in dma_channels[chip_bdma]['peripherals'][pname]:
|
||||||
|
p['dma_channels'] = dma_channels[chip_bdma]['peripherals'][pname]['channels']
|
||||||
|
if 'requests' in dma_channels[chip_bdma]['peripherals'][pname]:
|
||||||
|
p['dma_requests'] = adjust_dma_requests(chip_name, pname, dma_channels[chip_bdma]['peripherals'][pname]['requests'])
|
||||||
|
|
||||||
peris[pname] = p
|
peris[pname] = p
|
||||||
|
|
||||||
@ -923,12 +935,14 @@ def parse_gpio_af():
|
|||||||
|
|
||||||
dma_channels = {}
|
dma_channels = {}
|
||||||
|
|
||||||
|
|
||||||
def parse_dma():
|
def parse_dma():
|
||||||
for f in glob('sources/cubedb/mcu/IP/*DMA-*Modes.xml'):
|
for f in glob('sources/cubedb/mcu/IP/*DMA-*Modes.xml'):
|
||||||
|
is_explicitly_bdma = False
|
||||||
ff = removeprefix(f, 'sources/cubedb/mcu/IP/')
|
ff = removeprefix(f, 'sources/cubedb/mcu/IP/')
|
||||||
if not ( ff.startswith('B') or ff.startswith( 'D' ) ):
|
if not ( ff.startswith('B') or ff.startswith( 'D' ) ):
|
||||||
continue
|
continue
|
||||||
|
if ff.startswith("BDMA"):
|
||||||
|
is_explicitly_bdma = True
|
||||||
ff = removeprefix(ff, 'DMA-')
|
ff = removeprefix(ff, 'DMA-')
|
||||||
ff = removeprefix(ff, 'BDMA-')
|
ff = removeprefix(ff, 'BDMA-')
|
||||||
ff = removesuffix(ff, '_Modes.xml')
|
ff = removesuffix(ff, '_Modes.xml')
|
||||||
@ -963,7 +977,17 @@ def parse_dma():
|
|||||||
if 'requests' not in peri_dma:
|
if 'requests' not in peri_dma:
|
||||||
peri_dma['requests'] = {}
|
peri_dma['requests'] = {}
|
||||||
if event not in peri_dma['requests']:
|
if event not in peri_dma['requests']:
|
||||||
peri_dma['requests'][event] = request_num
|
if is_explicitly_bdma:
|
||||||
|
peri_dma['requests'][event] = {
|
||||||
|
"dmamux": "DMAMUX2",
|
||||||
|
"request": request_num,
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
#peri_dma['requests'][event] = request_num
|
||||||
|
peri_dma['requests'][event] = {
|
||||||
|
"dmamux": "DMAMUX1",
|
||||||
|
"request": request_num,
|
||||||
|
}
|
||||||
request_num += 1
|
request_num += 1
|
||||||
for n in dma_peri_name.split(","):
|
for n in dma_peri_name.split(","):
|
||||||
n = n.strip()
|
n = n.strip()
|
||||||
@ -1040,7 +1064,6 @@ def parse_dma():
|
|||||||
|
|
||||||
dma_channels[ff] = chip_dma
|
dma_channels[ff] = chip_dma
|
||||||
|
|
||||||
|
|
||||||
clocks = {}
|
clocks = {}
|
||||||
|
|
||||||
def parse_clocks():
|
def parse_clocks():
|
||||||
|
Loading…
x
Reference in New Issue
Block a user