]> Git Repo - J-u-boot.git/blob - cmd/sound.c
Merge branch 'qcom-main' of https://source.denx.de/u-boot/custodians/u-boot-snapdragon
[J-u-boot.git] / cmd / sound.c
1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * Copyright (C) 2012 Samsung Electronics
4  * Rajeshwari Shinde <[email protected]>
5  */
6
7 #include <command.h>
8 #include <dm.h>
9 #include <fdtdec.h>
10 #include <sound.h>
11 #include <asm/global_data.h>
12
13 DECLARE_GLOBAL_DATA_PTR;
14
15 /* Initilaise sound subsystem */
16 static int do_init(struct cmd_tbl *cmdtp, int flag, int argc,
17                    char *const argv[])
18 {
19         struct udevice *dev;
20         int ret;
21
22         ret = uclass_first_device_err(UCLASS_SOUND, &dev);
23         if (!ret)
24                 ret = sound_setup(dev);
25         if (ret) {
26                 printf("Initialise Audio driver failed (ret=%d)\n", ret);
27                 return CMD_RET_FAILURE;
28         }
29
30         return 0;
31 }
32
33 /* play sound from buffer */
34 static int do_play(struct cmd_tbl *cmdtp, int flag, int argc,
35                    char *const argv[])
36 {
37         struct udevice *dev;
38         int ret = 0;
39         int msec = 1000;
40         int freq = 400;
41         bool first = true;
42
43         ret = uclass_first_device_err(UCLASS_SOUND, &dev);
44         if (ret)
45                 goto err;
46         --argc;
47         ++argv;
48         while (argc || first) {
49                 first = false;
50                 if (argc) {
51                         msec = dectoul(argv[0], NULL);
52                         --argc;
53                         ++argv;
54                 }
55                 if (argc) {
56                         freq = dectoul(argv[0], NULL);
57                         --argc;
58                         ++argv;
59                 }
60                 ret = sound_beep(dev, msec, freq);
61                 if (ret)
62                         goto err;
63         }
64         return 0;
65
66 err:
67         printf("Sound device failed to play (err=%d)\n", ret);
68         return CMD_RET_FAILURE;
69 }
70
71 static struct cmd_tbl cmd_sound_sub[] = {
72         U_BOOT_CMD_MKENT(init, 0, 1, do_init, "", ""),
73         U_BOOT_CMD_MKENT(play, INT_MAX, 1, do_play, "", ""),
74 };
75
76 /* process sound command */
77 static int do_sound(struct cmd_tbl *cmdtp, int flag, int argc,
78                     char *const argv[])
79 {
80         struct cmd_tbl *c;
81
82         if (argc < 1)
83                 return CMD_RET_USAGE;
84
85         /* Strip off leading 'sound' command argument */
86         argc--;
87         argv++;
88
89         c = find_cmd_tbl(argv[0], &cmd_sound_sub[0], ARRAY_SIZE(cmd_sound_sub));
90
91         if (c)
92                 return c->cmd(cmdtp, flag, argc, argv);
93         else
94                 return CMD_RET_USAGE;
95 }
96
97 U_BOOT_CMD(
98         sound, INT_MAX, 1, do_sound,
99         "sound sub-system",
100         "init - initialise the sound driver\n"
101         "sound play [[[-q|-s] len [freq]] ...] - play sounds\n"
102         "  len - duration in ms\n"
103         "  freq - frequency in Hz\n"
104 );
This page took 0.0319 seconds and 4 git commands to generate.