1
0
mirror of git://projects.qi-hardware.com/iris.git synced 2025-04-21 12:27:27 +03:00

Make it compile again; fixed poweroff problem

This commit is contained in:
Bas Wijnen
2013-05-12 09:46:11 -04:00
parent 223ed86672
commit b06e011a07
16 changed files with 245 additions and 195 deletions

View File

@@ -23,6 +23,7 @@ Iris::Num start ():
Iris::my_parent.provide_capability <Iris::Event> (self)
cap = Iris::my_receiver.create_capability (INTERRUPT)
Iris::my_parent.init_done ()
font.printf ("Press a key to attempt reboot.\n")
while true:
Iris::wait ()
switch Iris::recv.protected_data.l:
@@ -38,13 +39,16 @@ Iris::Num start ():
font.printf ("alarm: control event\n")
break
case KBD:
// Key press
unsigned time = rtc.get_time ()
unsigned alarm = rtc.get_alarm ()
unsigned enabled = Iris::recv.data[1].l
font.printf ("%d %d %d", time, alarm, enabled)
rtc.set_alarm (time + 10, cap)
Iris::poweroff ()
if Iris::recv.data[0].l & Iris::Keyboard::RELEASE:
// Key release.
Iris::poweroff ()
else:
// Key press.
unsigned time = rtc.get_time ()
rtc.set_alarm (time + 5, cap)
unsigned alarm = rtc.get_alarm ()
unsigned enabled = Iris::recv.data[1].l
font.printf ("Debug: %d %d %d\n", time, alarm, enabled)
break
default:
Iris::panic (Iris::recv.protected_data.l, "invalid request for alarm")

View File

@@ -51,8 +51,8 @@ Iris::Num start ():
rtc_set_adjc_val (0)
ready ()
rtc_set_second (0)
ready ()
rtc_disable_1Hz_irq ()
ready ()
rtc_set_alarm_second (0)
ready ()
rtc_disable_alarm ()
ready ()
@@ -60,6 +60,8 @@ Iris::Num start ():
ready ()
rtc_enable_alarm_irq ()
ready ()
rtc_disable_1Hz_irq ()
ready ()
rtc_set_hwfcr_val (0)
ready ()
rtc_set_hrcr_val (0)

View File

@@ -459,8 +459,10 @@ void Mmc::read_page (Iris::Page page, Iris::Num address, unsigned size, unsigned
offset &= ~PAGE_MASK & ~3
if size + offset > PAGE_SIZE:
size = PAGE_SIZE - offset
page.set_flags (Iris::Page::PAYING | Iris::Page::FRAME)
page.share (buffer_page)
buffer_page.set_flags (Iris::Page::PAYING | Iris::Page::FRAME)
page.set_flags (0, Iris::Page::PAYING)
for unsigned i = 0; i < size; i += 4:
((unsigned *)buffer)[(offset + i) >> 2] = current_block[(start_pos + i) >> 2]
@@ -475,8 +477,10 @@ void Mmc::write_page (Iris::Page page, Iris::Num address, unsigned size, unsigne
offset &= ~PAGE_MASK & ~3
if size + offset > PAGE_SIZE:
size = PAGE_SIZE - offset
page.set_flags (Iris::Page::PAYING | Iris::Page::FRAME)
page.share (buffer_page)
buffer_page.set_flags (Iris::Page::PAYING | Iris::Page::FRAME)
page.set_flags (0, Iris::Page::PAYING)
for unsigned i = 0; i < size; i += 4:
current_block[(start_pos + i) >> 2] = ((unsigned *)buffer)[(offset + i) >> 2]
dirty = true

View File

@@ -1,4 +1,5 @@
#pypp 0
// vim: set filetype=cpp : //
// Iris: micro-kernel for a capability-based operating system.
// boot-programs/udc.ccp: USB device controller driver.
// Copyright 2009 Bas Wijnen <wijnen@debian.org>
@@ -551,13 +552,14 @@ enum pdata:
NAME
Iris::Num start ():
Iris::debug ("udc started")
map_udc ()
map_gpio ()
map_cpm ()
Udc udc
//Iris::Cap logcap = Iris::my_receiver.create_capability (LOG)
//__asm__ volatile ("li $a0, 1\nlw $a1, %0\nbreak" :: "m"(logcap.code): "a0", "a1", "memory")
//__asm__ volatile ("li $a0, 1\nlw $a1, %0\nbreak" :: "m"(logcap.code): "a0", "a1")
Iris::Directory dir = Iris::my_receiver.create_capability (DIRECTORY)
Iris::my_parent.provide_capability <Iris::Directory> (dir.copy ())
Iris::free_cap (dir)