sound.c 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
  14. {
  15. struct udevice *dev;
  16. int ret;
  17. ret = uclass_first_device_err(UCLASS_SOUND, &dev);
  18. if (!ret)
  19. ret = sound_setup(dev);
  20. if (ret) {
  21. printf("Initialise Audio driver failed (ret=%d)\n", ret);
  22. return CMD_RET_FAILURE;
  23. }
  24. return 0;
  25. }
  26. /* play sound from buffer */
  27. static int do_play(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
  28. {
  29. struct udevice *dev;
  30. int ret = 0;
  31. int msec = 1000;
  32. int freq = 400;
  33. if (argc > 1)
  34. msec = simple_strtoul(argv[1], NULL, 10);
  35. if (argc > 2)
  36. freq = simple_strtoul(argv[2], NULL, 10);
  37. ret = uclass_first_device_err(UCLASS_SOUND, &dev);
  38. if (!ret)
  39. ret = sound_beep(dev, msec, freq);
  40. if (ret) {
  41. printf("Sound device failed to play (err=%d)\n", ret);
  42. return CMD_RET_FAILURE;
  43. }
  44. return 0;
  45. }
  46. static cmd_tbl_t cmd_sound_sub[] = {
  47. U_BOOT_CMD_MKENT(init, 0, 1, do_init, "", ""),
  48. U_BOOT_CMD_MKENT(play, 2, 1, do_play, "", ""),
  49. };
  50. /* process sound command */
  51. static int do_sound(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
  52. {
  53. cmd_tbl_t *c;
  54. if (argc < 1)
  55. return CMD_RET_USAGE;
  56. /* Strip off leading 'sound' command argument */
  57. argc--;
  58. argv++;
  59. c = find_cmd_tbl(argv[0], &cmd_sound_sub[0], ARRAY_SIZE(cmd_sound_sub));
  60. if (c)
  61. return c->cmd(cmdtp, flag, argc, argv);
  62. else
  63. return CMD_RET_USAGE;
  64. }
  65. U_BOOT_CMD(
  66. sound, 4, 1, do_sound,
  67. "sound sub-system",
  68. "init - initialise the sound driver\n"
  69. "sound play [len] [freq] - play a sound for len ms at freq hz\n"
  70. );