Subversion Repositories freemyipod

Rev

Rev 95 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 95 Rev 127
Line 57... Line 57...
57
    DBGACTION_POWEROFF,
57
    DBGACTION_POWEROFF,
58
    DBGACTION_CWRITE,
58
    DBGACTION_CWRITE,
59
    DBGACTION_CREAD,
59
    DBGACTION_CREAD,
60
    DBGACTION_CFLUSH,
60
    DBGACTION_CFLUSH,
61
    DBGACTION_EXECIMAGE,
61
    DBGACTION_EXECIMAGE,
-
 
62
    DBGACTION_EXECFIRMWARE,
62
    DBGACTION_READBOOTFLASH,
63
    DBGACTION_READBOOTFLASH,
63
    DBGACTION_WRITEBOOTFLASH
64
    DBGACTION_WRITEBOOTFLASH
64
};
65
};
65
 
66
 
66
static uint32_t dbgstack[0x100] STACK_ATTR;
67
static uint32_t dbgstack[0x100] STACK_ATTR;
Line 531... Line 532...
531
            dbgactionaddr = dbgrecvbuf[1];
532
            dbgactionaddr = dbgrecvbuf[1];
532
            dbgactionoffset = dbgrecvbuf[2];
533
            dbgactionoffset = dbgrecvbuf[2];
533
            dbgactionlength = dbgrecvbuf[3];
534
            dbgactionlength = dbgrecvbuf[3];
534
            break;
535
            break;
535
#endif
536
#endif
-
 
537
        case 24:  // EXECFIRMWARE
-
 
538
            if (set_dbgaction(DBGACTION_EXECFIRMWARE, 0)) break;
-
 
539
            dbgactionaddr = dbgrecvbuf[1];
-
 
540
            break;
536
        default:
541
        default:
537
            dbgsendbuf[0] = 2;
542
            dbgsendbuf[0] = 2;
538
            size = 16;
543
            size = 16;
539
        }
544
        }
540
        usb_setup_dbg_listener();
545
        usb_setup_dbg_listener();
Line 591... Line 596...
591
                dbgasyncsendbuf[0] = 1;
596
                dbgasyncsendbuf[0] = 1;
592
                usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16 + dbgactionlength);
597
                usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16 + dbgactionlength);
593
                break;
598
                break;
594
#endif
599
#endif
595
            case DBGACTION_POWEROFF:
600
            case DBGACTION_POWEROFF:
596
                if (dbgactiontype) shutdown();
601
                if (dbgactiontype) shutdown(true);
597
                power_off();
602
                power_off();
598
                break;
603
                break;
599
            case DBGACTION_RESET:
604
            case DBGACTION_RESET:
600
                shutdown();
605
                shutdown(false);
601
                reset();
606
                reset();
602
                break;
607
                break;
603
            case DBGACTION_CWRITE:
608
            case DBGACTION_CWRITE:
604
                cwrite(dbgactionconsoles, (const char*)dbgasyncsendbuf, dbgactionlength);
609
                cwrite(dbgactionconsoles, (const char*)dbgasyncsendbuf, dbgactionlength);
605
                dbgasyncsendbuf[0] = 1;
610
                dbgasyncsendbuf[0] = 1;
Line 619... Line 624...
619
            case DBGACTION_EXECIMAGE:
624
            case DBGACTION_EXECIMAGE:
620
                dbgasyncsendbuf[0] = 1;
625
                dbgasyncsendbuf[0] = 1;
621
                dbgasyncsendbuf[1] = execimage((void*)dbgactionaddr);
626
                dbgasyncsendbuf[1] = execimage((void*)dbgactionaddr);
622
                usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
627
                usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
623
                break;
628
                break;
-
 
629
            case DBGACTION_EXECFIRMWARE:
-
 
630
                shutdown(false);
-
 
631
                dbgasyncsendbuf[0] = 1;
-
 
632
                usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
-
 
633
                execfirmware((void*)dbgactionaddr);
624
#ifdef HAVE_BOOTFLASH
634
#ifdef HAVE_BOOTFLASH
625
            case DBGACTION_READBOOTFLASH:
635
            case DBGACTION_READBOOTFLASH:
626
                bootflash_readraw((void*)dbgactionaddr, dbgactionoffset, dbgactionlength);
636
                bootflash_readraw((void*)dbgactionaddr, dbgactionoffset, dbgactionlength);
627
                dbgasyncsendbuf[0] = 1;
637
                dbgasyncsendbuf[0] = 1;
628
                usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);
638
                usb_drv_send_nonblocking(dbgendpoints[1], dbgasyncsendbuf, 16);