tools/gen-device-svd: fix interrupts for derived peripherals

This commit is contained in:
Ayke van Laethem
2018-10-03 20:06:13 +02:00
parent 9d408b7cbc
commit b36b9c24a2
+14 -14
View File
@@ -54,6 +54,20 @@ def readSVD(path, sourceURL):
if groupNameTags:
groupName = getText(groupNameTags[0])
for interrupt in periphEl.findall('interrupt'):
intrName = getText(interrupt.find('name'))
intrIndex = int(getText(interrupt.find('value')))
if intrName in interrupts:
if interrupts[intrName]['index'] != intrIndex:
raise ValueError('interrupt with the same name has different indexes: ' + intrName)
interrupts[intrName]['description'] += ' // ' + description
else:
interrupts[intrName] = {
'name': intrName,
'index': intrIndex,
'description': description,
}
if periphEl.get('derivedFrom') or groupName in groups:
if periphEl.get('derivedFrom'):
derivedFromName = periphEl.get('derivedFrom')
@@ -83,20 +97,6 @@ def readSVD(path, sourceURL):
if groupName and groupName not in groups:
groups[groupName] = peripheral
for interrupt in periphEl.findall('interrupt'):
intrName = getText(interrupt.find('name'))
intrIndex = int(getText(interrupt.find('value')))
if intrName in interrupts:
if interrupts[intrName]['index'] != intrIndex:
raise ValueError('interrupt with the same name has different indexes: ' + intrName)
interrupts[intrName]['description'] += ' // ' + description
else:
interrupts[intrName] = {
'name': intrName,
'index': intrIndex,
'description': description,
}
regsEls = periphEl.findall('registers')
if regsEls:
if len(regsEls) != 1: