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