mirror of
https://github.com/drasko/codezero.git
synced 2026-07-26 00:55:24 +02: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.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.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\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},
|
\t\t\t},
|
||||||
'''
|
'''
|
||||||
, 'timer' : \
|
, 'timer' : \
|
||||||
@@ -160,12 +162,13 @@ cap_strings = { 'ipc' : \
|
|||||||
\t\t\t\t.type = CAP_TYPE_MAP_PHYSMEM | CAP_RTYPE_CONTAINER,
|
\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.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\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},
|
\t\t\t},
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# These are carefully crafted functions, touch with care.
|
# 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, amend current container id and devnum as default
|
||||||
if 'DEVICE' in params:
|
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
|
# Fill in the blank size field
|
||||||
elif 'SIZE' in params:
|
elif 'SIZE' in params:
|
||||||
|
|||||||
@@ -13,16 +13,14 @@
|
|||||||
#include <l4/generic/cap-types.h>
|
#include <l4/generic/cap-types.h>
|
||||||
#include <l4/generic/resource.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 */
|
/* SP804 timer has TIMER1 at TIMER0 + 0x20 address */
|
||||||
#define PLATFORM_TIMER0_BASE PB926_TIMER01_VBASE
|
#define PLATFORM_TIMER0_BASE PB926_TIMER01_VBASE
|
||||||
|
|
||||||
#define PLATFORM_TIMER_REL_OFFSET 0x20
|
|
||||||
|
|
||||||
#define PLATFORM_SP810_BASE PB926_SYSCTRL_VBASE
|
#define PLATFORM_SP810_BASE PB926_SYSCTRL_VBASE
|
||||||
#define PLATFORM_IRQCTRL_BASE PB926_VIC_VBASE
|
#define PLATFORM_IRQCTRL_BASE PB926_VIC_VBASE
|
||||||
#define PLATFORM_SIRQCTRL_BASE PB926_SIC_VBASE
|
#define PLATFORM_SIRQCTRL_BASE PB926_SIC_VBASE
|
||||||
|
|
||||||
/* Total number of timers present in this platform */
|
/* Total number of timers present in this platform */
|
||||||
#define TOTAL_TIMERS 4
|
#define TOTAL_TIMERS 4
|
||||||
@@ -32,6 +30,16 @@
|
|||||||
#define PLATFORM_TIMER2 2
|
#define PLATFORM_TIMER2 2
|
||||||
#define PLATFORM_TIMER3 3
|
#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);
|
int platform_setup_device_caps(struct kernel_resources *kres);
|
||||||
void platform_irq_enable(int irq);
|
void platform_irq_enable(int irq);
|
||||||
void platform_irq_disable(int irq);
|
void platform_irq_disable(int irq);
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ cinfo_file_start = \
|
|||||||
#include <l4/generic/resource.h>
|
#include <l4/generic/resource.h>
|
||||||
#include <l4/generic/capability.h>
|
#include <l4/generic/capability.h>
|
||||||
#include <l4/generic/cap-types.h>
|
#include <l4/generic/cap-types.h>
|
||||||
|
#include INC_PLAT(platform.h)
|
||||||
|
|
||||||
%s
|
%s
|
||||||
|
|
||||||
|
|||||||
@@ -334,21 +334,13 @@ int memcap_request_device(struct cap_list *cap_list,
|
|||||||
struct capability *cap, *n;
|
struct capability *cap, *n;
|
||||||
|
|
||||||
list_foreach_removable_struct(cap, n, &cap_list->caps, list) {
|
list_foreach_removable_struct(cap, n, &cap_list->caps, list) {
|
||||||
if (cap->uattr[0] == devcap->uattr[0]) {
|
if (cap->start == devcap->start &&
|
||||||
|
cap->end == devcap->end &&
|
||||||
/*
|
cap_is_devmem(cap)) {
|
||||||
* We dont want the user to provide, start end addresses,
|
/* Unlink only. This is boot memory */
|
||||||
* just selecting the type of device to be used is fine
|
list_remove(&cap->list);
|
||||||
*/
|
return 0;
|
||||||
devcap->start = cap->start;
|
}
|
||||||
devcap->end = cap->end;
|
|
||||||
devcap->size = cap->size;
|
|
||||||
|
|
||||||
/* Unlink only. This is boot memory */
|
|
||||||
list_remove(&cap->list);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
printk("%s: FATAL: Device memory requested "
|
printk("%s: FATAL: Device memory requested "
|
||||||
"does not match any available device "
|
"does not match any available device "
|
||||||
|
|||||||
Reference in New Issue
Block a user