SD service of Genode master branch for Fiasco.OC / PandaBoard doesn’t start
i.ismagilov
i.ismagilov at ...60...
Thu Oct 4 12:05:24 CEST 2012
*_Bug:_*
SD service of Genode master branch _for Fiasco.OC / PandaBoard_ doesn’t
start with *"SD command error"* (occurs in
/os/src/drivers/sd_card/omap4/mmchs.h/:824).
*_ _*
*_Description:_**__*
L4_FPAGE_BUFFERABLE constant (/base-foc/src/base/ipc/pager.cc/:91) is
used to configure I/O memory region.
In *Fiasco.OC *this constant is prepared as Page::*BUFFERED*
(/base-foc/contrib/kernel/fiasco/src/kern/arm/paging-arm.cpp/:65).
In *Fiasco.OC revision* *38* this constant is equal to *0x04* (for both
ARMv6 and ARMv7).
In revision 40 it was changed to *0x40*.
This modification causes SD card driver error (and possible other driver
errors) for ARMv6 and v7 architectures.
*0x04*value seems to correspond to *‘Device’ memory type* (for I/O).
Memory pages corresponding to I/O are non-cacheable.
*0x40*value is seems for ‘Normal’ memory type. *Pages are cached* in
this case but *this is not allowed for I/O* and causes SD card error.
*_Solutions:_*
1) Page::*BUFFERED* constant seems to be _used for I/O only_, not
for RAM (currently). So, we propose to set Page::BUFFERED constant to
0x40 in rev. 40 as it was in rev. 38 (*see attached patch*).
2) If Page::BUFFERED constant is planned to use _for RAM memory
also_, some other constant for I/O memory pages configuring and related
workaround in Genode driver to be added.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.genode.org/pipermail/users/attachments/20121004/11ee697f/attachment.html>
-------------- next part --------------
Index: genode/base-foc/contrib/kernel/fiasco/src/kern/arm/paging-arm.cpp
===================================================================
--- genode/base-foc/contrib/kernel/fiasco/src/kern/arm/paging-arm.cpp (revision 40)
+++ genode/base-foc/contrib/kernel/fiasco/src/kern/arm/paging-arm.cpp (working copy)
@@ -62,7 +62,7 @@
// The next are ARM specific
WRITETHROUGH = 0x08, ///< Write through cached
- BUFFERED = 0x40, ///< Write buffer enabled -- Normal, non-cached
+ BUFFERED = 0x04, ///< Write buffer enabled
MAX_ATTRIBS = 0x0ffc,
Local_page = 0x800,
More information about the users
mailing list