OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [drivers/] [ieee1394/] [amdtp.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/* -*- c-basic-offset: 8 -*- */
2
 
3
#ifndef __AMDTP_H
4
#define __AMDTP_H
5
 
6
#include <asm/types.h>
7
#include "ieee1394-ioctl.h"
8
 
9
/* The userspace interface for the Audio & Music Data Transmission
10
 * Protocol driver is really simple. First, open /dev/amdtp, use the
11
 * ioctl to configure format, rate, dimension and either plug or
12
 * channel, then start writing samples.
13
 *
14
 * The formats supported by the driver are listed below.
15
 * AMDTP_FORMAT_RAW corresponds to the AM824 raw format, which can
16
 * carry any number of channels, so use this if you're streaming
17
 * multichannel audio.  The AMDTP_FORMAT_IEC958_PCM corresponds to the
18
 * AM824 IEC958 encapsulation without the IEC958 data bit set, using
19
 * AMDTP_FORMAT_IEC958_AC3 will transmit the samples with the data bit
20
 * set, suitable for transmitting compressed AC-3 audio.
21
 *
22
 * The rate field specifies the transmission rate; supported values
23
 * are 32000, 44100, 48000, 88200, 96000, 176400 and 192000.
24
 *
25
 * The dimension field specifies the dimension of the signal, that is,
26
 * the number of audio channels.  Only AMDTP_FORMAT_RAW supports
27
 * settings greater than 2.
28
 *
29
 * The mode field specifies which transmission mode to use. The AMDTP
30
 * specifies two different transmission modes: blocking and
31
 * non-blocking.  The blocking transmission mode always send a fixed
32
 * number of samples, typically 8, 16 or 32.  To exactly match the
33
 * transmission rate, the driver alternates between sending empty and
34
 * non-empty packets.  In non-blocking mode, the driver transmits as
35
 * small packets as possible.  For example, for a transmission rate of
36
 * 44100Hz, the driver should send 5 41/80 samples in every cycle, but
37
 * this is not possible so instead the driver alternates between
38
 * sending 5 and 6 samples.
39
 *
40
 * The last thing to specify is either the isochronous channel to use
41
 * or the output plug to connect to.  If you know what channel the
42
 * destination device will listen on, you can specify the channel
43
 * directly and use the AMDTP_IOC_CHANNEL ioctl.  However, if the
44
 * destination device chooses the channel and uses the IEC61883-1 plug
45
 * mechanism, you can specify an output plug to connect to.  The
46
 * driver will pick up the channel number from the plug once the
47
 * destination device locks the output plug control register.  In this
48
 * case set the plug field and use the AMDTP_IOC_PLUG ioctl.
49
 *
50
 * Having configured the interface, the driver now accepts writes of
51
 * regular 16 bit signed little endian samples, with the channels
52
 * interleaved.  For example, 4 channels would look like:
53
 *
54
 *   | sample 0                                      | sample 1    ...
55
 *   | ch. 0     | ch. 1     | ch. 2     | ch. 3     | ch. 0     | ...
56
 *   | lsb | msb | lsb | msb | lsb | msb | lsb | msb | lsb | msb | ...
57
 *
58
 */
59
 
60
enum {
61
        AMDTP_FORMAT_RAW,
62
        AMDTP_FORMAT_IEC958_PCM,
63
        AMDTP_FORMAT_IEC958_AC3
64
};
65
 
66
enum {
67
        AMDTP_MODE_BLOCKING,
68
        AMDTP_MODE_NON_BLOCKING,
69
};
70
 
71
enum {
72
        AMDTP_INPUT_LE16,
73
        AMDTP_INPUT_BE16,
74
};
75
 
76
struct amdtp_ioctl {
77
        __u32 format;
78
        __u32 rate;
79
        __u32 dimension;
80
        __u32 mode;
81
        union { __u32 channel; __u32 plug; } u;
82
};
83
 
84
#endif /* __AMDTP_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.