mirror of
https://github.com/drasko/codezero.git
synced 2026-01-21 15:23:15 +01:00
Changes to platform device handling, irqs, userspace device configuration
Revised irq handling and device address naming on internal devices.
This commit is contained in:
@@ -139,31 +139,18 @@ cap_strings = { 'ipc' : \
|
||||
\t\t\t\t.size = ${size},
|
||||
\t\t\t},
|
||||
'''
|
||||
, 'uart' : \
|
||||
, 'device' : \
|
||||
'''
|
||||
\t\t\t[${idx}] = {
|
||||
\t\t\t\t/* For device selection */
|
||||
\t\t\t\t.target = ${cid},
|
||||
\t\t\t\t.attr = CAP_DEVTYPE_UART | (${devnum} << 16),
|
||||
\t\t\t\t.attr = (CAP_DEVTYPE_${devtype} & CAP_DEVTYPE_MASK)
|
||||
\t\t\t\t\t| ((${devnum} << CAP_DEVNUM_SHIFT) & CAP_DEVNUM_MASK),
|
||||
\t\t\t\t.type = CAP_TYPE_MAP_PHYSMEM | CAP_RTYPE_CONTAINER,
|
||||
\t\t\t\t.access = CAP_MAP_READ | CAP_MAP_WRITE | CAP_MAP_EXEC |
|
||||
\t\t\t\t\tCAP_MAP_CACHED | CAP_MAP_UNCACHED | CAP_MAP_UNMAP | CAP_MAP_UTCB,
|
||||
\t\t\t\t.start = __pfn(PLATFORM_CONSOLE${devnum}_PHY_BASE),
|
||||
\t\t\t\t.end = __pfn(PLATFORM_CONSOLE${devnum}_PHY_BASE) + 1,
|
||||
\t\t\t\t.size = 1,
|
||||
\t\t\t},
|
||||
'''
|
||||
, 'timer' : \
|
||||
'''
|
||||
\t\t\t[${idx}] = {
|
||||
\t\t\t\t/* For device selection */
|
||||
\t\t\t\t.target = ${cid},
|
||||
\t\t\t\t.attr = CAP_DEVTYPE_TIMER | (${devnum} << 16),
|
||||
\t\t\t\t.type = CAP_TYPE_MAP_PHYSMEM | CAP_RTYPE_CONTAINER,
|
||||
\t\t\t\t.access = CAP_MAP_READ | CAP_MAP_WRITE | CAP_MAP_EXEC |
|
||||
\t\t\t\t\tCAP_MAP_CACHED | CAP_MAP_UNCACHED | CAP_MAP_UNMAP | CAP_MAP_UTCB,
|
||||
\t\t\t\t.start = __pfn(PLATFORM_TIMER${devnum}_PHY_BASE),
|
||||
\t\t\t\t.end = __pfn(PLATFORM_TIMER${devnum}_PHY_BASE) + 1,
|
||||
\t\t\t\t\tCAP_MAP_CACHED | CAP_MAP_UNCACHED | CAP_MAP_UNMAP,
|
||||
\t\t\t\t.start = __pfn(PLATFORM_${devname}_BASE),
|
||||
\t\t\t\t.end = __pfn(PLATFORM_${devname}_BASE + PLATFORM_${devname}_SIZE),
|
||||
\t\t\t\t.size = 1,
|
||||
\t\t\t},
|
||||
'''
|
||||
@@ -193,38 +180,42 @@ def prepare_custom_capability(cont, param, val):
|
||||
# Else we leave container id to user-supplied value
|
||||
if ttype == 'CURRENT_CONTAINER':
|
||||
cont.caps[capkey] = templ.safe_substitute(target_rtype = 'CAP_RTYPE_CONTAINER',
|
||||
cid = cont.id)
|
||||
cid = cont.id)
|
||||
elif ttype == 'CURRENT_PAGER_SPACE':
|
||||
cont.caps[capkey] = templ.safe_substitute(target_rtype = 'CAP_RTYPE_SPACE',
|
||||
cid = cont.id)
|
||||
cid = cont.id)
|
||||
elif ttype == 'ANOTHER_CONTAINER':
|
||||
cont.caps[capkey] = templ.safe_substitute(target_rtype = 'CAP_RTYPE_CONTAINER')
|
||||
elif ttype == 'ANOTHER_PAGER':
|
||||
cont.caps[capkey] = templ.safe_substitute(target_rtype = 'CAP_RTYPE_THREAD')
|
||||
elif 'DEVICE' in param:
|
||||
# Extract all fields
|
||||
unused, device_name, rest = param.split('_', 2)
|
||||
capkey = device_name.lower()
|
||||
cont.caps[capkey] = cap_strings['device']
|
||||
templ = Template(cont.caps[capkey])
|
||||
device_id = device_name[-1:]
|
||||
device_type = device_name[:-1]
|
||||
|
||||
# Fill in all blanks
|
||||
cont.caps[capkey] = \
|
||||
templ.safe_substitute(cid = cont.id,
|
||||
devname = device_name,
|
||||
devnum = device_id,
|
||||
devtype = device_type)
|
||||
|
||||
else: # Ignore custom_use symbol
|
||||
return
|
||||
#print capkey
|
||||
#print cont.caps[capkey]
|
||||
# print capkey
|
||||
# print cont.caps[capkey]
|
||||
|
||||
def prepare_typed_capability(cont, param, val):
|
||||
captype, params = param.split('_', 1)
|
||||
captype = captype.lower()
|
||||
|
||||
|
||||
# USE makes us assign the initial cap string with blank fields
|
||||
if 'USE' in params:
|
||||
|
||||
# Special case for device
|
||||
if 'DEVICE' in params:
|
||||
# Extract device name and number
|
||||
devid = captype[-1:]
|
||||
devname = captype[: -1]
|
||||
|
||||
cont.caps[captype] = cap_strings[devname]
|
||||
|
||||
else:
|
||||
cont.caps[captype] = cap_strings[captype]
|
||||
cont.caps[captype] = cap_strings[captype]
|
||||
|
||||
# Prepare string template from capability type
|
||||
templ = Template(cont.caps[captype])
|
||||
@@ -233,11 +224,6 @@ def prepare_typed_capability(cont, param, val):
|
||||
if captype[-len('pool'):] == 'pool':
|
||||
cont.caps[captype] = templ.safe_substitute(cid = cont.id)
|
||||
|
||||
# If device, amend current container id and devnum as default
|
||||
if 'DEVICE' in params:
|
||||
cont.caps[captype] = \
|
||||
templ.safe_substitute(cid = cont.id, devnum = devid)
|
||||
|
||||
# Fill in the blank size field
|
||||
elif 'SIZE' in params:
|
||||
# Get reference to capability string template
|
||||
@@ -278,7 +264,7 @@ def prepare_typed_capability(cont, param, val):
|
||||
#print cont.caps[captype]
|
||||
|
||||
def prepare_capability(cont, param, val):
|
||||
if 'CUSTOM' in param:
|
||||
if 'CUSTOM' in param or 'DEVICE' in param:
|
||||
prepare_custom_capability(cont, param, val)
|
||||
else:
|
||||
prepare_typed_capability(cont, param, val)
|
||||
|
||||
@@ -219,38 +219,38 @@ menu cont%(cn)d_physmem_list
|
||||
# FIXME: All this is to be moved to a per-platform description file.
|
||||
#
|
||||
symbols
|
||||
cont%(cn)d_device_uart1 'Container %(cn)d UART1 Menu'
|
||||
cont%(cn)d_device_uart2 'Container %(cn)d UART2 Menu'
|
||||
cont%(cn)d_device_uart3 'Container %(cn)d UART3 Menu'
|
||||
cont%(cn)d_device_timer1 'Container %(cn)d TIMER23 Menu'
|
||||
cont%(cn)d_cap_device_uart1 'Container %(cn)d UART1 Menu'
|
||||
cont%(cn)d_cap_device_uart2 'Container %(cn)d UART2 Menu'
|
||||
cont%(cn)d_cap_device_uart3 'Container %(cn)d UART3 Menu'
|
||||
cont%(cn)d_cap_device_timer1 'Container %(cn)d TIMER23 Menu'
|
||||
|
||||
CONT%(cn)d_CAP_UART1_DEVICE_USE 'Container %(cn)d UART1 Enable'
|
||||
CONT%(cn)d_CAP_UART2_DEVICE_USE 'Container %(cn)d UART2 Enable'
|
||||
CONT%(cn)d_CAP_UART3_DEVICE_USE 'Container %(cn)d UART3 Enable'
|
||||
CONT%(cn)d_CAP_TIMER1_DEVICE_USE 'Container %(cn)d TIMER23 Enable'
|
||||
CONT%(cn)d_CAP_DEVICE_UART1_USE 'Container %(cn)d UART1 Enable'
|
||||
CONT%(cn)d_CAP_DEVICE_UART2_USE 'Container %(cn)d UART2 Enable'
|
||||
CONT%(cn)d_CAP_DEVICE_UART3_USE 'Container %(cn)d UART3 Enable'
|
||||
CONT%(cn)d_CAP_DEVICE_TIMER1_USE 'Container %(cn)d TIMER23 Enable'
|
||||
|
||||
default CONT%(cn)d_CAP_UART1_DEVICE_USE from n
|
||||
default CONT%(cn)d_CAP_UART2_DEVICE_USE from n
|
||||
default CONT%(cn)d_CAP_UART3_DEVICE_USE from n
|
||||
default CONT%(cn)d_CAP_TIMER1_DEVICE_USE from n
|
||||
default CONT%(cn)d_CAP_DEVICE_UART1_USE from n
|
||||
default CONT%(cn)d_CAP_DEVICE_UART2_USE from n
|
||||
default CONT%(cn)d_CAP_DEVICE_UART3_USE from n
|
||||
default CONT%(cn)d_CAP_DEVICE_TIMER1_USE from n
|
||||
|
||||
menu cont%(cn)d_device_uart1
|
||||
CONT%(cn)d_CAP_UART1_DEVICE_USE
|
||||
menu cont%(cn)d_cap_device_uart1
|
||||
CONT%(cn)d_CAP_DEVICE_UART1_USE
|
||||
|
||||
menu cont%(cn)d_device_uart2
|
||||
CONT%(cn)d_CAP_UART2_DEVICE_USE
|
||||
menu cont%(cn)d_cap_device_uart2
|
||||
CONT%(cn)d_CAP_DEVICE_UART2_USE
|
||||
|
||||
menu cont%(cn)d_device_uart3
|
||||
CONT%(cn)d_CAP_UART3_DEVICE_USE
|
||||
menu cont%(cn)d_cap_device_uart3
|
||||
CONT%(cn)d_CAP_DEVICE_UART3_USE
|
||||
|
||||
menu cont%(cn)d_device_timer1
|
||||
CONT%(cn)d_CAP_TIMER1_DEVICE_USE
|
||||
menu cont%(cn)d_cap_device_timer1
|
||||
CONT%(cn)d_CAP_DEVICE_TIMER1_USE
|
||||
|
||||
menu cont%(cn)d_device_list
|
||||
cont%(cn)d_device_uart1
|
||||
cont%(cn)d_device_uart2
|
||||
cont%(cn)d_device_uart3
|
||||
cont%(cn)d_device_timer1
|
||||
cont%(cn)d_cap_device_uart1
|
||||
cont%(cn)d_cap_device_uart2
|
||||
cont%(cn)d_cap_device_uart3
|
||||
cont%(cn)d_cap_device_timer1
|
||||
|
||||
#
|
||||
# Settings for Custom Capabilities
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# Automatically generated, don't edit
|
||||
#
|
||||
# Generated on: bahadir-laptop
|
||||
# At: Sun, 22 Nov 2009 12:50:07 +0000
|
||||
# At: Sun, 29 Nov 2009 15:31:45 +0000
|
||||
# Linux version 2.6.24-22-generic (buildd@vernadsky) (gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu7)) #1 SMP Mon Nov 24 18:32:42 UTC 2008
|
||||
|
||||
#
|
||||
@@ -46,7 +46,6 @@ CONFIG_CPU_ARM926=y
|
||||
# ARM Platform Type
|
||||
#
|
||||
CONFIG_PLATFORM_EB=n
|
||||
CONFIG_PLATFORM_AB926=n
|
||||
CONFIG_PLATFORM_PB926=y
|
||||
|
||||
|
||||
@@ -74,7 +73,6 @@ CONFIG_CAPABILITIES=y
|
||||
#
|
||||
CONFIG_CONT0_TYPE_BAREMETAL=y
|
||||
CONFIG_CONT0_TYPE_POSIX=n
|
||||
CONFIG_CONT0_TYPE_CUSTOM=n
|
||||
CONFIG_CONT0_TYPE_LINUX=n
|
||||
|
||||
|
||||
@@ -90,6 +88,8 @@ CONFIG_CONT0_BAREMETAL_PROJ0=n
|
||||
CONFIG_CONT0_BAREMETAL_PROJ1=y
|
||||
CONFIG_CONT0_BAREMETAL_PROJ2=n
|
||||
CONFIG_CONT0_BAREMETAL_PROJ3=n
|
||||
CONFIG_CONT0_BAREMETAL_PROJ4=n
|
||||
CONFIG_CONT0_BAREMETAL_PROJ5=n
|
||||
|
||||
|
||||
#
|
||||
@@ -221,6 +221,35 @@ CONFIG_CONT0_CAP_CUSTOM3_USE=n
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Container 0 Devices (Capabilities)
|
||||
#
|
||||
|
||||
#
|
||||
# Container 0 UART1 Menu
|
||||
#
|
||||
CONFIG_CONT0_CAP_DEVICE_UART1_USE=n
|
||||
|
||||
|
||||
#
|
||||
# Container 0 UART2 Menu
|
||||
#
|
||||
CONFIG_CONT0_CAP_DEVICE_UART2_USE=n
|
||||
|
||||
|
||||
#
|
||||
# Container 0 UART3 Menu
|
||||
#
|
||||
CONFIG_CONT0_CAP_DEVICE_UART3_USE=n
|
||||
|
||||
|
||||
#
|
||||
# Container 0 TIMER23 Menu
|
||||
#
|
||||
CONFIG_CONT0_CAP_DEVICE_TIMER1_USE=n
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
@@ -232,7 +261,6 @@ CONFIG_CONT0_CAP_CUSTOM3_USE=n
|
||||
#
|
||||
CONFIG_CONT1_TYPE_BAREMETAL=y
|
||||
CONFIG_CONT1_TYPE_POSIX=n
|
||||
CONFIG_CONT1_TYPE_CUSTOM=n
|
||||
CONFIG_CONT1_TYPE_LINUX=n
|
||||
|
||||
|
||||
@@ -248,6 +276,8 @@ CONFIG_CONT1_BAREMETAL_PROJ0=n
|
||||
CONFIG_CONT1_BAREMETAL_PROJ1=y
|
||||
CONFIG_CONT1_BAREMETAL_PROJ2=n
|
||||
CONFIG_CONT1_BAREMETAL_PROJ3=n
|
||||
CONFIG_CONT1_BAREMETAL_PROJ4=n
|
||||
CONFIG_CONT1_BAREMETAL_PROJ5=n
|
||||
|
||||
|
||||
#
|
||||
@@ -379,6 +409,35 @@ CONFIG_CONT1_CAP_CUSTOM3_USE=n
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Container 1 Devices (Capabilities)
|
||||
#
|
||||
|
||||
#
|
||||
# Container 1 UART1 Menu
|
||||
#
|
||||
CONFIG_CONT1_CAP_DEVICE_UART1_USE=n
|
||||
|
||||
|
||||
#
|
||||
# Container 1 UART2 Menu
|
||||
#
|
||||
CONFIG_CONT1_CAP_DEVICE_UART2_USE=n
|
||||
|
||||
|
||||
#
|
||||
# Container 1 UART3 Menu
|
||||
#
|
||||
CONFIG_CONT1_CAP_DEVICE_UART3_USE=n
|
||||
|
||||
|
||||
#
|
||||
# Container 1 TIMER23 Menu
|
||||
#
|
||||
CONFIG_CONT1_CAP_DEVICE_TIMER1_USE=n
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
@@ -390,7 +449,6 @@ CONFIG_CONT1_CAP_CUSTOM3_USE=n
|
||||
#
|
||||
CONFIG_CONT2_TYPE_BAREMETAL=y
|
||||
CONFIG_CONT2_TYPE_POSIX=n
|
||||
CONFIG_CONT2_TYPE_CUSTOM=n
|
||||
CONFIG_CONT2_TYPE_LINUX=n
|
||||
|
||||
|
||||
@@ -406,6 +464,8 @@ CONFIG_CONT2_BAREMETAL_PROJ0=n
|
||||
CONFIG_CONT2_BAREMETAL_PROJ1=y
|
||||
CONFIG_CONT2_BAREMETAL_PROJ2=n
|
||||
CONFIG_CONT2_BAREMETAL_PROJ3=n
|
||||
CONFIG_CONT2_BAREMETAL_PROJ4=n
|
||||
CONFIG_CONT2_BAREMETAL_PROJ5=n
|
||||
|
||||
|
||||
#
|
||||
@@ -537,6 +597,35 @@ CONFIG_CONT2_CAP_CUSTOM3_USE=n
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Container 2 Devices (Capabilities)
|
||||
#
|
||||
|
||||
#
|
||||
# Container 2 UART1 Menu
|
||||
#
|
||||
CONFIG_CONT2_CAP_DEVICE_UART1_USE=n
|
||||
|
||||
|
||||
#
|
||||
# Container 2 UART2 Menu
|
||||
#
|
||||
CONFIG_CONT2_CAP_DEVICE_UART2_USE=n
|
||||
|
||||
|
||||
#
|
||||
# Container 2 UART3 Menu
|
||||
#
|
||||
CONFIG_CONT2_CAP_DEVICE_UART3_USE=n
|
||||
|
||||
|
||||
#
|
||||
# Container 2 TIMER23 Menu
|
||||
#
|
||||
CONFIG_CONT2_CAP_DEVICE_TIMER1_USE=n
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
@@ -548,7 +637,6 @@ CONFIG_CONT2_CAP_CUSTOM3_USE=n
|
||||
#
|
||||
CONFIG_CONT3_TYPE_BAREMETAL=y
|
||||
CONFIG_CONT3_TYPE_POSIX=n
|
||||
CONFIG_CONT3_TYPE_CUSTOM=n
|
||||
CONFIG_CONT3_TYPE_LINUX=n
|
||||
|
||||
|
||||
@@ -564,6 +652,8 @@ CONFIG_CONT3_BAREMETAL_PROJ0=n
|
||||
CONFIG_CONT3_BAREMETAL_PROJ1=y
|
||||
CONFIG_CONT3_BAREMETAL_PROJ2=n
|
||||
CONFIG_CONT3_BAREMETAL_PROJ3=n
|
||||
CONFIG_CONT3_BAREMETAL_PROJ4=n
|
||||
CONFIG_CONT3_BAREMETAL_PROJ5=n
|
||||
|
||||
|
||||
#
|
||||
@@ -695,15 +785,56 @@ CONFIG_CONT3_CAP_CUSTOM3_USE=n
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Container 3 Devices (Capabilities)
|
||||
#
|
||||
|
||||
#
|
||||
# Container 3 UART1 Menu
|
||||
#
|
||||
CONFIG_CONT3_CAP_DEVICE_UART1_USE=n
|
||||
|
||||
|
||||
#
|
||||
# Container 3 UART2 Menu
|
||||
#
|
||||
CONFIG_CONT3_CAP_DEVICE_UART2_USE=n
|
||||
|
||||
|
||||
#
|
||||
# Container 3 UART3 Menu
|
||||
#
|
||||
CONFIG_CONT3_CAP_DEVICE_UART3_USE=n
|
||||
|
||||
|
||||
#
|
||||
# Container 3 TIMER23 Menu
|
||||
#
|
||||
CONFIG_CONT3_CAP_DEVICE_TIMER1_USE=n
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Derived symbols
|
||||
#
|
||||
CONFIG_CONT1_PAGER_LOAD_ADDR=0x100000
|
||||
CONFIG_DRIVER_IRQ_PL190=y
|
||||
CONFIG_DRIVER_TIMER_SP804=y
|
||||
CONFIG_CONT3_START_PC_ADDR=0x40000000
|
||||
CONFIG_DRIVER_IRQ_GIC=n
|
||||
CONFIG_CONT2_PAGER_VIRT_ADDR=0x30000000
|
||||
CONFIG_CONT2_PAGER_LOAD_ADDR=0x200000
|
||||
CONFIG_CONT1_PAGER_VIRT_ADDR=0x20000000
|
||||
CONFIG_CONT3_PAGER_LOAD_ADDR=0x300000
|
||||
CONFIG_CONT0_PAGER_LOAD_ADDR=0x40000
|
||||
CONFIG_CONT0_PAGER_VIRT_ADDR=0x10000000
|
||||
CONFIG_CONT2_START_PC_ADDR=0x30000000
|
||||
CONFIG_DRIVER_UART_PL011=y
|
||||
CONFIG_CONT3_PAGER_VIRT_ADDR=0x40000000
|
||||
CONFIG_CONT0_START_PC_ADDR=0x10000000
|
||||
CONFIG_CONT1_START_PC_ADDR=0x20000000
|
||||
#
|
||||
# That's all, folks!
|
||||
|
||||
Reference in New Issue
Block a user