mirror of
https://github.com/drasko/codezero.git
synced 2026-01-12 02:43:15 +01:00
Added start/end/size attributes for devices in caps.py instead of
resource.c
This commit is contained in:
@@ -148,7 +148,9 @@ cap_strings = { 'ipc' : \
|
||||
\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 = 0, .end = 0, .size = 0,
|
||||
\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' : \
|
||||
@@ -160,12 +162,13 @@ cap_strings = { 'ipc' : \
|
||||
\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 = 0, .end = 0, .size = 0,
|
||||
\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.size = 1,
|
||||
\t\t\t},
|
||||
'''
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# These are carefully crafted functions, touch with care.
|
||||
#
|
||||
@@ -232,7 +235,8 @@ def prepare_typed_capability(cont, param, val):
|
||||
|
||||
# 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)
|
||||
cont.caps[captype] = \
|
||||
templ.safe_substitute(cid = cont.id, devnum = devid)
|
||||
|
||||
# Fill in the blank size field
|
||||
elif 'SIZE' in params:
|
||||
|
||||
@@ -13,16 +13,14 @@
|
||||
#include <l4/generic/cap-types.h>
|
||||
#include <l4/generic/resource.h>
|
||||
|
||||
#define PLATFORM_CONSOLE0_BASE PB926_UART0_VBASE
|
||||
#define PLATFORM_CONSOLE0_BASE PB926_UART0_VBASE
|
||||
|
||||
/* SP804 timer has TIMER1 at TIMER0 + 0x20 address */
|
||||
#define PLATFORM_TIMER0_BASE PB926_TIMER01_VBASE
|
||||
|
||||
#define PLATFORM_TIMER_REL_OFFSET 0x20
|
||||
#define PLATFORM_TIMER0_BASE PB926_TIMER01_VBASE
|
||||
|
||||
#define PLATFORM_SP810_BASE PB926_SYSCTRL_VBASE
|
||||
#define PLATFORM_IRQCTRL_BASE PB926_VIC_VBASE
|
||||
#define PLATFORM_SIRQCTRL_BASE PB926_SIC_VBASE
|
||||
#define PLATFORM_IRQCTRL_BASE PB926_VIC_VBASE
|
||||
#define PLATFORM_SIRQCTRL_BASE PB926_SIC_VBASE
|
||||
|
||||
/* Total number of timers present in this platform */
|
||||
#define TOTAL_TIMERS 4
|
||||
@@ -32,6 +30,16 @@
|
||||
#define PLATFORM_TIMER2 2
|
||||
#define PLATFORM_TIMER3 3
|
||||
|
||||
/* Wrapping Plaform specific Physical Device Addresses */
|
||||
#define PLATFORM_CONSOLE0_PHY_BASE PB926_UART0_BASE
|
||||
#define PLATFORM_CONSOLE1_PHY_BASE PB926_UART1_BASE
|
||||
#define PLATFORM_CONSOLE2_PHY_BASE PB926_UART2_BASE
|
||||
#define PLATFORM_CONSOLE3_PHY_BASE PB926_UART3_BASE
|
||||
|
||||
#define PLATFORM_TIMER0_PHY_BASE PB926_TIMER01_BASE
|
||||
#define PLATFORM_TIMER1_PHY_BASE PB926_TIMER23_BASE
|
||||
|
||||
|
||||
int platform_setup_device_caps(struct kernel_resources *kres);
|
||||
void platform_irq_enable(int irq);
|
||||
void platform_irq_disable(int irq);
|
||||
|
||||
@@ -29,6 +29,7 @@ cinfo_file_start = \
|
||||
#include <l4/generic/resource.h>
|
||||
#include <l4/generic/capability.h>
|
||||
#include <l4/generic/cap-types.h>
|
||||
#include INC_PLAT(platform.h)
|
||||
|
||||
%s
|
||||
|
||||
|
||||
@@ -334,21 +334,13 @@ int memcap_request_device(struct cap_list *cap_list,
|
||||
struct capability *cap, *n;
|
||||
|
||||
list_foreach_removable_struct(cap, n, &cap_list->caps, list) {
|
||||
if (cap->uattr[0] == devcap->uattr[0]) {
|
||||
|
||||
/*
|
||||
* We dont want the user to provide, start end addresses,
|
||||
* just selecting the type of device to be used is fine
|
||||
*/
|
||||
devcap->start = cap->start;
|
||||
devcap->end = cap->end;
|
||||
devcap->size = cap->size;
|
||||
|
||||
/* Unlink only. This is boot memory */
|
||||
list_remove(&cap->list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (cap->start == devcap->start &&
|
||||
cap->end == devcap->end &&
|
||||
cap_is_devmem(cap)) {
|
||||
/* Unlink only. This is boot memory */
|
||||
list_remove(&cap->list);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
printk("%s: FATAL: Device memory requested "
|
||||
"does not match any available device "
|
||||
|
||||
Reference in New Issue
Block a user