void platform_uninit(void) { platform_uninit_timer(); #if DISPLAY_SPLASH_SCREEN display_shutdown(); #endif }
void platform_uninit(void) { #if DISPLAY_SPLASH_SCREEN display_shutdown(); #endif qtimer_uninit(); }
static void quiet_and_exit(int sig) { if (play_music) { quiet_ay_3_8910(shift_size); close_ay_3_8910(); max98306_free(); } display_shutdown(display_type); printf("Quieting and exiting\n"); _exit(0); }
void platform_uninit(void) { #if DISPLAY_SPLASH_SCREEN display_shutdown(); #endif #if defined(AUTOPLAT_001) /* set GPIO_84 to LOW when leave LK */ gpio_set(84, 1); #endif /* AUTOPLAT_001 */ platform_uninit_timer(); }
int main(int argc, char **argv) { char filename[BUFSIZ]="intro2.ym"; int result; int c; int next_song,first_song; /* Setup control-C handler to quiet the music */ /* otherwise if you force quit it keeps playing */ /* the last tones */ signal(SIGINT, quiet_and_exit); /* Set to have highest possible priority */ display_enable_realtime(); /* Parse command line arguments */ while ((c = getopt(argc, argv, "dDmhvmsnitr"))!=-1) { switch (c) { case 'd': /* Debug messages */ printf("Debug enabled\n"); dump_info=1; break; case 'D': /* diff mode */ printf("Diff mode\n"); diff_mode=1; break; case 'h': /* help */ print_help(0,argv[0]); break; case 'v': /* version */ print_help(1,argv[0]); break; case 'm': /* mono sound */ shift_size=8; break; case 's': /* stereo sound */ shift_size=16; break; case 'n': /* no sound */ play_music=0; break; case 'i': /* i2c visualization */ display_type=DISPLAY_I2C; break; case 't': /* text visualization */ display_type=DISPLAY_TEXT; break; case 'r': /* repeat */ music_repeat=1; break; default: print_help(0,argv[0]); break; } } first_song=optind; next_song=0; /* Initialize the Chip interface */ if (play_music) { result=initialize_ay_3_8910(0); if (result<0) { printf("Error initializing bcm2835!\n"); printf("Maybe try running as root?\n\n"); exit(0); } result=max98306_init(); if (result<0) { printf("Error initializing max98306 amp\n"); exit(0); } printf("Headphone is: %d\n", max98306_check_headphone()); if (amp_disable) { result=max98306_disable(); } else { result=max98306_enable(); } } /* Initialize the displays */ if (visualize) { result=display_init(display_type); if (result<0) { printf("Error initializing display!\n"); printf("Turning off display for now!\n"); display_type=0; } } while(1) { if (argv[first_song+next_song]!=NULL) { strcpy(filename,argv[first_song+next_song]); next_song++; } else { break; } /* Play the song */ result=play_song(filename); if (result==CMD_EXIT_PROGRAM) { break; } if (result==CMD_BACK) { next_song-=2; if (next_song<0) next_song=0; } if (result==CMD_NEXT) { /* already point to next song */ } /* Quiet down the chips */ if (play_music) { quiet_ay_3_8910(shift_size); } usleep(500000); } /* Get ready to shut down */ /* Quiet down the chips */ if (play_music) { quiet_ay_3_8910(shift_size); close_ay_3_8910(); max98306_free(); } /* Clear out display */ if (visualize) { display_shutdown(display_type); } return 0; }
void boot_linux(void *kernel, unsigned *tags, const char *cmdline, unsigned machtype, void *ramdisk, unsigned ramdisk_size) { unsigned *ptr = tags; unsigned pcount = 0; void (*entry)(unsigned,unsigned,unsigned*) = kernel; struct ptable *ptable; int cmdline_len = 0; int have_cmdline = 0; int pause_at_bootup = 0; /* CORE */ *ptr++ = 2; *ptr++ = 0x54410001; if (ramdisk_size) { *ptr++ = 4; *ptr++ = 0x54420005; *ptr++ = (unsigned)ramdisk; *ptr++ = ramdisk_size; } ptr = target_atag_mem(ptr); if (!target_is_emmc_boot()) { /* Skip NAND partition ATAGS for eMMC boot */ if ((ptable = flash_get_ptable()) && (ptable->count != 0)) { int i; for(i=0; i < ptable->count; i++) { struct ptentry *ptn; ptn = ptable_get(ptable, i); if (ptn->type == TYPE_APPS_PARTITION) pcount++; } *ptr++ = 2 + (pcount * (sizeof(struct atag_ptbl_entry) / sizeof(unsigned))); *ptr++ = 0x4d534d70; for (i = 0; i < ptable->count; ++i) ptentry_to_tag(&ptr, ptable_get(ptable, i)); } } if (cmdline && cmdline[0]) { cmdline_len = strlen(cmdline); have_cmdline = 1; } if (target_is_emmc_boot()) { cmdline_len += strlen(emmc_cmdline); } if (target_pause_for_battery_charge()) { pause_at_bootup = 1; cmdline_len += strlen(battchg_pause); } if (cmdline_len > 0) { const char *src; char *dst; unsigned n; /* include terminating 0 and round up to a word multiple */ n = (cmdline_len + 4) & (~3); *ptr++ = (n / 4) + 2; *ptr++ = 0x54410009; dst = (char *)ptr; if (have_cmdline) { src = cmdline; while ((*dst++ = *src++)); } if (target_is_emmc_boot()) { src = emmc_cmdline; if (have_cmdline) --dst; have_cmdline = 1; while ((*dst++ = *src++)); } if (pause_at_bootup) { src = battchg_pause; if (have_cmdline) --dst; while ((*dst++ = *src++)); } ptr += (n / 4); } /* END */ *ptr++ = 0; *ptr++ = 0; dprintf(INFO, "booting linux @ %p, ramdisk @ %p (%d)\n", kernel, ramdisk, ramdisk_size); if (cmdline) dprintf(INFO, "cmdline: %s\n", cmdline); enter_critical_section(); platform_uninit_timer(); arch_disable_cache(UCACHE); arch_disable_mmu(); #if DISPLAY_SPLASH_SCREEN display_shutdown(); #endif entry(0, machtype, tags); }