xref: /openbmc/u-boot/cmd/sound.c (revision b419e87287ddb26ed991a64b2b14db7841b5f8c6)
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