2 #ifndef IO_CONFIG_H
3 #define IO_CONFIG_H
5 //#define PASDK_SIO_DEV // define this to use the legacy SIO/DEV based I/O driver
7 //#define IO_LOOPBACK_TEST // define this to run a DSP-only standalone loopback test without PASDK framework
8 //#define PCM_LOOPBACK_TEST // define this to run DSP-only PCM loopback test in PASDK framework
10 //#define INPUT_HDMI_4xI2S // HDMI, 4 Rx serializers
11 //#define INPUT_HDMI_STEREO // HDMI, 1 Rx serializer
12 //#define INPUT_SPDIF // S/PDIF, 1 Rx serializer
14 //#define INPUT_PCM_ONLY // debugging, input fixed to PCM
16 #define TX_MCASP_USE_MULT_SER // This is the normal operation. Undefine this for debugging and loopback
18 #ifdef INPUT_PCM_ONLY
19 #define SWAP_INPUT_DATA FALSE
20 #else
21 #define SWAP_INPUT_DATA TRUE
22 #endif
24 #ifdef INPUT_HDMI_4xI2S
25 #define RX_MCASP_USE_MULT_SER
26 #define IO_HW_INTERFACE 2
27 //#define ASIP_ELEMENT_SIZE 2
28 //#define ASIP_STRIDE 8 // 4 lane, stereo
29 #endif
31 #ifdef INPUT_HDMI_STEREO
32 //#define ASIP_ELEMENT_SIZE 4
33 //#define ASIP_STRIDE 2 // 1 lane, stereo
34 #define IO_HW_INTERFACE 1
35 #endif
37 #ifdef INPUT_SPDIF
38 //#define ASIP_ELEMENT_SIZE 4
39 //#define ASIP_STRIDE 2 // 1 lane, stereo
40 #define IO_HW_INTERFACE 3
41 #endif
43 // two options regarding I/O PHY transfer size and I/O DATA read size:
44 // 1. fixed to 1024 words: simple for implementation and debugging, shorter delay,
45 // but more interrupts and more McASP LLD calls.
46 // 2. adjusted to frame size after auto-detection: less interrupts and McASP LLD calls,
47 // but more complicated implementation and longer delay.
48 #define ADJUST_XFER_SIZE_AFTER_AUTODET
51 // Number of serializers configured for Rx McASP
52 #ifdef RX_MCASP_USE_MULT_SER
53 #define NUM_RX_SERIALIZER 4
54 #else
55 #define NUM_RX_SERIALIZER 1
56 #endif
58 // Number of serializers configured for Tx McASP
59 #ifdef TX_MCASP_USE_MULT_SER
60 #define NUM_TX_SERIALIZER 4
61 #else
62 #define NUM_TX_SERIALIZER 1
63 #endif
65 /* Number of submitted transfers in McASP LLD priming operation.
66 * Due to McASP LLD issue, there must be 3 or more transfer submits in priming. */
67 #define NUM_PRIME_XFERS 3 // 3 and above is good
69 // Define McASP transfer element size: number of bytes in one word
70 #define WORD_SIZE_BITSTREAM 2
71 #define WORD_SIZE_PCM 4
72 #define NUM_CYCLE_PER_FRAME_DEF 1024 //128
74 // Input frame length: number of words to be transfered in 1 transfer of McASP LLD Rx
75 // These numbers are according to existing SIO/DEV based I/O.
76 #define INPUT_STRIDE (2*NUM_RX_SERIALIZER)
77 #ifdef INPUT_HDMI_4xI2S
78 #define INPUT_FRAME_LENGTH (NUM_CYCLE_PER_FRAME_DEF*INPUT_STRIDE) // 128 stereo/lane
79 #else
80 //#define INPUT_FRAME_LENGTH (64*INPUT_STRIDE) // 64 stereo/lane
81 #define INPUT_FRAME_LENGTH (NUM_CYCLE_PER_FRAME_DEF*INPUT_STRIDE) // 128 stereo/lane
82 #endif
84 // Input frame size: number of bytes to be transfered in 1 transfer of McASP LLD Rx
85 #define INPUT_FRAME_SIZE_DEF (INPUT_FRAME_LENGTH * WORD_SIZE_BITSTREAM)
86 #define INPUT_FRAME_SIZE_PCM (INPUT_FRAME_LENGTH * WORD_SIZE_PCM)
88 // Output frame length: number of words to be transfered in 1 transfer of McASP LLD Tx
89 #define OUTPUT_STRIDE (2*NUM_TX_SERIALIZER)
90 #define OUTPUT_FRAME_LENGTH (NUM_CYCLE_PER_FRAME_DEF*OUTPUT_STRIDE) // 128 stereo/lane
92 // Output frame size: number of bytes to be transfered in 1 transfer of McASP LLD Tx
93 #define OUTPUT_FRAME_SIZE (OUTPUT_FRAME_LENGTH * WORD_SIZE_PCM)
97 #endif