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