]>
Commit | Line | Data |
---|---|---|
a4d7d550 KM |
1 | #ifndef __SOUND_FSI_H |
2 | #define __SOUND_FSI_H | |
3 | ||
4 | /* | |
5 | * Fifo-attached Serial Interface (FSI) support for SH7724 | |
6 | * | |
7 | * Copyright (C) 2009 Renesas Solutions Corp. | |
8 | * Kuninori Morimoto <morimoto.kuninori@renesas.com> | |
9 | * | |
10 | * This program is free software; you can redistribute it and/or modify | |
11 | * it under the terms of the GNU General Public License version 2 as | |
12 | * published by the Free Software Foundation. | |
13 | */ | |
14 | ||
3c2ef841 KM |
15 | #define FSI_PORT_A 0 |
16 | #define FSI_PORT_B 1 | |
17 | ||
a4d7d550 KM |
18 | #include <linux/clk.h> |
19 | #include <sound/soc.h> | |
20 | ||
f17c13ca KM |
21 | /* |
22 | * flags format | |
23 | * | |
24 | * 0x000000BA | |
25 | * | |
26 | * A: inversion | |
27 | * B: format mode | |
28 | */ | |
a4d7d550 | 29 | |
f17c13ca KM |
30 | /* A: clock inversion */ |
31 | #define SH_FSI_INVERSION_MASK 0x0000000F | |
32 | #define SH_FSI_LRM_INV (1 << 0) | |
33 | #define SH_FSI_BRM_INV (1 << 1) | |
34 | #define SH_FSI_LRS_INV (1 << 2) | |
35 | #define SH_FSI_BRS_INV (1 << 3) | |
36 | ||
37 | /* B: format mode */ | |
38 | #define SH_FSI_FMT_MASK 0x000000F0 | |
39 | #define SH_FSI_FMT_DAI (0 << 4) | |
40 | #define SH_FSI_FMT_SPDIF (1 << 4) | |
a4d7d550 | 41 | |
ccad7b44 KM |
42 | |
43 | /* | |
44 | * set_rate return value | |
45 | * | |
46 | * see ACKMD/BPFMD on | |
47 | * ACK_MD (FSI2) | |
48 | * CKG1 (FSI) | |
49 | * | |
d4bc99b9 KM |
50 | * err : return value < 0 |
51 | * no change : return value == 0 | |
52 | * change xMD : return value > 0 | |
ccad7b44 KM |
53 | * |
54 | * 0x-00000AB | |
55 | * | |
56 | * A: ACKMD value | |
57 | * B: BPFMD value | |
58 | */ | |
59 | ||
60 | #define SH_FSI_ACKMD_MASK (0xF << 0) | |
61 | #define SH_FSI_ACKMD_512 (1 << 0) | |
62 | #define SH_FSI_ACKMD_256 (2 << 0) | |
63 | #define SH_FSI_ACKMD_128 (3 << 0) | |
64 | #define SH_FSI_ACKMD_64 (4 << 0) | |
65 | #define SH_FSI_ACKMD_32 (5 << 0) | |
66 | ||
67 | #define SH_FSI_BPFMD_MASK (0xF << 4) | |
68 | #define SH_FSI_BPFMD_512 (1 << 4) | |
69 | #define SH_FSI_BPFMD_256 (2 << 4) | |
70 | #define SH_FSI_BPFMD_128 (3 << 4) | |
71 | #define SH_FSI_BPFMD_64 (4 << 4) | |
72 | #define SH_FSI_BPFMD_32 (5 << 4) | |
73 | #define SH_FSI_BPFMD_16 (6 << 4) | |
74 | ||
fec691e7 KM |
75 | struct sh_fsi_port_info { |
76 | unsigned long flags; | |
7da9ced6 KM |
77 | int tx_id; |
78 | int rx_id; | |
fec691e7 KM |
79 | int (*set_rate)(struct device *dev, int rate, int enable); |
80 | }; | |
81 | ||
a4d7d550 | 82 | struct sh_fsi_platform_info { |
fec691e7 KM |
83 | struct sh_fsi_port_info port_a; |
84 | struct sh_fsi_port_info port_b; | |
a4d7d550 KM |
85 | }; |
86 | ||
45f31216 KM |
87 | /* |
88 | * for fsi-ak4642 | |
89 | */ | |
90 | struct fsi_ak4642_info { | |
91 | const char *name; | |
92 | const char *card; | |
93 | const char *cpu_dai; | |
94 | const char *codec; | |
95 | const char *platform; | |
96 | int id; | |
97 | }; | |
98 | ||
a4d7d550 | 99 | #endif /* __SOUND_FSI_H */ |