/drivers/staging/tidspbridge/Documentation/README

https://bitbucket.org/wisechild/galaxy-nexus · #! · 70 lines · 58 code · 12 blank · 0 comment · 0 complexity · 1795fa9a139c80b66716bcf60687f375 MD5 · raw file

  1. Linux DSP/BIOS Bridge release
  2. DSP/BIOS Bridge overview
  3. ========================
  4. DSP/BIOS Bridge is designed for platforms that contain a GPP and one or more
  5. attached DSPs. The GPP is considered the master or "host" processor, and the
  6. attached DSPs are processing resources that can be utilized by applications
  7. and drivers running on the GPP.
  8. The abstraction that DSP/BIOS Bridge supplies, is a direct link between a GPP
  9. program and a DSP task. This communication link is partitioned into two
  10. types of sub-links: messaging (short, fixed-length packets) and data
  11. streaming (multiple, large buffers). Each sub-link operates independently,
  12. and features in-order delivery of data, meaning that messages are delivered
  13. in the order they were submitted to the message link, and stream buffers are
  14. delivered in the order they were submitted to the stream link.
  15. In addition, a GPP client can specify what inputs and outputs a DSP task
  16. uses. DSP tasks typically use message objects for passing control and status
  17. information and stream objects for efficient streaming of real-time data.
  18. GPP Software Architecture
  19. =========================
  20. A GPP application communicates with its associated DSP task running on the
  21. DSP subsystem using the DSP/BIOS Bridge API. For example, a GPP audio
  22. application can use the API to pass messages to a DSP task that is managing
  23. data flowing from analog-to-digital converters (ADCs) to digital-to-analog
  24. converters (DACs).
  25. From the perspective of the GPP OS, the DSP is treated as just another
  26. peripheral device. Most high level GPP OS typically support a device driver
  27. model, whereby applications can safely access and share a hardware peripheral
  28. through standard driver interfaces. Therefore, to allow multiple GPP
  29. applications to share access to the DSP, the GPP side of DSP/BIOS Bridge
  30. implements a device driver for the DSP.
  31. Since driver interfaces are not always standard across GPP OS, and to provide
  32. some level of interoperability of application code using DSP/BIOS Bridge
  33. between GPP OS, DSP/BIOS Bridge provides a standard library of APIs which
  34. wrap calls into the device driver. So, rather than calling GPP OS specific
  35. driver interfaces, applications (and even other device drivers) can use the
  36. standard API library directly.
  37. DSP Software Architecture
  38. =========================
  39. For DSP/BIOS, DSP/BIOS Bridge adds a device-independent streaming I/O (STRM)
  40. interface, a messaging interface (NODE), and a Resource Manager (RM) Server.
  41. The RM Server runs as a task of DSP/BIOS and is subservient to commands
  42. and queries from the GPP. It executes commands to start and stop DSP signal
  43. processing nodes in response to GPP programs making requests through the
  44. (GPP-side) API.
  45. DSP tasks started by the RM Server are similar to any other DSP task with two
  46. important differences: they must follow a specific task model consisting of
  47. three C-callable functions (node create, execute, and delete), with specific
  48. sets of arguments, and they have a pre-defined task environment established
  49. by the RM Server.
  50. Tasks started by the RM Server communicate using the STRM and NODE interfaces
  51. and act as servers for their corresponding GPP clients, performing signal
  52. processing functions as requested by messages sent by their GPP client.
  53. Typically, a DSP task moves data from source devices to sink devices using
  54. device independent I/O streams, performing application-specific processing
  55. and transformations on the data while it is moved. For example, an audio
  56. task might perform audio decompression (ADPCM, MPEG, CELP) on data received
  57. from a GPP audio driver and then send the decompressed linear samples to a
  58. digital-to-analog converter.