1 /* 2 * Copyright (C) 2012 Samsung Electronics 3 * Rajeshwari Shinde <rajeshwari.s@samsung.com> 4 * 5 * SPDX-License-Identifier: GPL-2.0+ 6 */ 7 8 #include <common.h> 9 #include <command.h> 10 #include <fdtdec.h> 11 #include <sound.h> 12 13 DECLARE_GLOBAL_DATA_PTR; 14 15 /* Initilaise sound subsystem */ 16 static int do_init(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) 17 { 18 int ret; 19 20 ret = sound_init(gd->fdt_blob); 21 if (ret) { 22 printf("Initialise Audio driver failed\n"); 23 return CMD_RET_FAILURE; 24 } 25 26 return 0; 27 } 28 29 /* play sound from buffer */ 30 static int do_play(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) 31 { 32 int ret = 0; 33 int msec = 1000; 34 int freq = 400; 35 36 if (argc > 1) 37 msec = simple_strtoul(argv[1], NULL, 10); 38 if (argc > 2) 39 freq = simple_strtoul(argv[2], NULL, 10); 40 41 ret = sound_play(msec, freq); 42 if (ret) { 43 printf("play failed"); 44 return CMD_RET_FAILURE; 45 } 46 47 return 0; 48 } 49 50 static cmd_tbl_t cmd_sound_sub[] = { 51 U_BOOT_CMD_MKENT(init, 0, 1, do_init, "", ""), 52 U_BOOT_CMD_MKENT(play, 2, 1, do_play, "", ""), 53 }; 54 55 /* process sound command */ 56 static int do_sound(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) 57 { 58 cmd_tbl_t *c; 59 60 if (argc < 1) 61 return CMD_RET_USAGE; 62 63 /* Strip off leading 'sound' command argument */ 64 argc--; 65 argv++; 66 67 c = find_cmd_tbl(argv[0], &cmd_sound_sub[0], ARRAY_SIZE(cmd_sound_sub)); 68 69 if (c) 70 return c->cmd(cmdtp, flag, argc, argv); 71 else 72 return CMD_RET_USAGE; 73 } 74 75 U_BOOT_CMD( 76 sound, 4, 1, do_sound, 77 "sound sub-system", 78 "init - initialise the sound driver\n" 79 "sound play [len] [freq] - play a sound for len ms at freq hz\n" 80 ); 81