Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * TI DaVinci Audio Serial Port support
4 *
5 * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/
6 */
7
8#ifndef __DAVINCI_ASP_H
9#define __DAVINCI_ASP_H
10
11#include <linux/genalloc.h>
12
13struct davinci_mcasp_pdata {
14 u32 tx_dma_offset;
15 u32 rx_dma_offset;
16 int asp_chan_q; /* event queue number for ASP channel */
17 int ram_chan_q; /* event queue number for RAM channel */
18 /*
19 * Allowing this is more efficient and eliminates left and right swaps
20 * caused by underruns, but will swap the left and right channels
21 * when compared to previous behavior.
22 */
23 unsigned enable_channel_combine:1;
24 unsigned sram_size_playback;
25 unsigned sram_size_capture;
26 struct gen_pool *sram_pool;
27
28 /*
29 * This flag works when both clock and FS are outputs for the cpu
30 * and makes clock more accurate (FS is not symmetrical and the
31 * clock is very fast.
32 * The clock becoming faster is named
33 * i2s continuous serial clock (I2S_SCK) and it is an externally
34 * visible bit clock.
35 *
36 * first line : WordSelect
37 * second line : ContinuousSerialClock
38 * third line: SerialData
39 *
40 * SYMMETRICAL APPROACH:
41 * _______________________ LEFT
42 * _| RIGHT |______________________|
43 * _ _ _ _ _ _ _ _
44 * _| |_| |_ x16 _| |_| |_| |_| |_ x16 _| |_| |_
45 * _ _ _ _ _ _ _ _
46 * _/ \_/ \_ ... _/ \_/ \_/ \_/ \_ ... _/ \_/ \_
47 * \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
48 *
49 * ACCURATE CLOCK APPROACH:
50 * ______________ LEFT
51 * _| RIGHT |_______________________________|
52 * _ _ _ _ _ _ _ _ _
53 * _| |_ x16 _| |_| |_ x16 _| |_| |_| |_| |_| |_| |
54 * _ _ _ _ dummy cycles
55 * _/ \_ ... _/ \_/ \_ ... _/ \__________________
56 * \_/ \_/ \_/ \_/
57 *
58 */
59 bool i2s_accurate_sck;
60
61 /* McASP specific fields */
62 int tdm_slots;
63 u8 op_mode;
64 u8 dismod;
65 u8 num_serializer;
66 u8 *serial_dir;
67 u8 version;
68 u8 txnumevt;
69 u8 rxnumevt;
70 int tx_dma_channel;
71 int rx_dma_channel;
72};
73/* TODO: Fix arch/arm/mach-davinci/ users and remove this define */
74#define snd_platform_data davinci_mcasp_pdata
75
76enum {
77 MCASP_VERSION_1 = 0, /* DM646x */
78 MCASP_VERSION_2, /* DA8xx/OMAPL1x */
79 MCASP_VERSION_3, /* TI81xx/AM33xx */
80 MCASP_VERSION_4, /* DRA7xxx */
81 MCASP_VERSION_OMAP, /* OMAP4/5 */
82};
83
84#define INACTIVE_MODE 0
85#define TX_MODE 1
86#define RX_MODE 2
87
88#define DAVINCI_MCASP_IIS_MODE 0
89#define DAVINCI_MCASP_DIT_MODE 1
90
91#endif