sound.c 1.8 KB

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