| 523 | } |
| 524 | |
| 525 | void sched_reset(void) { |
| 526 | const uint32_t def_rates[CLOCK_NUM_ITEMS] = { 48000000, 10000000, 60, 48000000, 24000000, 12000000, 6000000, 3000000, 1000000, 32768 }; |
| 527 | |
| 528 | struct sched_item usb_device_item = sched.items[SCHED_USB_DEVICE]; |
| 529 | |
| 530 | memset(&sched, 0, sizeof sched); |
| 531 | for (enum sched_item_id id = 0; id < SCHED_NUM_ITEMS; id++) { |
| 532 | sched.items[id].timestamp = SCHED_INACTIVE_FLAG; |
| 533 | } |
| 534 | |
| 535 | for (enum clock_id clock = 0; clock < CLOCK_NUM_ITEMS; clock++) { |
| 536 | assert(SCHED_BASE_CLOCK_RATE % def_rates[clock] == 0); |
| 537 | assert(def_rates[clock] > (SCHED_BASE_CLOCK_RATE >> 32)); |
| 538 | sched.clocks[clock].tick_unit = (uint32_t)(SCHED_BASE_CLOCK_RATE / def_rates[clock]); |
| 539 | update_reciprocal(&sched.clocks[clock]); |
| 540 | } |
| 541 | |
| 542 | sched_init_events(); |
| 543 | |
| 544 | sched.items[SCHED_SECOND].clock = CLOCK_32K; |
| 545 | sched.items[SCHED_SECOND].timestamp = SCHED_BASE_CLOCK_RATE; |
| 546 | sched_update_next(SCHED_SECOND); |
| 547 | |
| 548 | sched_set(SCHED_RUN, 0); |
| 549 | |
| 550 | sched.items[SCHED_USB_DEVICE] = usb_device_item; |
| 551 | |
| 552 | sched.items[SCHED_NO_DMA].clock = CLOCK_48M; |
| 553 | sched.items[SCHED_NO_DMA].timestamp = SCHED_INACTIVE_FLAG; |
| 554 | sched.dma.next = SCHED_NO_DMA; |
| 555 | sched.dma.last_mem_timestamp = 0; |
| 556 | } |
| 557 | |
| 558 | void sched_init(void) { |
| 559 | memset(&sched, 0, sizeof sched); |
nothing calls this directly
no test coverage detected