ohci0 isn't able to read or write (actually we don't know exactly) from an
allocated resource.
may some malloc/free/sync/mmu fail?! no idea! :(
therefore here a hack to in ohci_init. when the ohci isn't in the RESET
state (that is after an hardware reset), we know it is an warm start and
allocated some memory... but this is no real useful workaround :(
VIDEO_SetFrameBuffer(get_xfb());
VISetupEncoder();
VIDEO_SetFrameBuffer(get_xfb());
VISetupEncoder();
u32 version = ipc_getvers();
u16 mini_version_major = version >> 16 & 0xFFFF;
u16 mini_version_minor = version & 0xFFFF;
u32 version = ipc_getvers();
u16 mini_version_major = version >> 16 & 0xFFFF;
u16 mini_version_minor = version & 0xFFFF;
; // better ideas welcome!
}
; // better ideas welcome!
}
/*
print_str_noscroll(112, 112, "ohai, world!\n");
testOTP();
printf("bye, world!\n");
*/
/*
print_str_noscroll(112, 112, "ohai, world!\n");
testOTP();
printf("bye, world!\n");
*/
- while(1) {
- // just to get sure we are still in this loop
- //_CPU_ISR_Enable() // don't know why this is needed...
- //udelay(100000);
- //printf("x");
- }
-
n = next;
prev = 0;
while(virt_to_phys(n)) {
n = next;
prev = 0;
while(virt_to_phys(n)) {
- if(prev) {
- free(prev);
- }
-
dump_address(n, sizeof(struct general_td), "n(after)");
if(n->buflen > 0) {
dump_address(n, sizeof(struct general_td), "n(after)");
if(n->buflen > 0) {
dbg_td_flag(LE(n->flags));
prev = n;
n = (struct general_td*) n->nexttd;
dbg_td_flag(LE(n->flags));
prev = n;
n = (struct general_td*) n->nexttd;
/* disable hc interrupts */
set32(OHCI0_HC_INT_DISABLE, OHCI_INTR_MIE);
/* disable hc interrupts */
set32(OHCI0_HC_INT_DISABLE, OHCI_INTR_MIE);
+#if 1
+ /* after a warm start we have some really odd memory issues.
+ * some malloc/free/sync/mmu fail?! no idea!
+ */
+ if((read32(OHCI0_HC_CONTROL) & OHCI_CTRL_HCFS) != OHCI_USB_RESET) {
+ (void) malloc(256);
+ printf("WTF malloc\n");
+ }
+#endif
+
/* save fmInterval and calculate FSMPS */
#define FSMP(fi) (0x7fff & ((6 * ((fi) - 210)) / 7))
#define FI 0x2edf /* 12000 bits per frame (-1) */
/* save fmInterval and calculate FSMPS */
#define FSMP(fi) (0x7fff & ((6 * ((fi) - 210)) / 7))
#define FI 0x2edf /* 12000 bits per frame (-1) */