diff options
Diffstat (limited to 'Documentation')
160 files changed, 4952 insertions, 880 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX index 07de7e19b4ce..27e67a98b7be 100644 --- a/Documentation/00-INDEX +++ b/Documentation/00-INDEX | |||
@@ -413,8 +413,6 @@ serial-console.txt | |||
413 | - how to set up Linux with a serial line console as the default. | 413 | - how to set up Linux with a serial line console as the default. |
414 | sgi-ioc4.txt | 414 | sgi-ioc4.txt |
415 | - description of the SGI IOC4 PCI (multi function) device. | 415 | - description of the SGI IOC4 PCI (multi function) device. |
416 | sgi-visws.txt | ||
417 | - short blurb on the SGI Visual Workstations. | ||
418 | sh/ | 416 | sh/ |
419 | - directory with info on porting Linux to a new architecture. | 417 | - directory with info on porting Linux to a new architecture. |
420 | smsc_ece1099.txt | 418 | smsc_ece1099.txt |
diff --git a/Documentation/ABI/stable/sysfs-firmware-opal-dump b/Documentation/ABI/stable/sysfs-firmware-opal-dump new file mode 100644 index 000000000000..32fe7f5c4880 --- /dev/null +++ b/Documentation/ABI/stable/sysfs-firmware-opal-dump | |||
@@ -0,0 +1,41 @@ | |||
1 | What: /sys/firmware/opal/dump | ||
2 | Date: Feb 2014 | ||
3 | Contact: Stewart Smith <stewart@linux.vnet.ibm.com> | ||
4 | Description: | ||
5 | This directory exposes interfaces for interacting with | ||
6 | the FSP and platform dumps through OPAL firmware interface. | ||
7 | |||
8 | This is only for the powerpc/powernv platform. | ||
9 | |||
10 | initiate_dump: When '1' is written to it, | ||
11 | we will initiate a dump. | ||
12 | Read this file for supported commands. | ||
13 | |||
14 | 0xXX-0xYYYY: A directory for dump of type 0xXX and | ||
15 | id 0xYYYY (in hex). The name of this | ||
16 | directory should not be relied upon to | ||
17 | be in this format, only that it's unique | ||
18 | among all dumps. For determining the type | ||
19 | and ID of the dump, use the id and type files. | ||
20 | Do not rely on any particular size of dump | ||
21 | type or dump id. | ||
22 | |||
23 | Each dump has the following files: | ||
24 | id: An ASCII representation of the dump ID | ||
25 | in hex (e.g. '0x01') | ||
26 | type: An ASCII representation of the type of | ||
27 | dump in the format "0x%x %s" with the ID | ||
28 | in hex and a description of the dump type | ||
29 | (or 'unknown'). | ||
30 | Type '0xffffffff unknown' is used when | ||
31 | we could not get the type from firmware. | ||
32 | e.g. '0x02 System/Platform Dump' | ||
33 | dump: A binary file containing the dump. | ||
34 | The size of the dump is the size of this file. | ||
35 | acknowledge: When 'ack' is written to this, we will | ||
36 | acknowledge that we've retrieved the | ||
37 | dump to the service processor. It will | ||
38 | then remove it, making the dump | ||
39 | inaccessible. | ||
40 | Reading this file will get a list of | ||
41 | supported actions. | ||
diff --git a/Documentation/ABI/stable/sysfs-firmware-opal-elog b/Documentation/ABI/stable/sysfs-firmware-opal-elog new file mode 100644 index 000000000000..e1f3058f5954 --- /dev/null +++ b/Documentation/ABI/stable/sysfs-firmware-opal-elog | |||
@@ -0,0 +1,60 @@ | |||
1 | What: /sys/firmware/opal/elog | ||
2 | Date: Feb 2014 | ||
3 | Contact: Stewart Smith <stewart@linux.vnet.ibm.com> | ||
4 | Description: | ||
5 | This directory exposes error log entries retrieved | ||
6 | through the OPAL firmware interface. | ||
7 | |||
8 | Each error log is identified by a unique ID and will | ||
9 | exist until explicitly acknowledged to firmware. | ||
10 | |||
11 | Each log entry has a directory in /sys/firmware/opal/elog. | ||
12 | |||
13 | Log entries may be purged by the service processor | ||
14 | before retrieved by firmware or retrieved/acknowledged by | ||
15 | Linux if there is no room for more log entries. | ||
16 | |||
17 | In the event that Linux has retrieved the log entries | ||
18 | but not explicitly acknowledged them to firmware and | ||
19 | the service processor needs more room for log entries, | ||
20 | the only remaining copy of a log message may be in | ||
21 | Linux. | ||
22 | |||
23 | Typically, a user space daemon will monitor for new | ||
24 | entries, read them out and acknowledge them. | ||
25 | |||
26 | The service processor may be able to store more log | ||
27 | entries than firmware can, so after you acknowledge | ||
28 | an event from Linux you may instantly get another one | ||
29 | from the queue that was generated some time in the past. | ||
30 | |||
31 | The raw log format is a binary format. We currently | ||
32 | do not parse this at all in kernel, leaving it up to | ||
33 | user space to solve the problem. In future, we may | ||
34 | do more parsing in kernel and add more files to make | ||
35 | it easier for simple user space processes to extract | ||
36 | more information. | ||
37 | |||
38 | For each log entry (directory), there are the following | ||
39 | files: | ||
40 | |||
41 | id: An ASCII representation of the ID of the | ||
42 | error log, in hex - e.g. "0x01". | ||
43 | |||
44 | type: An ASCII representation of the type id and | ||
45 | description of the type of error log. | ||
46 | Currently just "0x00 PEL" - platform error log. | ||
47 | In the future there may be additional types. | ||
48 | |||
49 | raw: A read-only binary file that can be read | ||
50 | to get the raw log entry. These are | ||
51 | <16kb, often just hundreds of bytes and | ||
52 | "average" 2kb. | ||
53 | |||
54 | acknowledge: Writing 'ack' to this file will acknowledge | ||
55 | the error log to firmware (and in turn | ||
56 | the service processor, if applicable). | ||
57 | Shortly after acknowledging it, the log | ||
58 | entry will be removed from sysfs. | ||
59 | Reading this file will list the supported | ||
60 | operations (curently just acknowledge). \ No newline at end of file | ||
diff --git a/Documentation/ABI/testing/sysfs-bus-event_source-devices-events b/Documentation/ABI/testing/sysfs-bus-event_source-devices-events index 3c1cc24361bd..7b40a3cbc26a 100644 --- a/Documentation/ABI/testing/sysfs-bus-event_source-devices-events +++ b/Documentation/ABI/testing/sysfs-bus-event_source-devices-events | |||
@@ -57,6 +57,523 @@ What: /sys/devices/cpu/events/PM_1PLUS_PPC_CMPL | |||
57 | /sys/devices/cpu/events/PM_LD_REF_L1 | 57 | /sys/devices/cpu/events/PM_LD_REF_L1 |
58 | /sys/devices/cpu/events/PM_RUN_CYC | 58 | /sys/devices/cpu/events/PM_RUN_CYC |
59 | /sys/devices/cpu/events/PM_RUN_INST_CMPL | 59 | /sys/devices/cpu/events/PM_RUN_INST_CMPL |
60 | /sys/devices/cpu/events/PM_IC_DEMAND_L2_BR_ALL | ||
61 | /sys/devices/cpu/events/PM_GCT_UTIL_7_TO_10_SLOTS | ||
62 | /sys/devices/cpu/events/PM_PMC2_SAVED | ||
63 | /sys/devices/cpu/events/PM_VSU0_16FLOP | ||
64 | /sys/devices/cpu/events/PM_MRK_LSU_DERAT_MISS | ||
65 | /sys/devices/cpu/events/PM_MRK_ST_CMPL | ||
66 | /sys/devices/cpu/events/PM_NEST_PAIR3_ADD | ||
67 | /sys/devices/cpu/events/PM_L2_ST_DISP | ||
68 | /sys/devices/cpu/events/PM_L2_CASTOUT_MOD | ||
69 | /sys/devices/cpu/events/PM_ISEG | ||
70 | /sys/devices/cpu/events/PM_MRK_INST_TIMEO | ||
71 | /sys/devices/cpu/events/PM_L2_RCST_DISP_FAIL_ADDR | ||
72 | /sys/devices/cpu/events/PM_LSU1_DC_PREF_STREAM_CONFIRM | ||
73 | /sys/devices/cpu/events/PM_IERAT_WR_64K | ||
74 | /sys/devices/cpu/events/PM_MRK_DTLB_MISS_16M | ||
75 | /sys/devices/cpu/events/PM_IERAT_MISS | ||
76 | /sys/devices/cpu/events/PM_MRK_PTEG_FROM_LMEM | ||
77 | /sys/devices/cpu/events/PM_FLOP | ||
78 | /sys/devices/cpu/events/PM_THRD_PRIO_4_5_CYC | ||
79 | /sys/devices/cpu/events/PM_BR_PRED_TA | ||
80 | /sys/devices/cpu/events/PM_EXT_INT | ||
81 | /sys/devices/cpu/events/PM_VSU_FSQRT_FDIV | ||
82 | /sys/devices/cpu/events/PM_MRK_LD_MISS_EXPOSED_CYC | ||
83 | /sys/devices/cpu/events/PM_LSU1_LDF | ||
84 | /sys/devices/cpu/events/PM_IC_WRITE_ALL | ||
85 | /sys/devices/cpu/events/PM_LSU0_SRQ_STFWD | ||
86 | /sys/devices/cpu/events/PM_PTEG_FROM_RL2L3_MOD | ||
87 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_L31_SHR | ||
88 | /sys/devices/cpu/events/PM_DATA_FROM_L21_MOD | ||
89 | /sys/devices/cpu/events/PM_VSU1_SCAL_DOUBLE_ISSUED | ||
90 | /sys/devices/cpu/events/PM_VSU0_8FLOP | ||
91 | /sys/devices/cpu/events/PM_POWER_EVENT1 | ||
92 | /sys/devices/cpu/events/PM_DISP_CLB_HELD_BAL | ||
93 | /sys/devices/cpu/events/PM_VSU1_2FLOP | ||
94 | /sys/devices/cpu/events/PM_LWSYNC_HELD | ||
95 | /sys/devices/cpu/events/PM_PTEG_FROM_DL2L3_SHR | ||
96 | /sys/devices/cpu/events/PM_INST_FROM_L21_MOD | ||
97 | /sys/devices/cpu/events/PM_IERAT_XLATE_WR_16MPLUS | ||
98 | /sys/devices/cpu/events/PM_IC_REQ_ALL | ||
99 | /sys/devices/cpu/events/PM_DSLB_MISS | ||
100 | /sys/devices/cpu/events/PM_L3_MISS | ||
101 | /sys/devices/cpu/events/PM_LSU0_L1_PREF | ||
102 | /sys/devices/cpu/events/PM_VSU_SCALAR_SINGLE_ISSUED | ||
103 | /sys/devices/cpu/events/PM_LSU1_DC_PREF_STREAM_CONFIRM_STRIDE | ||
104 | /sys/devices/cpu/events/PM_L2_INST | ||
105 | /sys/devices/cpu/events/PM_VSU0_FRSP | ||
106 | /sys/devices/cpu/events/PM_FLUSH_DISP | ||
107 | /sys/devices/cpu/events/PM_PTEG_FROM_L2MISS | ||
108 | /sys/devices/cpu/events/PM_VSU1_DQ_ISSUED | ||
109 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_DMEM | ||
110 | /sys/devices/cpu/events/PM_LSU_FLUSH_ULD | ||
111 | /sys/devices/cpu/events/PM_PTEG_FROM_LMEM | ||
112 | /sys/devices/cpu/events/PM_MRK_DERAT_MISS_16M | ||
113 | /sys/devices/cpu/events/PM_THRD_ALL_RUN_CYC | ||
114 | /sys/devices/cpu/events/PM_MEM0_PREFETCH_DISP | ||
115 | /sys/devices/cpu/events/PM_MRK_STALL_CMPLU_CYC_COUNT | ||
116 | /sys/devices/cpu/events/PM_DATA_FROM_DL2L3_MOD | ||
117 | /sys/devices/cpu/events/PM_VSU_FRSP | ||
118 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_L21_MOD | ||
119 | /sys/devices/cpu/events/PM_PMC1_OVERFLOW | ||
120 | /sys/devices/cpu/events/PM_VSU0_SINGLE | ||
121 | /sys/devices/cpu/events/PM_MRK_PTEG_FROM_L3MISS | ||
122 | /sys/devices/cpu/events/PM_MRK_PTEG_FROM_L31_SHR | ||
123 | /sys/devices/cpu/events/PM_VSU0_VECTOR_SP_ISSUED | ||
124 | /sys/devices/cpu/events/PM_VSU1_FEST | ||
125 | /sys/devices/cpu/events/PM_MRK_INST_DISP | ||
126 | /sys/devices/cpu/events/PM_VSU0_COMPLEX_ISSUED | ||
127 | /sys/devices/cpu/events/PM_LSU1_FLUSH_UST | ||
128 | /sys/devices/cpu/events/PM_FXU_IDLE | ||
129 | /sys/devices/cpu/events/PM_LSU0_FLUSH_ULD | ||
130 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_DL2L3_MOD | ||
131 | /sys/devices/cpu/events/PM_LSU_LMQ_SRQ_EMPTY_ALL_CYC | ||
132 | /sys/devices/cpu/events/PM_LSU1_REJECT_LMQ_FULL | ||
133 | /sys/devices/cpu/events/PM_INST_PTEG_FROM_L21_MOD | ||
134 | /sys/devices/cpu/events/PM_INST_FROM_RL2L3_MOD | ||
135 | /sys/devices/cpu/events/PM_SHL_CREATED | ||
136 | /sys/devices/cpu/events/PM_L2_ST_HIT | ||
137 | /sys/devices/cpu/events/PM_DATA_FROM_DMEM | ||
138 | /sys/devices/cpu/events/PM_L3_LD_MISS | ||
139 | /sys/devices/cpu/events/PM_FXU1_BUSY_FXU0_IDLE | ||
140 | /sys/devices/cpu/events/PM_DISP_CLB_HELD_RES | ||
141 | /sys/devices/cpu/events/PM_L2_SN_SX_I_DONE | ||
142 | /sys/devices/cpu/events/PM_STCX_CMPL | ||
143 | /sys/devices/cpu/events/PM_VSU0_2FLOP | ||
144 | /sys/devices/cpu/events/PM_L3_PREF_MISS | ||
145 | /sys/devices/cpu/events/PM_LSU_SRQ_SYNC_CYC | ||
146 | /sys/devices/cpu/events/PM_LSU_REJECT_ERAT_MISS | ||
147 | /sys/devices/cpu/events/PM_L1_ICACHE_MISS | ||
148 | /sys/devices/cpu/events/PM_LSU1_FLUSH_SRQ | ||
149 | /sys/devices/cpu/events/PM_LD_REF_L1_LSU0 | ||
150 | /sys/devices/cpu/events/PM_VSU0_FEST | ||
151 | /sys/devices/cpu/events/PM_VSU_VECTOR_SINGLE_ISSUED | ||
152 | /sys/devices/cpu/events/PM_FREQ_UP | ||
153 | /sys/devices/cpu/events/PM_DATA_FROM_LMEM | ||
154 | /sys/devices/cpu/events/PM_LSU1_LDX | ||
155 | /sys/devices/cpu/events/PM_PMC3_OVERFLOW | ||
156 | /sys/devices/cpu/events/PM_MRK_BR_MPRED | ||
157 | /sys/devices/cpu/events/PM_SHL_MATCH | ||
158 | /sys/devices/cpu/events/PM_MRK_BR_TAKEN | ||
159 | /sys/devices/cpu/events/PM_ISLB_MISS | ||
160 | /sys/devices/cpu/events/PM_DISP_HELD_THERMAL | ||
161 | /sys/devices/cpu/events/PM_INST_PTEG_FROM_RL2L3_SHR | ||
162 | /sys/devices/cpu/events/PM_LSU1_SRQ_STFWD | ||
163 | /sys/devices/cpu/events/PM_PTEG_FROM_DMEM | ||
164 | /sys/devices/cpu/events/PM_VSU_2FLOP | ||
165 | /sys/devices/cpu/events/PM_GCT_FULL_CYC | ||
166 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_L3_CYC | ||
167 | /sys/devices/cpu/events/PM_LSU_SRQ_S0_ALLOC | ||
168 | /sys/devices/cpu/events/PM_MRK_DERAT_MISS_4K | ||
169 | /sys/devices/cpu/events/PM_BR_MPRED_TA | ||
170 | /sys/devices/cpu/events/PM_INST_PTEG_FROM_L2MISS | ||
171 | /sys/devices/cpu/events/PM_DPU_HELD_POWER | ||
172 | /sys/devices/cpu/events/PM_MRK_VSU_FIN | ||
173 | /sys/devices/cpu/events/PM_LSU_SRQ_S0_VALID | ||
174 | /sys/devices/cpu/events/PM_GCT_EMPTY_CYC | ||
175 | /sys/devices/cpu/events/PM_IOPS_DISP | ||
176 | /sys/devices/cpu/events/PM_RUN_SPURR | ||
177 | /sys/devices/cpu/events/PM_PTEG_FROM_L21_MOD | ||
178 | /sys/devices/cpu/events/PM_VSU0_1FLOP | ||
179 | /sys/devices/cpu/events/PM_SNOOP_TLBIE | ||
180 | /sys/devices/cpu/events/PM_DATA_FROM_L3MISS | ||
181 | /sys/devices/cpu/events/PM_VSU_SINGLE | ||
182 | /sys/devices/cpu/events/PM_DTLB_MISS_16G | ||
183 | /sys/devices/cpu/events/PM_FLUSH | ||
184 | /sys/devices/cpu/events/PM_L2_LD_HIT | ||
185 | /sys/devices/cpu/events/PM_NEST_PAIR2_AND | ||
186 | /sys/devices/cpu/events/PM_VSU1_1FLOP | ||
187 | /sys/devices/cpu/events/PM_IC_PREF_REQ | ||
188 | /sys/devices/cpu/events/PM_L3_LD_HIT | ||
189 | /sys/devices/cpu/events/PM_DISP_HELD | ||
190 | /sys/devices/cpu/events/PM_L2_LD | ||
191 | /sys/devices/cpu/events/PM_LSU_FLUSH_SRQ | ||
192 | /sys/devices/cpu/events/PM_BC_PLUS_8_CONV | ||
193 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_L31_MOD_CYC | ||
194 | /sys/devices/cpu/events/PM_L2_RCST_BUSY_RC_FULL | ||
195 | /sys/devices/cpu/events/PM_TB_BIT_TRANS | ||
196 | /sys/devices/cpu/events/PM_THERMAL_MAX | ||
197 | /sys/devices/cpu/events/PM_LSU1_FLUSH_ULD | ||
198 | /sys/devices/cpu/events/PM_LSU1_REJECT_LHS | ||
199 | /sys/devices/cpu/events/PM_LSU_LRQ_S0_ALLOC | ||
200 | /sys/devices/cpu/events/PM_L3_CO_L31 | ||
201 | /sys/devices/cpu/events/PM_POWER_EVENT4 | ||
202 | /sys/devices/cpu/events/PM_DATA_FROM_L31_SHR | ||
203 | /sys/devices/cpu/events/PM_BR_UNCOND | ||
204 | /sys/devices/cpu/events/PM_LSU1_DC_PREF_STREAM_ALLOC | ||
205 | /sys/devices/cpu/events/PM_PMC4_REWIND | ||
206 | /sys/devices/cpu/events/PM_L2_RCLD_DISP | ||
207 | /sys/devices/cpu/events/PM_THRD_PRIO_2_3_CYC | ||
208 | /sys/devices/cpu/events/PM_MRK_PTEG_FROM_L2MISS | ||
209 | /sys/devices/cpu/events/PM_IC_DEMAND_L2_BHT_REDIRECT | ||
210 | /sys/devices/cpu/events/PM_DATA_FROM_L31_SHR | ||
211 | /sys/devices/cpu/events/PM_IC_PREF_CANCEL_L2 | ||
212 | /sys/devices/cpu/events/PM_MRK_FIN_STALL_CYC_COUNT | ||
213 | /sys/devices/cpu/events/PM_BR_PRED_CCACHE | ||
214 | /sys/devices/cpu/events/PM_GCT_UTIL_1_TO_2_SLOTS | ||
215 | /sys/devices/cpu/events/PM_MRK_ST_CMPL_INT | ||
216 | /sys/devices/cpu/events/PM_LSU_TWO_TABLEWALK_CYC | ||
217 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_L3MISS | ||
218 | /sys/devices/cpu/events/PM_LSU_SET_MPRED | ||
219 | /sys/devices/cpu/events/PM_FLUSH_DISP_TLBIE | ||
220 | /sys/devices/cpu/events/PM_VSU1_FCONV | ||
221 | /sys/devices/cpu/events/PM_DERAT_MISS_16G | ||
222 | /sys/devices/cpu/events/PM_INST_FROM_LMEM | ||
223 | /sys/devices/cpu/events/PM_IC_DEMAND_L2_BR_REDIRECT | ||
224 | /sys/devices/cpu/events/PM_INST_PTEG_FROM_L2 | ||
225 | /sys/devices/cpu/events/PM_PTEG_FROM_L2 | ||
226 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_L21_SHR_CYC | ||
227 | /sys/devices/cpu/events/PM_MRK_DTLB_MISS_4K | ||
228 | /sys/devices/cpu/events/PM_VSU0_FPSCR | ||
229 | /sys/devices/cpu/events/PM_VSU1_VECT_DOUBLE_ISSUED | ||
230 | /sys/devices/cpu/events/PM_MRK_PTEG_FROM_RL2L3_MOD | ||
231 | /sys/devices/cpu/events/PM_MEM0_RQ_DISP | ||
232 | /sys/devices/cpu/events/PM_L2_LD_MISS | ||
233 | /sys/devices/cpu/events/PM_VMX_RESULT_SAT_1 | ||
234 | /sys/devices/cpu/events/PM_L1_PREF | ||
235 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_LMEM_CYC | ||
236 | /sys/devices/cpu/events/PM_GRP_IC_MISS_NONSPEC | ||
237 | /sys/devices/cpu/events/PM_PB_NODE_PUMP | ||
238 | /sys/devices/cpu/events/PM_SHL_MERGED | ||
239 | /sys/devices/cpu/events/PM_NEST_PAIR1_ADD | ||
240 | /sys/devices/cpu/events/PM_DATA_FROM_L3 | ||
241 | /sys/devices/cpu/events/PM_LSU_FLUSH | ||
242 | /sys/devices/cpu/events/PM_LSU_SRQ_SYNC_COUNT | ||
243 | /sys/devices/cpu/events/PM_PMC2_OVERFLOW | ||
244 | /sys/devices/cpu/events/PM_LSU_LDF | ||
245 | /sys/devices/cpu/events/PM_POWER_EVENT3 | ||
246 | /sys/devices/cpu/events/PM_DISP_WT | ||
247 | /sys/devices/cpu/events/PM_IC_BANK_CONFLICT | ||
248 | /sys/devices/cpu/events/PM_BR_MPRED_CR_TA | ||
249 | /sys/devices/cpu/events/PM_L2_INST_MISS | ||
250 | /sys/devices/cpu/events/PM_NEST_PAIR2_ADD | ||
251 | /sys/devices/cpu/events/PM_MRK_LSU_FLUSH | ||
252 | /sys/devices/cpu/events/PM_L2_LDST | ||
253 | /sys/devices/cpu/events/PM_INST_FROM_L31_SHR | ||
254 | /sys/devices/cpu/events/PM_VSU0_FIN | ||
255 | /sys/devices/cpu/events/PM_VSU1_FCONV | ||
256 | /sys/devices/cpu/events/PM_INST_FROM_RMEM | ||
257 | /sys/devices/cpu/events/PM_DISP_CLB_HELD_TLBIE | ||
258 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_DMEM_CYC | ||
259 | /sys/devices/cpu/events/PM_BR_PRED_CR | ||
260 | /sys/devices/cpu/events/PM_LSU_REJECT | ||
261 | /sys/devices/cpu/events/PM_GCT_UTIL_3_TO_6_SLOTS | ||
262 | /sys/devices/cpu/events/PM_CMPLU_STALL_END_GCT_NOSLOT | ||
263 | /sys/devices/cpu/events/PM_LSU0_REJECT_LMQ_FULL | ||
264 | /sys/devices/cpu/events/PM_VSU_FEST | ||
265 | /sys/devices/cpu/events/PM_NEST_PAIR0_AND | ||
266 | /sys/devices/cpu/events/PM_PTEG_FROM_L3 | ||
267 | /sys/devices/cpu/events/PM_POWER_EVENT2 | ||
268 | /sys/devices/cpu/events/PM_IC_PREF_CANCEL_PAGE | ||
269 | /sys/devices/cpu/events/PM_VSU0_FSQRT_FDIV | ||
270 | /sys/devices/cpu/events/PM_MRK_GRP_CMPL | ||
271 | /sys/devices/cpu/events/PM_VSU0_SCAL_DOUBLE_ISSUED | ||
272 | /sys/devices/cpu/events/PM_GRP_DISP | ||
273 | /sys/devices/cpu/events/PM_LSU0_LDX | ||
274 | /sys/devices/cpu/events/PM_DATA_FROM_L2 | ||
275 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_RL2L3_MOD | ||
276 | /sys/devices/cpu/events/PM_VSU0_VECT_DOUBLE_ISSUED | ||
277 | /sys/devices/cpu/events/PM_VSU1_2FLOP_DOUBLE | ||
278 | /sys/devices/cpu/events/PM_THRD_PRIO_6_7_CYC | ||
279 | /sys/devices/cpu/events/PM_BC_PLUS_8_RSLV_TAKEN | ||
280 | /sys/devices/cpu/events/PM_BR_MPRED_CR | ||
281 | /sys/devices/cpu/events/PM_L3_CO_MEM | ||
282 | /sys/devices/cpu/events/PM_DATA_FROM_RL2L3_MOD | ||
283 | /sys/devices/cpu/events/PM_LSU_SRQ_FULL_CYC | ||
284 | /sys/devices/cpu/events/PM_TABLEWALK_CYC | ||
285 | /sys/devices/cpu/events/PM_MRK_PTEG_FROM_RMEM | ||
286 | /sys/devices/cpu/events/PM_LSU_SRQ_STFWD | ||
287 | /sys/devices/cpu/events/PM_INST_PTEG_FROM_RMEM | ||
288 | /sys/devices/cpu/events/PM_FXU0_FIN | ||
289 | /sys/devices/cpu/events/PM_LSU1_L1_SW_PREF | ||
290 | /sys/devices/cpu/events/PM_PTEG_FROM_L31_MOD | ||
291 | /sys/devices/cpu/events/PM_PMC5_OVERFLOW | ||
292 | /sys/devices/cpu/events/PM_LD_REF_L1_LSU1 | ||
293 | /sys/devices/cpu/events/PM_INST_PTEG_FROM_L21_SHR | ||
294 | /sys/devices/cpu/events/PM_DATA_FROM_RMEM | ||
295 | /sys/devices/cpu/events/PM_VSU0_SCAL_SINGLE_ISSUED | ||
296 | /sys/devices/cpu/events/PM_BR_MPRED_LSTACK | ||
297 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_RL2L3_MOD_CYC | ||
298 | /sys/devices/cpu/events/PM_LSU0_FLUSH_UST | ||
299 | /sys/devices/cpu/events/PM_LSU_NCST | ||
300 | /sys/devices/cpu/events/PM_BR_TAKEN | ||
301 | /sys/devices/cpu/events/PM_INST_PTEG_FROM_LMEM | ||
302 | /sys/devices/cpu/events/PM_DTLB_MISS_4K | ||
303 | /sys/devices/cpu/events/PM_PMC4_SAVED | ||
304 | /sys/devices/cpu/events/PM_VSU1_PERMUTE_ISSUED | ||
305 | /sys/devices/cpu/events/PM_SLB_MISS | ||
306 | /sys/devices/cpu/events/PM_LSU1_FLUSH_LRQ | ||
307 | /sys/devices/cpu/events/PM_DTLB_MISS | ||
308 | /sys/devices/cpu/events/PM_VSU1_FRSP | ||
309 | /sys/devices/cpu/events/PM_VSU_VECTOR_DOUBLE_ISSUED | ||
310 | /sys/devices/cpu/events/PM_L2_CASTOUT_SHR | ||
311 | /sys/devices/cpu/events/PM_DATA_FROM_DL2L3_SHR | ||
312 | /sys/devices/cpu/events/PM_VSU1_STF | ||
313 | /sys/devices/cpu/events/PM_ST_FIN | ||
314 | /sys/devices/cpu/events/PM_PTEG_FROM_L21_SHR | ||
315 | /sys/devices/cpu/events/PM_L2_LOC_GUESS_WRONG | ||
316 | /sys/devices/cpu/events/PM_MRK_STCX_FAIL | ||
317 | /sys/devices/cpu/events/PM_LSU0_REJECT_LHS | ||
318 | /sys/devices/cpu/events/PM_IC_PREF_CANCEL_HIT | ||
319 | /sys/devices/cpu/events/PM_L3_PREF_BUSY | ||
320 | /sys/devices/cpu/events/PM_MRK_BRU_FIN | ||
321 | /sys/devices/cpu/events/PM_LSU1_NCLD | ||
322 | /sys/devices/cpu/events/PM_INST_PTEG_FROM_L31_MOD | ||
323 | /sys/devices/cpu/events/PM_LSU_NCLD | ||
324 | /sys/devices/cpu/events/PM_LSU_LDX | ||
325 | /sys/devices/cpu/events/PM_L2_LOC_GUESS_CORRECT | ||
326 | /sys/devices/cpu/events/PM_THRESH_TIMEO | ||
327 | /sys/devices/cpu/events/PM_L3_PREF_ST | ||
328 | /sys/devices/cpu/events/PM_DISP_CLB_HELD_SYNC | ||
329 | /sys/devices/cpu/events/PM_VSU_SIMPLE_ISSUED | ||
330 | /sys/devices/cpu/events/PM_VSU1_SINGLE | ||
331 | /sys/devices/cpu/events/PM_DATA_TABLEWALK_CYC | ||
332 | /sys/devices/cpu/events/PM_L2_RC_ST_DONE | ||
333 | /sys/devices/cpu/events/PM_MRK_PTEG_FROM_L21_MOD | ||
334 | /sys/devices/cpu/events/PM_LARX_LSU1 | ||
335 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_RMEM | ||
336 | /sys/devices/cpu/events/PM_DISP_CLB_HELD | ||
337 | /sys/devices/cpu/events/PM_DERAT_MISS_4K | ||
338 | /sys/devices/cpu/events/PM_L2_RCLD_DISP_FAIL_ADDR | ||
339 | /sys/devices/cpu/events/PM_SEG_EXCEPTION | ||
340 | /sys/devices/cpu/events/PM_FLUSH_DISP_SB | ||
341 | /sys/devices/cpu/events/PM_L2_DC_INV | ||
342 | /sys/devices/cpu/events/PM_PTEG_FROM_DL2L3_MOD | ||
343 | /sys/devices/cpu/events/PM_DSEG | ||
344 | /sys/devices/cpu/events/PM_BR_PRED_LSTACK | ||
345 | /sys/devices/cpu/events/PM_VSU0_STF | ||
346 | /sys/devices/cpu/events/PM_LSU_FX_FIN | ||
347 | /sys/devices/cpu/events/PM_DERAT_MISS_16M | ||
348 | /sys/devices/cpu/events/PM_MRK_PTEG_FROM_DL2L3_MOD | ||
349 | /sys/devices/cpu/events/PM_GCT_UTIL_11_PLUS_SLOTS | ||
350 | /sys/devices/cpu/events/PM_INST_FROM_L3 | ||
351 | /sys/devices/cpu/events/PM_MRK_IFU_FIN | ||
352 | /sys/devices/cpu/events/PM_ITLB_MISS | ||
353 | /sys/devices/cpu/events/PM_VSU_STF | ||
354 | /sys/devices/cpu/events/PM_LSU_FLUSH_UST | ||
355 | /sys/devices/cpu/events/PM_L2_LDST_MISS | ||
356 | /sys/devices/cpu/events/PM_FXU1_FIN | ||
357 | /sys/devices/cpu/events/PM_SHL_DEALLOCATED | ||
358 | /sys/devices/cpu/events/PM_L2_SN_M_WR_DONE | ||
359 | /sys/devices/cpu/events/PM_LSU_REJECT_SET_MPRED | ||
360 | /sys/devices/cpu/events/PM_L3_PREF_LD | ||
361 | /sys/devices/cpu/events/PM_L2_SN_M_RD_DONE | ||
362 | /sys/devices/cpu/events/PM_MRK_DERAT_MISS_16G | ||
363 | /sys/devices/cpu/events/PM_VSU_FCONV | ||
364 | /sys/devices/cpu/events/PM_ANY_THRD_RUN_CYC | ||
365 | /sys/devices/cpu/events/PM_LSU_LMQ_FULL_CYC | ||
366 | /sys/devices/cpu/events/PM_MRK_LSU_REJECT_LHS | ||
367 | /sys/devices/cpu/events/PM_MRK_LD_MISS_L1_CYC | ||
368 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_L2_CYC | ||
369 | /sys/devices/cpu/events/PM_INST_IMC_MATCH_DISP | ||
370 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_RMEM_CYC | ||
371 | /sys/devices/cpu/events/PM_VSU0_SIMPLE_ISSUED | ||
372 | /sys/devices/cpu/events/PM_MRK_PTEG_FROM_RL2L3_SHR | ||
373 | /sys/devices/cpu/events/PM_VSU_FMA_DOUBLE | ||
374 | /sys/devices/cpu/events/PM_VSU_4FLOP | ||
375 | /sys/devices/cpu/events/PM_VSU1_FIN | ||
376 | /sys/devices/cpu/events/PM_NEST_PAIR1_AND | ||
377 | /sys/devices/cpu/events/PM_INST_PTEG_FROM_RL2L3_MOD | ||
378 | /sys/devices/cpu/events/PM_PTEG_FROM_RMEM | ||
379 | /sys/devices/cpu/events/PM_LSU_LRQ_S0_VALID | ||
380 | /sys/devices/cpu/events/PM_LSU0_LDF | ||
381 | /sys/devices/cpu/events/PM_FLUSH_COMPLETION | ||
382 | /sys/devices/cpu/events/PM_ST_MISS_L1 | ||
383 | /sys/devices/cpu/events/PM_L2_NODE_PUMP | ||
384 | /sys/devices/cpu/events/PM_INST_FROM_DL2L3_SHR | ||
385 | /sys/devices/cpu/events/PM_MRK_STALL_CMPLU_CYC | ||
386 | /sys/devices/cpu/events/PM_VSU1_DENORM | ||
387 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_L31_SHR_CYC | ||
388 | /sys/devices/cpu/events/PM_NEST_PAIR0_ADD | ||
389 | /sys/devices/cpu/events/PM_INST_FROM_L3MISS | ||
390 | /sys/devices/cpu/events/PM_EE_OFF_EXT_INT | ||
391 | /sys/devices/cpu/events/PM_INST_PTEG_FROM_DMEM | ||
392 | /sys/devices/cpu/events/PM_INST_FROM_DL2L3_MOD | ||
393 | /sys/devices/cpu/events/PM_PMC6_OVERFLOW | ||
394 | /sys/devices/cpu/events/PM_VSU_2FLOP_DOUBLE | ||
395 | /sys/devices/cpu/events/PM_TLB_MISS | ||
396 | /sys/devices/cpu/events/PM_FXU_BUSY | ||
397 | /sys/devices/cpu/events/PM_L2_RCLD_DISP_FAIL_OTHER | ||
398 | /sys/devices/cpu/events/PM_LSU_REJECT_LMQ_FULL | ||
399 | /sys/devices/cpu/events/PM_IC_RELOAD_SHR | ||
400 | /sys/devices/cpu/events/PM_GRP_MRK | ||
401 | /sys/devices/cpu/events/PM_MRK_ST_NEST | ||
402 | /sys/devices/cpu/events/PM_VSU1_FSQRT_FDIV | ||
403 | /sys/devices/cpu/events/PM_LSU0_FLUSH_LRQ | ||
404 | /sys/devices/cpu/events/PM_LARX_LSU0 | ||
405 | /sys/devices/cpu/events/PM_IBUF_FULL_CYC | ||
406 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_DL2L3_SHR_CYC | ||
407 | /sys/devices/cpu/events/PM_LSU_DC_PREF_STREAM_ALLOC | ||
408 | /sys/devices/cpu/events/PM_GRP_MRK_CYC | ||
409 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_RL2L3_SHR_CYC | ||
410 | /sys/devices/cpu/events/PM_L2_GLOB_GUESS_CORRECT | ||
411 | /sys/devices/cpu/events/PM_LSU_REJECT_LHS | ||
412 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_LMEM | ||
413 | /sys/devices/cpu/events/PM_INST_PTEG_FROM_L3 | ||
414 | /sys/devices/cpu/events/PM_FREQ_DOWN | ||
415 | /sys/devices/cpu/events/PM_PB_RETRY_NODE_PUMP | ||
416 | /sys/devices/cpu/events/PM_INST_FROM_RL2L3_SHR | ||
417 | /sys/devices/cpu/events/PM_MRK_INST_ISSUED | ||
418 | /sys/devices/cpu/events/PM_PTEG_FROM_L3MISS | ||
419 | /sys/devices/cpu/events/PM_RUN_PURR | ||
420 | /sys/devices/cpu/events/PM_MRK_GRP_IC_MISS | ||
421 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_L3 | ||
422 | /sys/devices/cpu/events/PM_PTEG_FROM_RL2L3_SHR | ||
423 | /sys/devices/cpu/events/PM_LSU_FLUSH_LRQ | ||
424 | /sys/devices/cpu/events/PM_MRK_DERAT_MISS_64K | ||
425 | /sys/devices/cpu/events/PM_INST_PTEG_FROM_DL2L3_MOD | ||
426 | /sys/devices/cpu/events/PM_L2_ST_MISS | ||
427 | /sys/devices/cpu/events/PM_MRK_PTEG_FROM_L21_SHR | ||
428 | /sys/devices/cpu/events/PM_LWSYNC | ||
429 | /sys/devices/cpu/events/PM_LSU0_DC_PREF_STREAM_CONFIRM_STRIDE | ||
430 | /sys/devices/cpu/events/PM_MRK_LSU_FLUSH_LRQ | ||
431 | /sys/devices/cpu/events/PM_INST_IMC_MATCH_CMPL | ||
432 | /sys/devices/cpu/events/PM_NEST_PAIR3_AND | ||
433 | /sys/devices/cpu/events/PM_PB_RETRY_SYS_PUMP | ||
434 | /sys/devices/cpu/events/PM_MRK_INST_FIN | ||
435 | /sys/devices/cpu/events/PM_MRK_PTEG_FROM_DL2L3_SHR | ||
436 | /sys/devices/cpu/events/PM_INST_FROM_L31_MOD | ||
437 | /sys/devices/cpu/events/PM_MRK_DTLB_MISS_64K | ||
438 | /sys/devices/cpu/events/PM_LSU_FIN | ||
439 | /sys/devices/cpu/events/PM_MRK_LSU_REJECT | ||
440 | /sys/devices/cpu/events/PM_L2_CO_FAIL_BUSY | ||
441 | /sys/devices/cpu/events/PM_MEM0_WQ_DISP | ||
442 | /sys/devices/cpu/events/PM_DATA_FROM_L31_MOD | ||
443 | /sys/devices/cpu/events/PM_THERMAL_WARN | ||
444 | /sys/devices/cpu/events/PM_VSU0_4FLOP | ||
445 | /sys/devices/cpu/events/PM_BR_MPRED_CCACHE | ||
446 | /sys/devices/cpu/events/PM_L1_DEMAND_WRITE | ||
447 | /sys/devices/cpu/events/PM_FLUSH_BR_MPRED | ||
448 | /sys/devices/cpu/events/PM_MRK_DTLB_MISS_16G | ||
449 | /sys/devices/cpu/events/PM_MRK_PTEG_FROM_DMEM | ||
450 | /sys/devices/cpu/events/PM_L2_RCST_DISP | ||
451 | /sys/devices/cpu/events/PM_LSU_PARTIAL_CDF | ||
452 | /sys/devices/cpu/events/PM_DISP_CLB_HELD_SB | ||
453 | /sys/devices/cpu/events/PM_VSU0_FMA_DOUBLE | ||
454 | /sys/devices/cpu/events/PM_FXU0_BUSY_FXU1_IDLE | ||
455 | /sys/devices/cpu/events/PM_IC_DEMAND_CYC | ||
456 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_L21_SHR | ||
457 | /sys/devices/cpu/events/PM_MRK_LSU_FLUSH_UST | ||
458 | /sys/devices/cpu/events/PM_INST_PTEG_FROM_L3MISS | ||
459 | /sys/devices/cpu/events/PM_VSU_DENORM | ||
460 | /sys/devices/cpu/events/PM_MRK_LSU_PARTIAL_CDF | ||
461 | /sys/devices/cpu/events/PM_INST_FROM_L21_SHR | ||
462 | /sys/devices/cpu/events/PM_IC_PREF_WRITE | ||
463 | /sys/devices/cpu/events/PM_BR_PRED | ||
464 | /sys/devices/cpu/events/PM_INST_FROM_DMEM | ||
465 | /sys/devices/cpu/events/PM_IC_PREF_CANCEL_ALL | ||
466 | /sys/devices/cpu/events/PM_LSU_DC_PREF_STREAM_CONFIRM | ||
467 | /sys/devices/cpu/events/PM_MRK_LSU_FLUSH_SRQ | ||
468 | /sys/devices/cpu/events/PM_MRK_FIN_STALL_CYC | ||
469 | /sys/devices/cpu/events/PM_L2_RCST_DISP_FAIL_OTHER | ||
470 | /sys/devices/cpu/events/PM_VSU1_DD_ISSUED | ||
471 | /sys/devices/cpu/events/PM_PTEG_FROM_L31_SHR | ||
472 | /sys/devices/cpu/events/PM_DATA_FROM_L21_SHR | ||
473 | /sys/devices/cpu/events/PM_LSU0_NCLD | ||
474 | /sys/devices/cpu/events/PM_VSU1_4FLOP | ||
475 | /sys/devices/cpu/events/PM_VSU1_8FLOP | ||
476 | /sys/devices/cpu/events/PM_VSU_8FLOP | ||
477 | /sys/devices/cpu/events/PM_LSU_LMQ_SRQ_EMPTY_CYC | ||
478 | /sys/devices/cpu/events/PM_DTLB_MISS_64K | ||
479 | /sys/devices/cpu/events/PM_THRD_CONC_RUN_INST | ||
480 | /sys/devices/cpu/events/PM_MRK_PTEG_FROM_L2 | ||
481 | /sys/devices/cpu/events/PM_PB_SYS_PUMP | ||
482 | /sys/devices/cpu/events/PM_VSU_FIN | ||
483 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_L31_MOD | ||
484 | /sys/devices/cpu/events/PM_THRD_PRIO_0_1_CYC | ||
485 | /sys/devices/cpu/events/PM_DERAT_MISS_64K | ||
486 | /sys/devices/cpu/events/PM_PMC2_REWIND | ||
487 | /sys/devices/cpu/events/PM_INST_FROM_L2 | ||
488 | /sys/devices/cpu/events/PM_GRP_BR_MPRED_NONSPEC | ||
489 | /sys/devices/cpu/events/PM_INST_DISP | ||
490 | /sys/devices/cpu/events/PM_MEM0_RD_CANCEL_TOTAL | ||
491 | /sys/devices/cpu/events/PM_LSU0_DC_PREF_STREAM_CONFIRM | ||
492 | /sys/devices/cpu/events/PM_L1_DCACHE_RELOAD_VALID | ||
493 | /sys/devices/cpu/events/PM_VSU_SCALAR_DOUBLE_ISSUED | ||
494 | /sys/devices/cpu/events/PM_L3_PREF_HIT | ||
495 | /sys/devices/cpu/events/PM_MRK_PTEG_FROM_L31_MOD | ||
496 | /sys/devices/cpu/events/PM_MRK_FXU_FIN | ||
497 | /sys/devices/cpu/events/PM_PMC4_OVERFLOW | ||
498 | /sys/devices/cpu/events/PM_MRK_PTEG_FROM_L3 | ||
499 | /sys/devices/cpu/events/PM_LSU0_LMQ_LHR_MERGE | ||
500 | /sys/devices/cpu/events/PM_BTAC_HIT | ||
501 | /sys/devices/cpu/events/PM_L3_RD_BUSY | ||
502 | /sys/devices/cpu/events/PM_LSU0_L1_SW_PREF | ||
503 | /sys/devices/cpu/events/PM_INST_FROM_L2MISS | ||
504 | /sys/devices/cpu/events/PM_LSU0_DC_PREF_STREAM_ALLOC | ||
505 | /sys/devices/cpu/events/PM_L2_ST | ||
506 | /sys/devices/cpu/events/PM_VSU0_DENORM | ||
507 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_DL2L3_SHR | ||
508 | /sys/devices/cpu/events/PM_BR_PRED_CR_TA | ||
509 | /sys/devices/cpu/events/PM_VSU0_FCONV | ||
510 | /sys/devices/cpu/events/PM_MRK_LSU_FLUSH_ULD | ||
511 | /sys/devices/cpu/events/PM_BTAC_MISS | ||
512 | /sys/devices/cpu/events/PM_MRK_LD_MISS_EXPOSED_CYC_COUNT | ||
513 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_L2 | ||
514 | /sys/devices/cpu/events/PM_LSU_DCACHE_RELOAD_VALID | ||
515 | /sys/devices/cpu/events/PM_VSU_FMA | ||
516 | /sys/devices/cpu/events/PM_LSU0_FLUSH_SRQ | ||
517 | /sys/devices/cpu/events/PM_LSU1_L1_PREF | ||
518 | /sys/devices/cpu/events/PM_IOPS_CMPL | ||
519 | /sys/devices/cpu/events/PM_L2_SYS_PUMP | ||
520 | /sys/devices/cpu/events/PM_L2_RCLD_BUSY_RC_FULL | ||
521 | /sys/devices/cpu/events/PM_LSU_LMQ_S0_ALLOC | ||
522 | /sys/devices/cpu/events/PM_FLUSH_DISP_SYNC | ||
523 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_DL2L3_MOD_CYC | ||
524 | /sys/devices/cpu/events/PM_L2_IC_INV | ||
525 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_L21_MOD_CYC | ||
526 | /sys/devices/cpu/events/PM_L3_PREF_LDST | ||
527 | /sys/devices/cpu/events/PM_LSU_SRQ_EMPTY_CYC | ||
528 | /sys/devices/cpu/events/PM_LSU_LMQ_S0_VALID | ||
529 | /sys/devices/cpu/events/PM_FLUSH_PARTIAL | ||
530 | /sys/devices/cpu/events/PM_VSU1_FMA_DOUBLE | ||
531 | /sys/devices/cpu/events/PM_1PLUS_PPC_DISP | ||
532 | /sys/devices/cpu/events/PM_DATA_FROM_L2MISS | ||
533 | /sys/devices/cpu/events/PM_SUSPENDED | ||
534 | /sys/devices/cpu/events/PM_VSU0_FMA | ||
535 | /sys/devices/cpu/events/PM_STCX_FAIL | ||
536 | /sys/devices/cpu/events/PM_VSU0_FSQRT_FDIV_DOUBLE | ||
537 | /sys/devices/cpu/events/PM_DC_PREF_DST | ||
538 | /sys/devices/cpu/events/PM_VSU1_SCAL_SINGLE_ISSUED | ||
539 | /sys/devices/cpu/events/PM_L3_HIT | ||
540 | /sys/devices/cpu/events/PM_L2_GLOB_GUESS_WRONG | ||
541 | /sys/devices/cpu/events/PM_MRK_DFU_FIN | ||
542 | /sys/devices/cpu/events/PM_INST_FROM_L1 | ||
543 | /sys/devices/cpu/events/PM_IC_DEMAND_REQ | ||
544 | /sys/devices/cpu/events/PM_VSU1_FSQRT_FDIV_DOUBLE | ||
545 | /sys/devices/cpu/events/PM_VSU1_FMA | ||
546 | /sys/devices/cpu/events/PM_MRK_LD_MISS_L1 | ||
547 | /sys/devices/cpu/events/PM_VSU0_2FLOP_DOUBLE | ||
548 | /sys/devices/cpu/events/PM_LSU_DC_PREF_STRIDED_STREAM_CONFIRM | ||
549 | /sys/devices/cpu/events/PM_INST_PTEG_FROM_L31_SHR | ||
550 | /sys/devices/cpu/events/PM_MRK_LSU_REJECT_ERAT_MISS | ||
551 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_L2MISS | ||
552 | /sys/devices/cpu/events/PM_DATA_FROM_RL2L3_SHR | ||
553 | /sys/devices/cpu/events/PM_INST_FROM_PREF | ||
554 | /sys/devices/cpu/events/PM_VSU1_SQ | ||
555 | /sys/devices/cpu/events/PM_L2_LD_DISP | ||
556 | /sys/devices/cpu/events/PM_L2_DISP_ALL | ||
557 | /sys/devices/cpu/events/PM_THRD_GRP_CMPL_BOTH_CYC | ||
558 | /sys/devices/cpu/events/PM_VSU_FSQRT_FDIV_DOUBLE | ||
559 | /sys/devices/cpu/events/PM_INST_PTEG_FROM_DL2L3_SHR | ||
560 | /sys/devices/cpu/events/PM_VSU_1FLOP | ||
561 | /sys/devices/cpu/events/PM_HV_CYC | ||
562 | /sys/devices/cpu/events/PM_MRK_LSU_FIN | ||
563 | /sys/devices/cpu/events/PM_MRK_DATA_FROM_RL2L3_SHR | ||
564 | /sys/devices/cpu/events/PM_DTLB_MISS_16M | ||
565 | /sys/devices/cpu/events/PM_LSU1_LMQ_LHR_MERGE | ||
566 | /sys/devices/cpu/events/PM_IFU_FIN | ||
567 | /sys/devices/cpu/events/PM_1THRD_CON_RUN_INSTR | ||
568 | /sys/devices/cpu/events/PM_CMPLU_STALL_COUNT | ||
569 | /sys/devices/cpu/events/PM_MEM0_PB_RD_CL | ||
570 | /sys/devices/cpu/events/PM_THRD_1_RUN_CYC | ||
571 | /sys/devices/cpu/events/PM_THRD_2_CONC_RUN_INSTR | ||
572 | /sys/devices/cpu/events/PM_THRD_2_RUN_CYC | ||
573 | /sys/devices/cpu/events/PM_THRD_3_CONC_RUN_INST | ||
574 | /sys/devices/cpu/events/PM_THRD_3_RUN_CYC | ||
575 | /sys/devices/cpu/events/PM_THRD_4_CONC_RUN_INST | ||
576 | /sys/devices/cpu/events/PM_THRD_4_RUN_CYC | ||
60 | 577 | ||
61 | Date: 2013/01/08 | 578 | Date: 2013/01/08 |
62 | 579 | ||
diff --git a/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x7 b/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x7 new file mode 100644 index 000000000000..e78ee798d7bd --- /dev/null +++ b/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x7 | |||
@@ -0,0 +1,23 @@ | |||
1 | What: /sys/bus/event_source/devices/hv_24x7/interface/catalog | ||
2 | Date: February 2014 | ||
3 | Contact: Cody P Schafer <cody@linux.vnet.ibm.com> | ||
4 | Description: | ||
5 | Provides access to the binary "24x7 catalog" provided by the | ||
6 | hypervisor on POWER7 and 8 systems. This catalog lists events | ||
7 | avaliable from the powerpc "hv_24x7" pmu. Its format is | ||
8 | documented here: | ||
9 | https://raw.githubusercontent.com/jmesmon/catalog-24x7/master/hv-24x7-catalog.h | ||
10 | |||
11 | What: /sys/bus/event_source/devices/hv_24x7/interface/catalog_length | ||
12 | Date: February 2014 | ||
13 | Contact: Cody P Schafer <cody@linux.vnet.ibm.com> | ||
14 | Description: | ||
15 | A number equal to the length in bytes of the catalog. This is | ||
16 | also extractable from the provided binary "catalog" sysfs entry. | ||
17 | |||
18 | What: /sys/bus/event_source/devices/hv_24x7/interface/catalog_version | ||
19 | Date: February 2014 | ||
20 | Contact: Cody P Schafer <cody@linux.vnet.ibm.com> | ||
21 | Description: | ||
22 | Exposes the "version" field of the 24x7 catalog. This is also | ||
23 | extractable from the provided binary "catalog" sysfs entry. | ||
diff --git a/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_gpci b/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_gpci new file mode 100644 index 000000000000..3fa58c23f13b --- /dev/null +++ b/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_gpci | |||
@@ -0,0 +1,43 @@ | |||
1 | What: /sys/bus/event_source/devices/hv_gpci/interface/collect_privileged | ||
2 | Date: February 2014 | ||
3 | Contact: Cody P Schafer <cody@linux.vnet.ibm.com> | ||
4 | Description: | ||
5 | '0' if the hypervisor is configured to forbid access to event | ||
6 | counters being accumulated by other guests and to physical | ||
7 | domain event counters. | ||
8 | '1' if that access is allowed. | ||
9 | |||
10 | What: /sys/bus/event_source/devices/hv_gpci/interface/ga | ||
11 | Date: February 2014 | ||
12 | Contact: Cody P Schafer <cody@linux.vnet.ibm.com> | ||
13 | Description: | ||
14 | 0 or 1. Indicates whether we have access to "GA" events (listed | ||
15 | in arch/powerpc/perf/hv-gpci.h). | ||
16 | |||
17 | What: /sys/bus/event_source/devices/hv_gpci/interface/expanded | ||
18 | Date: February 2014 | ||
19 | Contact: Cody P Schafer <cody@linux.vnet.ibm.com> | ||
20 | Description: | ||
21 | 0 or 1. Indicates whether we have access to "EXPANDED" events (listed | ||
22 | in arch/powerpc/perf/hv-gpci.h). | ||
23 | |||
24 | What: /sys/bus/event_source/devices/hv_gpci/interface/lab | ||
25 | Date: February 2014 | ||
26 | Contact: Cody P Schafer <cody@linux.vnet.ibm.com> | ||
27 | Description: | ||
28 | 0 or 1. Indicates whether we have access to "LAB" events (listed | ||
29 | in arch/powerpc/perf/hv-gpci.h). | ||
30 | |||
31 | What: /sys/bus/event_source/devices/hv_gpci/interface/version | ||
32 | Date: February 2014 | ||
33 | Contact: Cody P Schafer <cody@linux.vnet.ibm.com> | ||
34 | Description: | ||
35 | A number indicating the version of the gpci interface that the | ||
36 | hypervisor reports supporting. | ||
37 | |||
38 | What: /sys/bus/event_source/devices/hv_gpci/interface/kernel_version | ||
39 | Date: February 2014 | ||
40 | Contact: Cody P Schafer <cody@linux.vnet.ibm.com> | ||
41 | Description: | ||
42 | A number indicating the latest version of the gpci interface | ||
43 | that the kernel is aware of. | ||
diff --git a/Documentation/ABI/testing/sysfs-class-scsi_host b/Documentation/ABI/testing/sysfs-class-scsi_host index 29a4f892e433..0eb255e7db12 100644 --- a/Documentation/ABI/testing/sysfs-class-scsi_host +++ b/Documentation/ABI/testing/sysfs-class-scsi_host | |||
@@ -11,3 +11,19 @@ Description: | |||
11 | guaranteed. The 'isci_id' attribute unambiguously identifies | 11 | guaranteed. The 'isci_id' attribute unambiguously identifies |
12 | the controller index: '0' for the first controller, | 12 | the controller index: '0' for the first controller, |
13 | '1' for the second. | 13 | '1' for the second. |
14 | |||
15 | What: /sys/class/scsi_host/hostX/acciopath_status | ||
16 | Date: November 2013 | ||
17 | Contact: Stephen M. Cameron <scameron@beardog.cce.hp.com> | ||
18 | Description: This file contains the current status of the "SSD Smart Path" | ||
19 | feature of HP Smart Array RAID controllers using the hpsa | ||
20 | driver. SSD Smart Path, when enabled permits the driver to | ||
21 | send i/o requests directly to physical devices that are part | ||
22 | of a logical drive, bypassing the controllers firmware RAID | ||
23 | stack for a performance advantage when possible. A value of | ||
24 | '1' indicates the feature is enabled, and the controller may | ||
25 | use the direct i/o path to physical devices. A value of zero | ||
26 | means the feature is disabled and the controller may not use | ||
27 | the direct i/o path to physical devices. This setting is | ||
28 | controller wide, affecting all configured logical drives on the | ||
29 | controller. This file is readable and writable. | ||
diff --git a/Documentation/ABI/testing/sysfs-devices-power b/Documentation/ABI/testing/sysfs-devices-power index efe449bdf811..7dbf96b724ed 100644 --- a/Documentation/ABI/testing/sysfs-devices-power +++ b/Documentation/ABI/testing/sysfs-devices-power | |||
@@ -187,7 +187,7 @@ Description: | |||
187 | Not all drivers support this attribute. If it isn't supported, | 187 | Not all drivers support this attribute. If it isn't supported, |
188 | attempts to read or write it will yield I/O errors. | 188 | attempts to read or write it will yield I/O errors. |
189 | 189 | ||
190 | What: /sys/devices/.../power/pm_qos_latency_us | 190 | What: /sys/devices/.../power/pm_qos_resume_latency_us |
191 | Date: March 2012 | 191 | Date: March 2012 |
192 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> | 192 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
193 | Description: | 193 | Description: |
@@ -205,6 +205,31 @@ Description: | |||
205 | This attribute has no effect on system-wide suspend/resume and | 205 | This attribute has no effect on system-wide suspend/resume and |
206 | hibernation. | 206 | hibernation. |
207 | 207 | ||
208 | What: /sys/devices/.../power/pm_qos_latency_tolerance_us | ||
209 | Date: January 2014 | ||
210 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> | ||
211 | Description: | ||
212 | The /sys/devices/.../power/pm_qos_latency_tolerance_us attribute | ||
213 | contains the PM QoS active state latency tolerance limit for the | ||
214 | given device in microseconds. That is the maximum memory access | ||
215 | latency the device can suffer without any visible adverse | ||
216 | effects on user space functionality. If that value is the | ||
217 | string "any", the latency does not matter to user space at all, | ||
218 | but hardware should not be allowed to set the latency tolerance | ||
219 | for the device automatically. | ||
220 | |||
221 | Reading "auto" from this file means that the maximum memory | ||
222 | access latency for the device may be determined automatically | ||
223 | by the hardware as needed. Writing "auto" to it allows the | ||
224 | hardware to be switched to this mode if there are no other | ||
225 | latency tolerance requirements from the kernel side. | ||
226 | |||
227 | This attribute is only present if the feature controlled by it | ||
228 | is supported by the hardware. | ||
229 | |||
230 | This attribute has no effect on runtime suspend and resume of | ||
231 | devices and on system-wide suspend/resume and hibernation. | ||
232 | |||
208 | What: /sys/devices/.../power/pm_qos_no_power_off | 233 | What: /sys/devices/.../power/pm_qos_no_power_off |
209 | Date: September 2012 | 234 | Date: September 2012 |
210 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> | 235 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
diff --git a/Documentation/ABI/testing/sysfs-firmware-ofw b/Documentation/ABI/testing/sysfs-firmware-ofw new file mode 100644 index 000000000000..f562b188e71d --- /dev/null +++ b/Documentation/ABI/testing/sysfs-firmware-ofw | |||
@@ -0,0 +1,28 @@ | |||
1 | What: /sys/firmware/devicetree/* | ||
2 | Date: November 2013 | ||
3 | Contact: Grant Likely <grant.likely@linaro.org> | ||
4 | Description: | ||
5 | When using OpenFirmware or a Flattened Device Tree to enumerate | ||
6 | hardware, the device tree structure will be exposed in this | ||
7 | directory. | ||
8 | |||
9 | It is possible for multiple device-tree directories to exist. | ||
10 | Some device drivers use a separate detached device tree which | ||
11 | have no attachment to the system tree and will appear in a | ||
12 | different subdirectory under /sys/firmware/devicetree. | ||
13 | |||
14 | Userspace must not use the /sys/firmware/devicetree/base | ||
15 | path directly, but instead should follow /proc/device-tree | ||
16 | symlink. It is possible that the absolute path will change | ||
17 | in the future, but the symlink is the stable ABI. | ||
18 | |||
19 | The /proc/device-tree symlink replaces the devicetree /proc | ||
20 | filesystem support, and has largely the same semantics and | ||
21 | should be compatible with existing userspace. | ||
22 | |||
23 | The contents of /sys/firmware/devicetree/ is a | ||
24 | hierarchy of directories, one per device tree node. The | ||
25 | directory name is the resolved path component name (node | ||
26 | name plus address). Properties are represented as files | ||
27 | in the directory. The contents of each file is the exact | ||
28 | binary data from the device tree. | ||
diff --git a/Documentation/ABI/testing/sysfs-power b/Documentation/ABI/testing/sysfs-power index 205a73878441..64c9276e9421 100644 --- a/Documentation/ABI/testing/sysfs-power +++ b/Documentation/ABI/testing/sysfs-power | |||
@@ -12,8 +12,9 @@ Contact: Rafael J. Wysocki <rjw@rjwysocki.net> | |||
12 | Description: | 12 | Description: |
13 | The /sys/power/state file controls the system power state. | 13 | The /sys/power/state file controls the system power state. |
14 | Reading from this file returns what states are supported, | 14 | Reading from this file returns what states are supported, |
15 | which is hard-coded to 'standby' (Power-On Suspend), 'mem' | 15 | which is hard-coded to 'freeze' (Low-Power Idle), 'standby' |
16 | (Suspend-to-RAM), and 'disk' (Suspend-to-Disk). | 16 | (Power-On Suspend), 'mem' (Suspend-to-RAM), and 'disk' |
17 | (Suspend-to-Disk). | ||
17 | 18 | ||
18 | Writing to this file one of these strings causes the system to | 19 | Writing to this file one of these strings causes the system to |
19 | transition into that state. Please see the file | 20 | transition into that state. Please see the file |
diff --git a/Documentation/ABI/testing/sysfs-tty b/Documentation/ABI/testing/sysfs-tty index a2ccec35ffce..ad22fb0ee765 100644 --- a/Documentation/ABI/testing/sysfs-tty +++ b/Documentation/ABI/testing/sysfs-tty | |||
@@ -3,8 +3,7 @@ Date: Nov 2010 | |||
3 | Contact: Kay Sievers <kay.sievers@vrfy.org> | 3 | Contact: Kay Sievers <kay.sievers@vrfy.org> |
4 | Description: | 4 | Description: |
5 | Shows the list of currently configured | 5 | Shows the list of currently configured |
6 | tty devices used for the console, | 6 | console devices, like 'tty1 ttyS0'. |
7 | like 'tty1 ttyS0'. | ||
8 | The last entry in the file is the active | 7 | The last entry in the file is the active |
9 | device connected to /dev/console. | 8 | device connected to /dev/console. |
10 | The file supports poll() to detect virtual | 9 | The file supports poll() to detect virtual |
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index 0f9c6ff41aac..8d96ebf524e9 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile | |||
@@ -14,7 +14,7 @@ DOCBOOKS := z8530book.xml device-drivers.xml \ | |||
14 | genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \ | 14 | genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \ |
15 | 80211.xml debugobjects.xml sh.xml regulator.xml \ | 15 | 80211.xml debugobjects.xml sh.xml regulator.xml \ |
16 | alsa-driver-api.xml writing-an-alsa-driver.xml \ | 16 | alsa-driver-api.xml writing-an-alsa-driver.xml \ |
17 | tracepoint.xml drm.xml media_api.xml | 17 | tracepoint.xml drm.xml media_api.xml w1.xml |
18 | 18 | ||
19 | include $(srctree)/Documentation/DocBook/media/Makefile | 19 | include $(srctree)/Documentation/DocBook/media/Makefile |
20 | 20 | ||
diff --git a/Documentation/DocBook/w1.tmpl b/Documentation/DocBook/w1.tmpl new file mode 100644 index 000000000000..b0228d4c81bb --- /dev/null +++ b/Documentation/DocBook/w1.tmpl | |||
@@ -0,0 +1,101 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" | ||
3 | "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []> | ||
4 | |||
5 | <book id="w1id"> | ||
6 | <bookinfo> | ||
7 | <title>W1: Dallas' 1-wire bus</title> | ||
8 | |||
9 | <authorgroup> | ||
10 | <author> | ||
11 | <firstname>David</firstname> | ||
12 | <surname>Fries</surname> | ||
13 | <affiliation> | ||
14 | <address> | ||
15 | <email>David@Fries.net</email> | ||
16 | </address> | ||
17 | </affiliation> | ||
18 | </author> | ||
19 | |||
20 | </authorgroup> | ||
21 | |||
22 | <copyright> | ||
23 | <year>2013</year> | ||
24 | <!-- | ||
25 | <holder></holder> | ||
26 | --> | ||
27 | </copyright> | ||
28 | |||
29 | <legalnotice> | ||
30 | <para> | ||
31 | This documentation is free software; you can redistribute | ||
32 | it and/or modify it under the terms of the GNU General Public | ||
33 | License version 2. | ||
34 | </para> | ||
35 | |||
36 | <para> | ||
37 | This program is distributed in the hope that it will be | ||
38 | useful, but WITHOUT ANY WARRANTY; without even the implied | ||
39 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
40 | For more details see the file COPYING in the source | ||
41 | distribution of Linux. | ||
42 | </para> | ||
43 | </legalnotice> | ||
44 | </bookinfo> | ||
45 | |||
46 | <toc></toc> | ||
47 | |||
48 | <chapter id="w1_internal"> | ||
49 | <title>W1 API internal to the kernel</title> | ||
50 | |||
51 | <sect1 id="w1_internal_api"> | ||
52 | <title>W1 API internal to the kernel</title> | ||
53 | <sect2 id="w1.h"> | ||
54 | <title>drivers/w1/w1.h</title> | ||
55 | <para>W1 core functions.</para> | ||
56 | !Idrivers/w1/w1.h | ||
57 | </sect2> | ||
58 | |||
59 | <sect2 id="w1.c"> | ||
60 | <title>drivers/w1/w1.c</title> | ||
61 | <para>W1 core functions.</para> | ||
62 | !Idrivers/w1/w1.c | ||
63 | </sect2> | ||
64 | |||
65 | <sect2 id="w1_family.h"> | ||
66 | <title>drivers/w1/w1_family.h</title> | ||
67 | <para>Allows registering device family operations.</para> | ||
68 | !Idrivers/w1/w1_family.h | ||
69 | </sect2> | ||
70 | |||
71 | <sect2 id="w1_family.c"> | ||
72 | <title>drivers/w1/w1_family.c</title> | ||
73 | <para>Allows registering device family operations.</para> | ||
74 | !Edrivers/w1/w1_family.c | ||
75 | </sect2> | ||
76 | |||
77 | <sect2 id="w1_int.c"> | ||
78 | <title>drivers/w1/w1_int.c</title> | ||
79 | <para>W1 internal initialization for master devices.</para> | ||
80 | !Edrivers/w1/w1_int.c | ||
81 | </sect2> | ||
82 | |||
83 | <sect2 id="w1_netlink.h"> | ||
84 | <title>drivers/w1/w1_netlink.h</title> | ||
85 | <para>W1 external netlink API structures and commands.</para> | ||
86 | !Idrivers/w1/w1_netlink.h | ||
87 | </sect2> | ||
88 | |||
89 | <sect2 id="w1_io.c"> | ||
90 | <title>drivers/w1/w1_io.c</title> | ||
91 | <para>W1 input/output.</para> | ||
92 | !Edrivers/w1/w1_io.c | ||
93 | !Idrivers/w1/w1_io.c | ||
94 | </sect2> | ||
95 | |||
96 | </sect1> | ||
97 | |||
98 | |||
99 | </chapter> | ||
100 | |||
101 | </book> | ||
diff --git a/Documentation/DocBook/writing-an-alsa-driver.tmpl b/Documentation/DocBook/writing-an-alsa-driver.tmpl index 06741e925985..d0056a4e9c53 100644 --- a/Documentation/DocBook/writing-an-alsa-driver.tmpl +++ b/Documentation/DocBook/writing-an-alsa-driver.tmpl | |||
@@ -468,8 +468,6 @@ | |||
468 | return err; | 468 | return err; |
469 | } | 469 | } |
470 | 470 | ||
471 | snd_card_set_dev(card, &pci->dev); | ||
472 | |||
473 | *rchip = chip; | 471 | *rchip = chip; |
474 | return 0; | 472 | return 0; |
475 | } | 473 | } |
@@ -492,7 +490,8 @@ | |||
492 | } | 490 | } |
493 | 491 | ||
494 | /* (2) */ | 492 | /* (2) */ |
495 | err = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card); | 493 | err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE, |
494 | 0, &card); | ||
496 | if (err < 0) | 495 | if (err < 0) |
497 | return err; | 496 | return err; |
498 | 497 | ||
@@ -591,7 +590,8 @@ | |||
591 | struct snd_card *card; | 590 | struct snd_card *card; |
592 | int err; | 591 | int err; |
593 | .... | 592 | .... |
594 | err = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card); | 593 | err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE, |
594 | 0, &card); | ||
595 | ]]> | 595 | ]]> |
596 | </programlisting> | 596 | </programlisting> |
597 | </informalexample> | 597 | </informalexample> |
@@ -809,28 +809,34 @@ | |||
809 | 809 | ||
810 | <para> | 810 | <para> |
811 | As mentioned above, to create a card instance, call | 811 | As mentioned above, to create a card instance, call |
812 | <function>snd_card_create()</function>. | 812 | <function>snd_card_new()</function>. |
813 | 813 | ||
814 | <informalexample> | 814 | <informalexample> |
815 | <programlisting> | 815 | <programlisting> |
816 | <![CDATA[ | 816 | <![CDATA[ |
817 | struct snd_card *card; | 817 | struct snd_card *card; |
818 | int err; | 818 | int err; |
819 | err = snd_card_create(index, id, module, extra_size, &card); | 819 | err = snd_card_new(&pci->dev, index, id, module, extra_size, &card); |
820 | ]]> | 820 | ]]> |
821 | </programlisting> | 821 | </programlisting> |
822 | </informalexample> | 822 | </informalexample> |
823 | </para> | 823 | </para> |
824 | 824 | ||
825 | <para> | 825 | <para> |
826 | The function takes five arguments, the card-index number, the | 826 | The function takes six arguments: the parent device pointer, |
827 | id string, the module pointer (usually | 827 | the card-index number, the id string, the module pointer (usually |
828 | <constant>THIS_MODULE</constant>), | 828 | <constant>THIS_MODULE</constant>), |
829 | the size of extra-data space, and the pointer to return the | 829 | the size of extra-data space, and the pointer to return the |
830 | card instance. The extra_size argument is used to | 830 | card instance. The extra_size argument is used to |
831 | allocate card->private_data for the | 831 | allocate card->private_data for the |
832 | chip-specific data. Note that these data | 832 | chip-specific data. Note that these data |
833 | are allocated by <function>snd_card_create()</function>. | 833 | are allocated by <function>snd_card_new()</function>. |
834 | </para> | ||
835 | |||
836 | <para> | ||
837 | The first argument, the pointer of struct | ||
838 | <structname>device</structname>, specifies the parent device. | ||
839 | For PCI devices, typically &pci-> is passed there. | ||
834 | </para> | 840 | </para> |
835 | </section> | 841 | </section> |
836 | 842 | ||
@@ -916,16 +922,16 @@ | |||
916 | </para> | 922 | </para> |
917 | 923 | ||
918 | <section id="card-management-chip-specific-snd-card-new"> | 924 | <section id="card-management-chip-specific-snd-card-new"> |
919 | <title>1. Allocating via <function>snd_card_create()</function>.</title> | 925 | <title>1. Allocating via <function>snd_card_new()</function>.</title> |
920 | <para> | 926 | <para> |
921 | As mentioned above, you can pass the extra-data-length | 927 | As mentioned above, you can pass the extra-data-length |
922 | to the 4th argument of <function>snd_card_create()</function>, i.e. | 928 | to the 5th argument of <function>snd_card_new()</function>, i.e. |
923 | 929 | ||
924 | <informalexample> | 930 | <informalexample> |
925 | <programlisting> | 931 | <programlisting> |
926 | <![CDATA[ | 932 | <![CDATA[ |
927 | err = snd_card_create(index[dev], id[dev], THIS_MODULE, | 933 | err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE, |
928 | sizeof(struct mychip), &card); | 934 | sizeof(struct mychip), &card); |
929 | ]]> | 935 | ]]> |
930 | </programlisting> | 936 | </programlisting> |
931 | </informalexample> | 937 | </informalexample> |
@@ -954,7 +960,7 @@ | |||
954 | 960 | ||
955 | <para> | 961 | <para> |
956 | After allocating a card instance via | 962 | After allocating a card instance via |
957 | <function>snd_card_create()</function> (with | 963 | <function>snd_card_new()</function> (with |
958 | <constant>0</constant> on the 4th arg), call | 964 | <constant>0</constant> on the 4th arg), call |
959 | <function>kzalloc()</function>. | 965 | <function>kzalloc()</function>. |
960 | 966 | ||
@@ -963,7 +969,8 @@ | |||
963 | <![CDATA[ | 969 | <![CDATA[ |
964 | struct snd_card *card; | 970 | struct snd_card *card; |
965 | struct mychip *chip; | 971 | struct mychip *chip; |
966 | err = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card); | 972 | err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE, |
973 | 0, &card); | ||
967 | ..... | 974 | ..... |
968 | chip = kzalloc(sizeof(*chip), GFP_KERNEL); | 975 | chip = kzalloc(sizeof(*chip), GFP_KERNEL); |
969 | ]]> | 976 | ]]> |
@@ -1170,8 +1177,6 @@ | |||
1170 | return err; | 1177 | return err; |
1171 | } | 1178 | } |
1172 | 1179 | ||
1173 | snd_card_set_dev(card, &pci->dev); | ||
1174 | |||
1175 | *rchip = chip; | 1180 | *rchip = chip; |
1176 | return 0; | 1181 | return 0; |
1177 | } | 1182 | } |
@@ -1526,30 +1531,6 @@ | |||
1526 | 1531 | ||
1527 | </section> | 1532 | </section> |
1528 | 1533 | ||
1529 | <section id="pci-resource-device-struct"> | ||
1530 | <title>Registration of Device Struct</title> | ||
1531 | <para> | ||
1532 | At some point, typically after calling <function>snd_device_new()</function>, | ||
1533 | you need to register the struct <structname>device</structname> of the chip | ||
1534 | you're handling for udev and co. ALSA provides a macro for compatibility with | ||
1535 | older kernels. Simply call like the following: | ||
1536 | <informalexample> | ||
1537 | <programlisting> | ||
1538 | <![CDATA[ | ||
1539 | snd_card_set_dev(card, &pci->dev); | ||
1540 | ]]> | ||
1541 | </programlisting> | ||
1542 | </informalexample> | ||
1543 | so that it stores the PCI's device pointer to the card. This will be | ||
1544 | referred by ALSA core functions later when the devices are registered. | ||
1545 | </para> | ||
1546 | <para> | ||
1547 | In the case of non-PCI, pass the proper device struct pointer of the BUS | ||
1548 | instead. (In the case of legacy ISA without PnP, you don't have to do | ||
1549 | anything.) | ||
1550 | </para> | ||
1551 | </section> | ||
1552 | |||
1553 | <section id="pci-resource-entries"> | 1534 | <section id="pci-resource-entries"> |
1554 | <title>PCI Entries</title> | 1535 | <title>PCI Entries</title> |
1555 | <para> | 1536 | <para> |
@@ -5740,7 +5721,8 @@ struct _snd_pcm_runtime { | |||
5740 | struct mychip *chip; | 5721 | struct mychip *chip; |
5741 | int err; | 5722 | int err; |
5742 | .... | 5723 | .... |
5743 | err = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card); | 5724 | err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE, |
5725 | 0, &card); | ||
5744 | .... | 5726 | .... |
5745 | chip = kzalloc(sizeof(*chip), GFP_KERNEL); | 5727 | chip = kzalloc(sizeof(*chip), GFP_KERNEL); |
5746 | .... | 5728 | .... |
@@ -5752,7 +5734,7 @@ struct _snd_pcm_runtime { | |||
5752 | </informalexample> | 5734 | </informalexample> |
5753 | 5735 | ||
5754 | When you created the chip data with | 5736 | When you created the chip data with |
5755 | <function>snd_card_create()</function>, it's anyway accessible | 5737 | <function>snd_card_new()</function>, it's anyway accessible |
5756 | via <structfield>private_data</structfield> field. | 5738 | via <structfield>private_data</structfield> field. |
5757 | 5739 | ||
5758 | <informalexample> | 5740 | <informalexample> |
@@ -5766,8 +5748,8 @@ struct _snd_pcm_runtime { | |||
5766 | struct mychip *chip; | 5748 | struct mychip *chip; |
5767 | int err; | 5749 | int err; |
5768 | .... | 5750 | .... |
5769 | err = snd_card_create(index[dev], id[dev], THIS_MODULE, | 5751 | err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE, |
5770 | sizeof(struct mychip), &card); | 5752 | sizeof(struct mychip), &card); |
5771 | .... | 5753 | .... |
5772 | chip = card->private_data; | 5754 | chip = card->private_data; |
5773 | .... | 5755 | .... |
diff --git a/Documentation/PCI/MSI-HOWTO.txt b/Documentation/PCI/MSI-HOWTO.txt index a8d01005f480..10a93696e55a 100644 --- a/Documentation/PCI/MSI-HOWTO.txt +++ b/Documentation/PCI/MSI-HOWTO.txt | |||
@@ -82,7 +82,19 @@ Most of the hard work is done for the driver in the PCI layer. It simply | |||
82 | has to request that the PCI layer set up the MSI capability for this | 82 | has to request that the PCI layer set up the MSI capability for this |
83 | device. | 83 | device. |
84 | 84 | ||
85 | 4.2.1 pci_enable_msi_range | 85 | 4.2.1 pci_enable_msi |
86 | |||
87 | int pci_enable_msi(struct pci_dev *dev) | ||
88 | |||
89 | A successful call allocates ONE interrupt to the device, regardless | ||
90 | of how many MSIs the device supports. The device is switched from | ||
91 | pin-based interrupt mode to MSI mode. The dev->irq number is changed | ||
92 | to a new number which represents the message signaled interrupt; | ||
93 | consequently, this function should be called before the driver calls | ||
94 | request_irq(), because an MSI is delivered via a vector that is | ||
95 | different from the vector of a pin-based interrupt. | ||
96 | |||
97 | 4.2.2 pci_enable_msi_range | ||
86 | 98 | ||
87 | int pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec) | 99 | int pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec) |
88 | 100 | ||
@@ -147,6 +159,11 @@ static int foo_driver_enable_msi(struct pci_dev *pdev, int nvec) | |||
147 | return pci_enable_msi_range(pdev, nvec, nvec); | 159 | return pci_enable_msi_range(pdev, nvec, nvec); |
148 | } | 160 | } |
149 | 161 | ||
162 | Note, unlike pci_enable_msi_exact() function, which could be also used to | ||
163 | enable a particular number of MSI-X interrupts, pci_enable_msi_range() | ||
164 | returns either a negative errno or 'nvec' (not negative errno or 0 - as | ||
165 | pci_enable_msi_exact() does). | ||
166 | |||
150 | 4.2.1.3 Single MSI mode | 167 | 4.2.1.3 Single MSI mode |
151 | 168 | ||
152 | The most notorious example of the request type described above is | 169 | The most notorious example of the request type described above is |
@@ -158,7 +175,27 @@ static int foo_driver_enable_single_msi(struct pci_dev *pdev) | |||
158 | return pci_enable_msi_range(pdev, 1, 1); | 175 | return pci_enable_msi_range(pdev, 1, 1); |
159 | } | 176 | } |
160 | 177 | ||
161 | 4.2.2 pci_disable_msi | 178 | Note, unlike pci_enable_msi() function, which could be also used to |
179 | enable the single MSI mode, pci_enable_msi_range() returns either a | ||
180 | negative errno or 1 (not negative errno or 0 - as pci_enable_msi() | ||
181 | does). | ||
182 | |||
183 | 4.2.3 pci_enable_msi_exact | ||
184 | |||
185 | int pci_enable_msi_exact(struct pci_dev *dev, int nvec) | ||
186 | |||
187 | This variation on pci_enable_msi_range() call allows a device driver to | ||
188 | request exactly 'nvec' MSIs. | ||
189 | |||
190 | If this function returns a negative number, it indicates an error and | ||
191 | the driver should not attempt to request any more MSI interrupts for | ||
192 | this device. | ||
193 | |||
194 | By contrast with pci_enable_msi_range() function, pci_enable_msi_exact() | ||
195 | returns zero in case of success, which indicates MSI interrupts have been | ||
196 | successfully allocated. | ||
197 | |||
198 | 4.2.4 pci_disable_msi | ||
162 | 199 | ||
163 | void pci_disable_msi(struct pci_dev *dev) | 200 | void pci_disable_msi(struct pci_dev *dev) |
164 | 201 | ||
@@ -172,7 +209,7 @@ on any interrupt for which it previously called request_irq(). | |||
172 | Failure to do so results in a BUG_ON(), leaving the device with | 209 | Failure to do so results in a BUG_ON(), leaving the device with |
173 | MSI enabled and thus leaking its vector. | 210 | MSI enabled and thus leaking its vector. |
174 | 211 | ||
175 | 4.2.3 pci_msi_vec_count | 212 | 4.2.4 pci_msi_vec_count |
176 | 213 | ||
177 | int pci_msi_vec_count(struct pci_dev *dev) | 214 | int pci_msi_vec_count(struct pci_dev *dev) |
178 | 215 | ||
@@ -257,8 +294,8 @@ possible, likely up to the limit returned by pci_msix_vec_count() function: | |||
257 | 294 | ||
258 | static int foo_driver_enable_msix(struct foo_adapter *adapter, int nvec) | 295 | static int foo_driver_enable_msix(struct foo_adapter *adapter, int nvec) |
259 | { | 296 | { |
260 | return pci_enable_msi_range(adapter->pdev, adapter->msix_entries, | 297 | return pci_enable_msix_range(adapter->pdev, adapter->msix_entries, |
261 | 1, nvec); | 298 | 1, nvec); |
262 | } | 299 | } |
263 | 300 | ||
264 | Note the value of 'minvec' parameter is 1. As 'minvec' is inclusive, | 301 | Note the value of 'minvec' parameter is 1. As 'minvec' is inclusive, |
@@ -269,8 +306,8 @@ In this case the function could look like this: | |||
269 | 306 | ||
270 | static int foo_driver_enable_msix(struct foo_adapter *adapter, int nvec) | 307 | static int foo_driver_enable_msix(struct foo_adapter *adapter, int nvec) |
271 | { | 308 | { |
272 | return pci_enable_msi_range(adapter->pdev, adapter->msix_entries, | 309 | return pci_enable_msix_range(adapter->pdev, adapter->msix_entries, |
273 | FOO_DRIVER_MINIMUM_NVEC, nvec); | 310 | FOO_DRIVER_MINIMUM_NVEC, nvec); |
274 | } | 311 | } |
275 | 312 | ||
276 | 4.3.1.2 Exact number of MSI-X interrupts | 313 | 4.3.1.2 Exact number of MSI-X interrupts |
@@ -282,10 +319,15 @@ parameters: | |||
282 | 319 | ||
283 | static int foo_driver_enable_msix(struct foo_adapter *adapter, int nvec) | 320 | static int foo_driver_enable_msix(struct foo_adapter *adapter, int nvec) |
284 | { | 321 | { |
285 | return pci_enable_msi_range(adapter->pdev, adapter->msix_entries, | 322 | return pci_enable_msix_range(adapter->pdev, adapter->msix_entries, |
286 | nvec, nvec); | 323 | nvec, nvec); |
287 | } | 324 | } |
288 | 325 | ||
326 | Note, unlike pci_enable_msix_exact() function, which could be also used to | ||
327 | enable a particular number of MSI-X interrupts, pci_enable_msix_range() | ||
328 | returns either a negative errno or 'nvec' (not negative errno or 0 - as | ||
329 | pci_enable_msix_exact() does). | ||
330 | |||
289 | 4.3.1.3 Specific requirements to the number of MSI-X interrupts | 331 | 4.3.1.3 Specific requirements to the number of MSI-X interrupts |
290 | 332 | ||
291 | As noted above, there could be devices that can not operate with just any | 333 | As noted above, there could be devices that can not operate with just any |
@@ -332,7 +374,64 @@ Note how pci_enable_msix_range() return value is analized for a fallback - | |||
332 | any error code other than -ENOSPC indicates a fatal error and should not | 374 | any error code other than -ENOSPC indicates a fatal error and should not |
333 | be retried. | 375 | be retried. |
334 | 376 | ||
335 | 4.3.2 pci_disable_msix | 377 | 4.3.2 pci_enable_msix_exact |
378 | |||
379 | int pci_enable_msix_exact(struct pci_dev *dev, | ||
380 | struct msix_entry *entries, int nvec) | ||
381 | |||
382 | This variation on pci_enable_msix_range() call allows a device driver to | ||
383 | request exactly 'nvec' MSI-Xs. | ||
384 | |||
385 | If this function returns a negative number, it indicates an error and | ||
386 | the driver should not attempt to allocate any more MSI-X interrupts for | ||
387 | this device. | ||
388 | |||
389 | By contrast with pci_enable_msix_range() function, pci_enable_msix_exact() | ||
390 | returns zero in case of success, which indicates MSI-X interrupts have been | ||
391 | successfully allocated. | ||
392 | |||
393 | Another version of a routine that enables MSI-X mode for a device with | ||
394 | specific requirements described in chapter 4.3.1.3 might look like this: | ||
395 | |||
396 | /* | ||
397 | * Assume 'minvec' and 'maxvec' are non-zero | ||
398 | */ | ||
399 | static int foo_driver_enable_msix(struct foo_adapter *adapter, | ||
400 | int minvec, int maxvec) | ||
401 | { | ||
402 | int rc; | ||
403 | |||
404 | minvec = roundup_pow_of_two(minvec); | ||
405 | maxvec = rounddown_pow_of_two(maxvec); | ||
406 | |||
407 | if (minvec > maxvec) | ||
408 | return -ERANGE; | ||
409 | |||
410 | retry: | ||
411 | rc = pci_enable_msix_exact(adapter->pdev, | ||
412 | adapter->msix_entries, maxvec); | ||
413 | |||
414 | /* | ||
415 | * -ENOSPC is the only error code allowed to be analyzed | ||
416 | */ | ||
417 | if (rc == -ENOSPC) { | ||
418 | if (maxvec == 1) | ||
419 | return -ENOSPC; | ||
420 | |||
421 | maxvec /= 2; | ||
422 | |||
423 | if (minvec > maxvec) | ||
424 | return -ENOSPC; | ||
425 | |||
426 | goto retry; | ||
427 | } else if (rc < 0) { | ||
428 | return rc; | ||
429 | } | ||
430 | |||
431 | return maxvec; | ||
432 | } | ||
433 | |||
434 | 4.3.3 pci_disable_msix | ||
336 | 435 | ||
337 | void pci_disable_msix(struct pci_dev *dev) | 436 | void pci_disable_msix(struct pci_dev *dev) |
338 | 437 | ||
diff --git a/Documentation/PCI/pci-iov-howto.txt b/Documentation/PCI/pci-iov-howto.txt index 86551cc72e03..2d91ae251982 100644 --- a/Documentation/PCI/pci-iov-howto.txt +++ b/Documentation/PCI/pci-iov-howto.txt | |||
@@ -68,10 +68,6 @@ To disable SR-IOV capability: | |||
68 | echo 0 > \ | 68 | echo 0 > \ |
69 | /sys/bus/pci/devices/<DOMAIN:BUS:DEVICE.FUNCTION>/sriov_numvfs | 69 | /sys/bus/pci/devices/<DOMAIN:BUS:DEVICE.FUNCTION>/sriov_numvfs |
70 | 70 | ||
71 | To notify SR-IOV core of Virtual Function Migration: | ||
72 | (a) In the driver: | ||
73 | irqreturn_t pci_sriov_migration(struct pci_dev *dev); | ||
74 | |||
75 | 3.2 Usage example | 71 | 3.2 Usage example |
76 | 72 | ||
77 | Following piece of code illustrates the usage of the SR-IOV API. | 73 | Following piece of code illustrates the usage of the SR-IOV API. |
diff --git a/Documentation/RCU/RTFP.txt b/Documentation/RCU/RTFP.txt index 273e654d7d08..2f0fcb2112d2 100644 --- a/Documentation/RCU/RTFP.txt +++ b/Documentation/RCU/RTFP.txt | |||
@@ -31,6 +31,14 @@ has lapsed, so this approach may be used in non-GPL software, if desired. | |||
31 | (In contrast, implementation of RCU is permitted only in software licensed | 31 | (In contrast, implementation of RCU is permitted only in software licensed |
32 | under either GPL or LGPL. Sorry!!!) | 32 | under either GPL or LGPL. Sorry!!!) |
33 | 33 | ||
34 | In 1987, Rashid et al. described lazy TLB-flush [RichardRashid87a]. | ||
35 | At first glance, this has nothing to do with RCU, but nevertheless | ||
36 | this paper helped inspire the update-side batching used in the later | ||
37 | RCU implementation in DYNIX/ptx. In 1988, Barbara Liskov published | ||
38 | a description of Argus that noted that use of out-of-date values can | ||
39 | be tolerated in some situations. Thus, this paper provides some early | ||
40 | theoretical justification for use of stale data. | ||
41 | |||
34 | In 1990, Pugh [Pugh90] noted that explicitly tracking which threads | 42 | In 1990, Pugh [Pugh90] noted that explicitly tracking which threads |
35 | were reading a given data structure permitted deferred free to operate | 43 | were reading a given data structure permitted deferred free to operate |
36 | in the presence of non-terminating threads. However, this explicit | 44 | in the presence of non-terminating threads. However, this explicit |
@@ -41,11 +49,11 @@ providing a fine-grained locking design, however, it would be interesting | |||
41 | to see how much of the performance advantage reported in 1990 remains | 49 | to see how much of the performance advantage reported in 1990 remains |
42 | today. | 50 | today. |
43 | 51 | ||
44 | At about this same time, Adams [Adams91] described ``chaotic relaxation'', | 52 | At about this same time, Andrews [Andrews91textbook] described ``chaotic |
45 | where the normal barriers between successive iterations of convergent | 53 | relaxation'', where the normal barriers between successive iterations |
46 | numerical algorithms are relaxed, so that iteration $n$ might use | 54 | of convergent numerical algorithms are relaxed, so that iteration $n$ |
47 | data from iteration $n-1$ or even $n-2$. This introduces error, | 55 | might use data from iteration $n-1$ or even $n-2$. This introduces |
48 | which typically slows convergence and thus increases the number of | 56 | error, which typically slows convergence and thus increases the number of |
49 | iterations required. However, this increase is sometimes more than made | 57 | iterations required. However, this increase is sometimes more than made |
50 | up for by a reduction in the number of expensive barrier operations, | 58 | up for by a reduction in the number of expensive barrier operations, |
51 | which are otherwise required to synchronize the threads at the end | 59 | which are otherwise required to synchronize the threads at the end |
@@ -55,7 +63,8 @@ is thus inapplicable to most data structures in operating-system kernels. | |||
55 | 63 | ||
56 | In 1992, Henry (now Alexia) Massalin completed a dissertation advising | 64 | In 1992, Henry (now Alexia) Massalin completed a dissertation advising |
57 | parallel programmers to defer processing when feasible to simplify | 65 | parallel programmers to defer processing when feasible to simplify |
58 | synchronization. RCU makes extremely heavy use of this advice. | 66 | synchronization [HMassalinPhD]. RCU makes extremely heavy use of |
67 | this advice. | ||
59 | 68 | ||
60 | In 1993, Jacobson [Jacobson93] verbally described what is perhaps the | 69 | In 1993, Jacobson [Jacobson93] verbally described what is perhaps the |
61 | simplest deferred-free technique: simply waiting a fixed amount of time | 70 | simplest deferred-free technique: simply waiting a fixed amount of time |
@@ -90,27 +99,29 @@ mechanism, which is quite similar to RCU [Gamsa99]. These operating | |||
90 | systems made pervasive use of RCU in place of "existence locks", which | 99 | systems made pervasive use of RCU in place of "existence locks", which |
91 | greatly simplifies locking hierarchies and helps avoid deadlocks. | 100 | greatly simplifies locking hierarchies and helps avoid deadlocks. |
92 | 101 | ||
93 | 2001 saw the first RCU presentation involving Linux [McKenney01a] | 102 | The year 2000 saw an email exchange that would likely have |
94 | at OLS. The resulting abundance of RCU patches was presented the | 103 | led to yet another independent invention of something like RCU |
95 | following year [McKenney02a], and use of RCU in dcache was first | 104 | [RustyRussell2000a,RustyRussell2000b]. Instead, 2001 saw the first |
96 | described that same year [Linder02a]. | 105 | RCU presentation involving Linux [McKenney01a] at OLS. The resulting |
106 | abundance of RCU patches was presented the following year [McKenney02a], | ||
107 | and use of RCU in dcache was first described that same year [Linder02a]. | ||
97 | 108 | ||
98 | Also in 2002, Michael [Michael02b,Michael02a] presented "hazard-pointer" | 109 | Also in 2002, Michael [Michael02b,Michael02a] presented "hazard-pointer" |
99 | techniques that defer the destruction of data structures to simplify | 110 | techniques that defer the destruction of data structures to simplify |
100 | non-blocking synchronization (wait-free synchronization, lock-free | 111 | non-blocking synchronization (wait-free synchronization, lock-free |
101 | synchronization, and obstruction-free synchronization are all examples of | 112 | synchronization, and obstruction-free synchronization are all examples of |
102 | non-blocking synchronization). In particular, this technique eliminates | 113 | non-blocking synchronization). The corresponding journal article appeared |
103 | locking, reduces contention, reduces memory latency for readers, and | 114 | in 2004 [MagedMichael04a]. This technique eliminates locking, reduces |
104 | parallelizes pipeline stalls and memory latency for writers. However, | 115 | contention, reduces memory latency for readers, and parallelizes pipeline |
105 | these techniques still impose significant read-side overhead in the | 116 | stalls and memory latency for writers. However, these techniques still |
106 | form of memory barriers. Researchers at Sun worked along similar lines | 117 | impose significant read-side overhead in the form of memory barriers. |
107 | in the same timeframe [HerlihyLM02]. These techniques can be thought | 118 | Researchers at Sun worked along similar lines in the same timeframe |
108 | of as inside-out reference counts, where the count is represented by the | 119 | [HerlihyLM02]. These techniques can be thought of as inside-out reference |
109 | number of hazard pointers referencing a given data structure rather than | 120 | counts, where the count is represented by the number of hazard pointers |
110 | the more conventional counter field within the data structure itself. | 121 | referencing a given data structure rather than the more conventional |
111 | The key advantage of inside-out reference counts is that they can be | 122 | counter field within the data structure itself. The key advantage |
112 | stored in immortal variables, thus allowing races between access and | 123 | of inside-out reference counts is that they can be stored in immortal |
113 | deletion to be avoided. | 124 | variables, thus allowing races between access and deletion to be avoided. |
114 | 125 | ||
115 | By the same token, RCU can be thought of as a "bulk reference count", | 126 | By the same token, RCU can be thought of as a "bulk reference count", |
116 | where some form of reference counter covers all reference by a given CPU | 127 | where some form of reference counter covers all reference by a given CPU |
@@ -123,8 +134,10 @@ can be thought of in other terms as well. | |||
123 | 134 | ||
124 | In 2003, the K42 group described how RCU could be used to create | 135 | In 2003, the K42 group described how RCU could be used to create |
125 | hot-pluggable implementations of operating-system functions [Appavoo03a]. | 136 | hot-pluggable implementations of operating-system functions [Appavoo03a]. |
126 | Later that year saw a paper describing an RCU implementation of System | 137 | Later that year saw a paper describing an RCU implementation |
127 | V IPC [Arcangeli03], and an introduction to RCU in Linux Journal | 138 | of System V IPC [Arcangeli03] (following up on a suggestion by |
139 | Hugh Dickins [Dickins02a] and an implementation by Mingming Cao | ||
140 | [MingmingCao2002IPCRCU]), and an introduction to RCU in Linux Journal | ||
128 | [McKenney03a]. | 141 | [McKenney03a]. |
129 | 142 | ||
130 | 2004 has seen a Linux-Journal article on use of RCU in dcache | 143 | 2004 has seen a Linux-Journal article on use of RCU in dcache |
@@ -383,6 +396,21 @@ for Programming Languages and Operating Systems}" | |||
383 | } | 396 | } |
384 | } | 397 | } |
385 | 398 | ||
399 | @phdthesis{HMassalinPhD | ||
400 | ,author="H. Massalin" | ||
401 | ,title="Synthesis: An Efficient Implementation of Fundamental Operating | ||
402 | System Services" | ||
403 | ,school="Columbia University" | ||
404 | ,address="New York, NY" | ||
405 | ,year="1992" | ||
406 | ,annotation={ | ||
407 | Mondo optimizing compiler. | ||
408 | Wait-free stuff. | ||
409 | Good advice: defer work to avoid synchronization. See page 90 | ||
410 | (PDF page 106), Section 5.4, fourth bullet point. | ||
411 | } | ||
412 | } | ||
413 | |||
386 | @unpublished{Jacobson93 | 414 | @unpublished{Jacobson93 |
387 | ,author="Van Jacobson" | 415 | ,author="Van Jacobson" |
388 | ,title="Avoid Read-Side Locking Via Delayed Free" | 416 | ,title="Avoid Read-Side Locking Via Delayed Free" |
@@ -671,6 +699,20 @@ Orran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni" | |||
671 | [Viewed October 18, 2004]" | 699 | [Viewed October 18, 2004]" |
672 | } | 700 | } |
673 | 701 | ||
702 | @conference{Michael02b | ||
703 | ,author="Maged M. Michael" | ||
704 | ,title="High Performance Dynamic Lock-Free Hash Tables and List-Based Sets" | ||
705 | ,Year="2002" | ||
706 | ,Month="August" | ||
707 | ,booktitle="{Proceedings of the 14\textsuperscript{th} Annual ACM | ||
708 | Symposium on Parallel | ||
709 | Algorithms and Architecture}" | ||
710 | ,pages="73-82" | ||
711 | ,annotation={ | ||
712 | Like the title says... | ||
713 | } | ||
714 | } | ||
715 | |||
674 | @Conference{Linder02a | 716 | @Conference{Linder02a |
675 | ,Author="Hanna Linder and Dipankar Sarma and Maneesh Soni" | 717 | ,Author="Hanna Linder and Dipankar Sarma and Maneesh Soni" |
676 | ,Title="Scalability of the Directory Entry Cache" | 718 | ,Title="Scalability of the Directory Entry Cache" |
@@ -727,6 +769,24 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell" | |||
727 | } | 769 | } |
728 | } | 770 | } |
729 | 771 | ||
772 | @conference{Michael02a | ||
773 | ,author="Maged M. Michael" | ||
774 | ,title="Safe Memory Reclamation for Dynamic Lock-Free Objects Using Atomic | ||
775 | Reads and Writes" | ||
776 | ,Year="2002" | ||
777 | ,Month="August" | ||
778 | ,booktitle="{Proceedings of the 21\textsuperscript{st} Annual ACM | ||
779 | Symposium on Principles of Distributed Computing}" | ||
780 | ,pages="21-30" | ||
781 | ,annotation={ | ||
782 | Each thread keeps an array of pointers to items that it is | ||
783 | currently referencing. Sort of an inside-out garbage collection | ||
784 | mechanism, but one that requires the accessing code to explicitly | ||
785 | state its needs. Also requires read-side memory barriers on | ||
786 | most architectures. | ||
787 | } | ||
788 | } | ||
789 | |||
730 | @unpublished{Dickins02a | 790 | @unpublished{Dickins02a |
731 | ,author="Hugh Dickins" | 791 | ,author="Hugh Dickins" |
732 | ,title="Use RCU for System-V IPC" | 792 | ,title="Use RCU for System-V IPC" |
@@ -735,6 +795,17 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell" | |||
735 | ,note="private communication" | 795 | ,note="private communication" |
736 | } | 796 | } |
737 | 797 | ||
798 | @InProceedings{HerlihyLM02 | ||
799 | ,author={Maurice Herlihy and Victor Luchangco and Mark Moir} | ||
800 | ,title="The Repeat Offender Problem: A Mechanism for Supporting Dynamic-Sized, | ||
801 | Lock-Free Data Structures" | ||
802 | ,booktitle={Proceedings of 16\textsuperscript{th} International | ||
803 | Symposium on Distributed Computing} | ||
804 | ,year=2002 | ||
805 | ,month="October" | ||
806 | ,pages="339-353" | ||
807 | } | ||
808 | |||
738 | @unpublished{Sarma02b | 809 | @unpublished{Sarma02b |
739 | ,Author="Dipankar Sarma" | 810 | ,Author="Dipankar Sarma" |
740 | ,Title="Some dcache\_rcu benchmark numbers" | 811 | ,Title="Some dcache\_rcu benchmark numbers" |
@@ -749,6 +820,19 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell" | |||
749 | } | 820 | } |
750 | } | 821 | } |
751 | 822 | ||
823 | @unpublished{MingmingCao2002IPCRCU | ||
824 | ,Author="Mingming Cao" | ||
825 | ,Title="[PATCH]updated ipc lock patch" | ||
826 | ,month="October" | ||
827 | ,year="2002" | ||
828 | ,note="Available: | ||
829 | \url{https://lkml.org/lkml/2002/10/24/262} | ||
830 | [Viewed February 15, 2014]" | ||
831 | ,annotation={ | ||
832 | Mingming Cao's patch to introduce RCU to SysV IPC. | ||
833 | } | ||
834 | } | ||
835 | |||
752 | @unpublished{LinusTorvalds2003a | 836 | @unpublished{LinusTorvalds2003a |
753 | ,Author="Linus Torvalds" | 837 | ,Author="Linus Torvalds" |
754 | ,Title="Re: {[PATCH]} small fixes in brlock.h" | 838 | ,Title="Re: {[PATCH]} small fixes in brlock.h" |
@@ -982,6 +1066,23 @@ Realtime Applications" | |||
982 | } | 1066 | } |
983 | } | 1067 | } |
984 | 1068 | ||
1069 | @article{MagedMichael04a | ||
1070 | ,author="Maged M. Michael" | ||
1071 | ,title="Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects" | ||
1072 | ,Year="2004" | ||
1073 | ,Month="June" | ||
1074 | ,journal="IEEE Transactions on Parallel and Distributed Systems" | ||
1075 | ,volume="15" | ||
1076 | ,number="6" | ||
1077 | ,pages="491-504" | ||
1078 | ,url="Available: | ||
1079 | \url{http://www.research.ibm.com/people/m/michael/ieeetpds-2004.pdf} | ||
1080 | [Viewed March 1, 2005]" | ||
1081 | ,annotation={ | ||
1082 | New canonical hazard-pointer citation. | ||
1083 | } | ||
1084 | } | ||
1085 | |||
985 | @phdthesis{PaulEdwardMcKenneyPhD | 1086 | @phdthesis{PaulEdwardMcKenneyPhD |
986 | ,author="Paul E. McKenney" | 1087 | ,author="Paul E. McKenney" |
987 | ,title="Exploiting Deferred Destruction: | 1088 | ,title="Exploiting Deferred Destruction: |
diff --git a/Documentation/RCU/checklist.txt b/Documentation/RCU/checklist.txt index 91266193b8f4..9d10d1db16a5 100644 --- a/Documentation/RCU/checklist.txt +++ b/Documentation/RCU/checklist.txt | |||
@@ -256,10 +256,10 @@ over a rather long period of time, but improvements are always welcome! | |||
256 | variations on this theme. | 256 | variations on this theme. |
257 | 257 | ||
258 | b. Limiting update rate. For example, if updates occur only | 258 | b. Limiting update rate. For example, if updates occur only |
259 | once per hour, then no explicit rate limiting is required, | 259 | once per hour, then no explicit rate limiting is |
260 | unless your system is already badly broken. The dcache | 260 | required, unless your system is already badly broken. |
261 | subsystem takes this approach -- updates are guarded | 261 | Older versions of the dcache subsystem take this approach, |
262 | by a global lock, limiting their rate. | 262 | guarding updates with a global lock, limiting their rate. |
263 | 263 | ||
264 | c. Trusted update -- if updates can only be done manually by | 264 | c. Trusted update -- if updates can only be done manually by |
265 | superuser or some other trusted user, then it might not | 265 | superuser or some other trusted user, then it might not |
@@ -268,7 +268,8 @@ over a rather long period of time, but improvements are always welcome! | |||
268 | the machine. | 268 | the machine. |
269 | 269 | ||
270 | d. Use call_rcu_bh() rather than call_rcu(), in order to take | 270 | d. Use call_rcu_bh() rather than call_rcu(), in order to take |
271 | advantage of call_rcu_bh()'s faster grace periods. | 271 | advantage of call_rcu_bh()'s faster grace periods. (This |
272 | is only a partial solution, though.) | ||
272 | 273 | ||
273 | e. Periodically invoke synchronize_rcu(), permitting a limited | 274 | e. Periodically invoke synchronize_rcu(), permitting a limited |
274 | number of updates per grace period. | 275 | number of updates per grace period. |
@@ -276,6 +277,13 @@ over a rather long period of time, but improvements are always welcome! | |||
276 | The same cautions apply to call_rcu_bh(), call_rcu_sched(), | 277 | The same cautions apply to call_rcu_bh(), call_rcu_sched(), |
277 | call_srcu(), and kfree_rcu(). | 278 | call_srcu(), and kfree_rcu(). |
278 | 279 | ||
280 | Note that although these primitives do take action to avoid memory | ||
281 | exhaustion when any given CPU has too many callbacks, a determined | ||
282 | user could still exhaust memory. This is especially the case | ||
283 | if a system with a large number of CPUs has been configured to | ||
284 | offload all of its RCU callbacks onto a single CPU, or if the | ||
285 | system has relatively little free memory. | ||
286 | |||
279 | 9. All RCU list-traversal primitives, which include | 287 | 9. All RCU list-traversal primitives, which include |
280 | rcu_dereference(), list_for_each_entry_rcu(), and | 288 | rcu_dereference(), list_for_each_entry_rcu(), and |
281 | list_for_each_safe_rcu(), must be either within an RCU read-side | 289 | list_for_each_safe_rcu(), must be either within an RCU read-side |
diff --git a/Documentation/arm64/memory.txt b/Documentation/arm64/memory.txt index 5e054bfe4dde..85e24c4f215c 100644 --- a/Documentation/arm64/memory.txt +++ b/Documentation/arm64/memory.txt | |||
@@ -35,11 +35,13 @@ ffffffbc00000000 ffffffbdffffffff 8GB vmemmap | |||
35 | 35 | ||
36 | ffffffbe00000000 ffffffbffbbfffff ~8GB [guard, future vmmemap] | 36 | ffffffbe00000000 ffffffbffbbfffff ~8GB [guard, future vmmemap] |
37 | 37 | ||
38 | ffffffbffbc00000 ffffffbffbdfffff 2MB earlyprintk device | 38 | ffffffbffa000000 ffffffbffaffffff 16MB PCI I/O space |
39 | |||
40 | ffffffbffb000000 ffffffbffbbfffff 12MB [guard] | ||
39 | 41 | ||
40 | ffffffbffbe00000 ffffffbffbe0ffff 64KB PCI I/O space | 42 | ffffffbffbc00000 ffffffbffbdfffff 2MB earlyprintk device |
41 | 43 | ||
42 | ffffffbffbe10000 ffffffbcffffffff ~2MB [guard] | 44 | ffffffbffbe00000 ffffffbffbffffff 2MB [guard] |
43 | 45 | ||
44 | ffffffbffc000000 ffffffbfffffffff 64MB modules | 46 | ffffffbffc000000 ffffffbfffffffff 64MB modules |
45 | 47 | ||
@@ -60,11 +62,13 @@ fffffdfc00000000 fffffdfdffffffff 8GB vmemmap | |||
60 | 62 | ||
61 | fffffdfe00000000 fffffdfffbbfffff ~8GB [guard, future vmmemap] | 63 | fffffdfe00000000 fffffdfffbbfffff ~8GB [guard, future vmmemap] |
62 | 64 | ||
63 | fffffdfffbc00000 fffffdfffbdfffff 2MB earlyprintk device | 65 | fffffdfffa000000 fffffdfffaffffff 16MB PCI I/O space |
66 | |||
67 | fffffdfffb000000 fffffdfffbbfffff 12MB [guard] | ||
64 | 68 | ||
65 | fffffdfffbe00000 fffffdfffbe0ffff 64KB PCI I/O space | 69 | fffffdfffbc00000 fffffdfffbdfffff 2MB earlyprintk device |
66 | 70 | ||
67 | fffffdfffbe10000 fffffdfffbffffff ~2MB [guard] | 71 | fffffdfffbe00000 fffffdfffbffffff 2MB [guard] |
68 | 72 | ||
69 | fffffdfffc000000 fffffdffffffffff 64MB modules | 73 | fffffdfffc000000 fffffdffffffffff 64MB modules |
70 | 74 | ||
diff --git a/Documentation/blockdev/drbd/data-structure-v9.txt b/Documentation/blockdev/drbd/data-structure-v9.txt new file mode 100644 index 000000000000..1e52a0e32624 --- /dev/null +++ b/Documentation/blockdev/drbd/data-structure-v9.txt | |||
@@ -0,0 +1,38 @@ | |||
1 | This describes the in kernel data structure for DRBD-9. Starting with | ||
2 | Linux v3.14 we are reorganizing DRBD to use this data structure. | ||
3 | |||
4 | Basic Data Structure | ||
5 | ==================== | ||
6 | |||
7 | A node has a number of DRBD resources. Each such resource has a number of | ||
8 | devices (aka volumes) and connections to other nodes ("peer nodes"). Each DRBD | ||
9 | device is represented by a block device locally. | ||
10 | |||
11 | The DRBD objects are interconnected to form a matrix as depicted below; a | ||
12 | drbd_peer_device object sits at each intersection between a drbd_device and a | ||
13 | drbd_connection: | ||
14 | |||
15 | /--------------+---------------+.....+---------------\ | ||
16 | | resource | device | | device | | ||
17 | +--------------+---------------+.....+---------------+ | ||
18 | | connection | peer_device | | peer_device | | ||
19 | +--------------+---------------+.....+---------------+ | ||
20 | : : : : : | ||
21 | : : : : : | ||
22 | +--------------+---------------+.....+---------------+ | ||
23 | | connection | peer_device | | peer_device | | ||
24 | \--------------+---------------+.....+---------------/ | ||
25 | |||
26 | In this table, horizontally, devices can be accessed from resources by their | ||
27 | volume number. Likewise, peer_devices can be accessed from connections by | ||
28 | their volume number. Objects in the vertical direction are connected by double | ||
29 | linked lists. There are back pointers from peer_devices to their connections a | ||
30 | devices, and from connections and devices to their resource. | ||
31 | |||
32 | All resources are in the drbd_resources double-linked list. In addition, all | ||
33 | devices can be accessed by their minor device number via the drbd_devices idr. | ||
34 | |||
35 | The drbd_resource, drbd_connection, and drbd_device objects are reference | ||
36 | counted. The peer_device objects only serve to establish the links between | ||
37 | devices and connections; their lifetime is determined by the lifetime of the | ||
38 | device and connection which they reference. | ||
diff --git a/Documentation/connector/cn_test.c b/Documentation/connector/cn_test.c index adcca0368d60..d12cc944b696 100644 --- a/Documentation/connector/cn_test.c +++ b/Documentation/connector/cn_test.c | |||
@@ -145,7 +145,7 @@ static void cn_test_timer_func(unsigned long __data) | |||
145 | 145 | ||
146 | memcpy(m + 1, data, m->len); | 146 | memcpy(m + 1, data, m->len); |
147 | 147 | ||
148 | cn_netlink_send(m, 0, GFP_ATOMIC); | 148 | cn_netlink_send(m, 0, 0, GFP_ATOMIC); |
149 | kfree(m); | 149 | kfree(m); |
150 | } | 150 | } |
151 | 151 | ||
diff --git a/Documentation/cpu-freq/core.txt b/Documentation/cpu-freq/core.txt index ce0666e51036..0060d76b445f 100644 --- a/Documentation/cpu-freq/core.txt +++ b/Documentation/cpu-freq/core.txt | |||
@@ -92,7 +92,3 @@ values: | |||
92 | cpu - number of the affected CPU | 92 | cpu - number of the affected CPU |
93 | old - old frequency | 93 | old - old frequency |
94 | new - new frequency | 94 | new - new frequency |
95 | |||
96 | If the cpufreq core detects the frequency has changed while the system | ||
97 | was suspended, these notifiers are called with CPUFREQ_RESUMECHANGE as | ||
98 | second argument. | ||
diff --git a/Documentation/cpu-freq/cpu-drivers.txt b/Documentation/cpu-freq/cpu-drivers.txt index 8b1a4451422e..48da5fdcb9f1 100644 --- a/Documentation/cpu-freq/cpu-drivers.txt +++ b/Documentation/cpu-freq/cpu-drivers.txt | |||
@@ -61,7 +61,13 @@ target_index - See below on the differences. | |||
61 | 61 | ||
62 | And optionally | 62 | And optionally |
63 | 63 | ||
64 | cpufreq_driver.exit - A pointer to a per-CPU cleanup function. | 64 | cpufreq_driver.exit - A pointer to a per-CPU cleanup |
65 | function called during CPU_POST_DEAD | ||
66 | phase of cpu hotplug process. | ||
67 | |||
68 | cpufreq_driver.stop_cpu - A pointer to a per-CPU stop function | ||
69 | called during CPU_DOWN_PREPARE phase of | ||
70 | cpu hotplug process. | ||
65 | 71 | ||
66 | cpufreq_driver.resume - A pointer to a per-CPU resume function | 72 | cpufreq_driver.resume - A pointer to a per-CPU resume function |
67 | which is called with interrupts disabled | 73 | which is called with interrupts disabled |
diff --git a/Documentation/device-mapper/cache.txt b/Documentation/device-mapper/cache.txt index e6b72d355151..68c0f517c60e 100644 --- a/Documentation/device-mapper/cache.txt +++ b/Documentation/device-mapper/cache.txt | |||
@@ -124,12 +124,11 @@ the default being 204800 sectors (or 100MB). | |||
124 | Updating on-disk metadata | 124 | Updating on-disk metadata |
125 | ------------------------- | 125 | ------------------------- |
126 | 126 | ||
127 | On-disk metadata is committed every time a REQ_SYNC or REQ_FUA bio is | 127 | On-disk metadata is committed every time a FLUSH or FUA bio is written. |
128 | written. If no such requests are made then commits will occur every | 128 | If no such requests are made then commits will occur every second. This |
129 | second. This means the cache behaves like a physical disk that has a | 129 | means the cache behaves like a physical disk that has a volatile write |
130 | write cache (the same is true of the thin-provisioning target). If | 130 | cache. If power is lost you may lose some recent writes. The metadata |
131 | power is lost you may lose some recent writes. The metadata should | 131 | should always be consistent in spite of any crash. |
132 | always be consistent in spite of any crash. | ||
133 | 132 | ||
134 | The 'dirty' state for a cache block changes far too frequently for us | 133 | The 'dirty' state for a cache block changes far too frequently for us |
135 | to keep updating it on the fly. So we treat it as a hint. In normal | 134 | to keep updating it on the fly. So we treat it as a hint. In normal |
diff --git a/Documentation/device-mapper/thin-provisioning.txt b/Documentation/device-mapper/thin-provisioning.txt index 8a7a3d46e0da..05a27e9442bd 100644 --- a/Documentation/device-mapper/thin-provisioning.txt +++ b/Documentation/device-mapper/thin-provisioning.txt | |||
@@ -116,6 +116,35 @@ Resuming a device with a new table itself triggers an event so the | |||
116 | userspace daemon can use this to detect a situation where a new table | 116 | userspace daemon can use this to detect a situation where a new table |
117 | already exceeds the threshold. | 117 | already exceeds the threshold. |
118 | 118 | ||
119 | A low water mark for the metadata device is maintained in the kernel and | ||
120 | will trigger a dm event if free space on the metadata device drops below | ||
121 | it. | ||
122 | |||
123 | Updating on-disk metadata | ||
124 | ------------------------- | ||
125 | |||
126 | On-disk metadata is committed every time a FLUSH or FUA bio is written. | ||
127 | If no such requests are made then commits will occur every second. This | ||
128 | means the thin-provisioning target behaves like a physical disk that has | ||
129 | a volatile write cache. If power is lost you may lose some recent | ||
130 | writes. The metadata should always be consistent in spite of any crash. | ||
131 | |||
132 | If data space is exhausted the pool will either error or queue IO | ||
133 | according to the configuration (see: error_if_no_space). If metadata | ||
134 | space is exhausted or a metadata operation fails: the pool will error IO | ||
135 | until the pool is taken offline and repair is performed to 1) fix any | ||
136 | potential inconsistencies and 2) clear the flag that imposes repair. | ||
137 | Once the pool's metadata device is repaired it may be resized, which | ||
138 | will allow the pool to return to normal operation. Note that if a pool | ||
139 | is flagged as needing repair, the pool's data and metadata devices | ||
140 | cannot be resized until repair is performed. It should also be noted | ||
141 | that when the pool's metadata space is exhausted the current metadata | ||
142 | transaction is aborted. Given that the pool will cache IO whose | ||
143 | completion may have already been acknowledged to upper IO layers | ||
144 | (e.g. filesystem) it is strongly suggested that consistency checks | ||
145 | (e.g. fsck) be performed on those layers when repair of the pool is | ||
146 | required. | ||
147 | |||
119 | Thin provisioning | 148 | Thin provisioning |
120 | ----------------- | 149 | ----------------- |
121 | 150 | ||
@@ -258,10 +287,9 @@ ii) Status | |||
258 | should register for the event and then check the target's status. | 287 | should register for the event and then check the target's status. |
259 | 288 | ||
260 | held metadata root: | 289 | held metadata root: |
261 | The location, in sectors, of the metadata root that has been | 290 | The location, in blocks, of the metadata root that has been |
262 | 'held' for userspace read access. '-' indicates there is no | 291 | 'held' for userspace read access. '-' indicates there is no |
263 | held root. This feature is not yet implemented so '-' is | 292 | held root. |
264 | always returned. | ||
265 | 293 | ||
266 | discard_passdown|no_discard_passdown | 294 | discard_passdown|no_discard_passdown |
267 | Whether or not discards are actually being passed down to the | 295 | Whether or not discards are actually being passed down to the |
diff --git a/Documentation/devices.txt b/Documentation/devices.txt index 10378cc48374..087d2122b204 100644 --- a/Documentation/devices.txt +++ b/Documentation/devices.txt | |||
@@ -410,6 +410,7 @@ Your cooperation is appreciated. | |||
410 | 194 = /dev/zkshim Zero-Knowledge network shim control | 410 | 194 = /dev/zkshim Zero-Knowledge network shim control |
411 | 195 = /dev/elographics/e2201 Elographics touchscreen E271-2201 | 411 | 195 = /dev/elographics/e2201 Elographics touchscreen E271-2201 |
412 | 196 = /dev/vfio/vfio VFIO userspace driver interface | 412 | 196 = /dev/vfio/vfio VFIO userspace driver interface |
413 | 197 = /dev/pxa3xx-gcu PXA3xx graphics controller unit driver | ||
413 | 198 = /dev/sexec Signed executable interface | 414 | 198 = /dev/sexec Signed executable interface |
414 | 199 = /dev/scanners/cuecat :CueCat barcode scanner | 415 | 199 = /dev/scanners/cuecat :CueCat barcode scanner |
415 | 200 = /dev/net/tun TAP/TUN network device | 416 | 200 = /dev/net/tun TAP/TUN network device |
@@ -451,6 +452,7 @@ Your cooperation is appreciated. | |||
451 | 236 = /dev/mapper/control Device-Mapper control device | 452 | 236 = /dev/mapper/control Device-Mapper control device |
452 | 237 = /dev/loop-control Loopback control device | 453 | 237 = /dev/loop-control Loopback control device |
453 | 238 = /dev/vhost-net Host kernel accelerator for virtio net | 454 | 238 = /dev/vhost-net Host kernel accelerator for virtio net |
455 | 239 = /dev/uhid User-space I/O driver support for HID subsystem | ||
454 | 456 | ||
455 | 240-254 Reserved for local use | 457 | 240-254 Reserved for local use |
456 | 255 Reserved for MISC_DYNAMIC_MINOR | 458 | 255 Reserved for MISC_DYNAMIC_MINOR |
diff --git a/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt b/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt index d74091a8a3bf..5fc03134a999 100644 --- a/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt +++ b/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt | |||
@@ -1,4 +1,4 @@ | |||
1 | Marvell Armada 370 and Armada XP Interrupt Controller | 1 | Marvell Armada 370, 375, 38x, XP Interrupt Controller |
2 | ----------------------------------------------------- | 2 | ----------------------------------------------------- |
3 | 3 | ||
4 | Required properties: | 4 | Required properties: |
@@ -16,7 +16,13 @@ Required properties: | |||
16 | automatically map to the interrupt controller registers of the | 16 | automatically map to the interrupt controller registers of the |
17 | current CPU) | 17 | current CPU) |
18 | 18 | ||
19 | Optional properties: | ||
19 | 20 | ||
21 | - interrupts: If defined, then it indicates that this MPIC is | ||
22 | connected as a slave to another interrupt controller. This is | ||
23 | typically the case on Armada 375 and Armada 38x, where the MPIC is | ||
24 | connected as a slave to the Cortex-A9 GIC. The provided interrupt | ||
25 | indicate to which GIC interrupt the MPIC output is connected. | ||
20 | 26 | ||
21 | Example: | 27 | Example: |
22 | 28 | ||
diff --git a/Documentation/devicetree/bindings/arm/atmel-adc.txt b/Documentation/devicetree/bindings/arm/atmel-adc.txt index d1061469f63d..9a1175b46f49 100644 --- a/Documentation/devicetree/bindings/arm/atmel-adc.txt +++ b/Documentation/devicetree/bindings/arm/atmel-adc.txt | |||
@@ -5,6 +5,9 @@ Required properties: | |||
5 | <chip> can be "at91sam9260", "at91sam9g45" or "at91sam9x5" | 5 | <chip> can be "at91sam9260", "at91sam9g45" or "at91sam9x5" |
6 | - reg: Should contain ADC registers location and length | 6 | - reg: Should contain ADC registers location and length |
7 | - interrupts: Should contain the IRQ line for the ADC | 7 | - interrupts: Should contain the IRQ line for the ADC |
8 | - clock-names: tuple listing input clock names. | ||
9 | Required elements: "adc_clk", "adc_op_clk". | ||
10 | - clocks: phandles to input clocks. | ||
8 | - atmel,adc-channels-used: Bitmask of the channels muxed and enable for this | 11 | - atmel,adc-channels-used: Bitmask of the channels muxed and enable for this |
9 | device | 12 | device |
10 | - atmel,adc-startup-time: Startup Time of the ADC in microseconds as | 13 | - atmel,adc-startup-time: Startup Time of the ADC in microseconds as |
@@ -44,6 +47,8 @@ adc0: adc@fffb0000 { | |||
44 | compatible = "atmel,at91sam9260-adc"; | 47 | compatible = "atmel,at91sam9260-adc"; |
45 | reg = <0xfffb0000 0x100>; | 48 | reg = <0xfffb0000 0x100>; |
46 | interrupts = <20 4>; | 49 | interrupts = <20 4>; |
50 | clocks = <&adc_clk>, <&adc_op_clk>; | ||
51 | clock-names = "adc_clk", "adc_op_clk"; | ||
47 | atmel,adc-channel-base = <0x30>; | 52 | atmel,adc-channel-base = <0x30>; |
48 | atmel,adc-channels-used = <0xff>; | 53 | atmel,adc-channels-used = <0xff>; |
49 | atmel,adc-drdy-mask = <0x10000>; | 54 | atmel,adc-drdy-mask = <0x10000>; |
diff --git a/Documentation/devicetree/bindings/arm/marvell,dove.txt b/Documentation/devicetree/bindings/arm/marvell,dove.txt new file mode 100644 index 000000000000..aaaf64c56e44 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/marvell,dove.txt | |||
@@ -0,0 +1,22 @@ | |||
1 | Marvell Dove Platforms Device Tree Bindings | ||
2 | ----------------------------------------------- | ||
3 | |||
4 | Boards with a Marvell Dove SoC shall have the following properties: | ||
5 | |||
6 | Required root node property: | ||
7 | - compatible: must contain "marvell,dove"; | ||
8 | |||
9 | * Global Configuration registers | ||
10 | |||
11 | Global Configuration registers of Dove SoC are shared by a syscon node. | ||
12 | |||
13 | Required properties: | ||
14 | - compatible: must contain "marvell,dove-global-config" and "syscon". | ||
15 | - reg: base address and size of the Global Configuration registers. | ||
16 | |||
17 | Example: | ||
18 | |||
19 | gconf: global-config@e802c { | ||
20 | compatible = "marvell,dove-global-config", "syscon"; | ||
21 | reg = <0xe802c 0x14>; | ||
22 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/omap/omap.txt b/Documentation/devicetree/bindings/arm/omap/omap.txt index 34dc40cffdfd..af9b4a0d902b 100644 --- a/Documentation/devicetree/bindings/arm/omap/omap.txt +++ b/Documentation/devicetree/bindings/arm/omap/omap.txt | |||
@@ -91,7 +91,7 @@ Boards: | |||
91 | compatible = "ti,omap3-beagle", "ti,omap3" | 91 | compatible = "ti,omap3-beagle", "ti,omap3" |
92 | 92 | ||
93 | - OMAP3 Tobi with Overo : Commercial expansion board with daughter board | 93 | - OMAP3 Tobi with Overo : Commercial expansion board with daughter board |
94 | compatible = "ti,omap3-tobi", "ti,omap3-overo", "ti,omap3" | 94 | compatible = "gumstix,omap3-overo-tobi", "gumstix,omap3-overo", "ti,omap3" |
95 | 95 | ||
96 | - OMAP4 SDP : Software Development Board | 96 | - OMAP4 SDP : Software Development Board |
97 | compatible = "ti,omap4-sdp", "ti,omap4430" | 97 | compatible = "ti,omap4-sdp", "ti,omap4430" |
diff --git a/Documentation/devicetree/bindings/ata/ahci-platform.txt b/Documentation/devicetree/bindings/ata/ahci-platform.txt index 89de1564950c..48b285ffa3a6 100644 --- a/Documentation/devicetree/bindings/ata/ahci-platform.txt +++ b/Documentation/devicetree/bindings/ata/ahci-platform.txt | |||
@@ -4,17 +4,33 @@ SATA nodes are defined to describe on-chip Serial ATA controllers. | |||
4 | Each SATA controller should have its own node. | 4 | Each SATA controller should have its own node. |
5 | 5 | ||
6 | Required properties: | 6 | Required properties: |
7 | - compatible : compatible list, contains "snps,spear-ahci" | 7 | - compatible : compatible list, one of "snps,spear-ahci", |
8 | "snps,exynos5440-ahci", "ibm,476gtr-ahci", | ||
9 | "allwinner,sun4i-a10-ahci", "fsl,imx53-ahci" | ||
10 | "fsl,imx6q-ahci" or "snps,dwc-ahci" | ||
8 | - interrupts : <interrupt mapping for SATA IRQ> | 11 | - interrupts : <interrupt mapping for SATA IRQ> |
9 | - reg : <registers mapping> | 12 | - reg : <registers mapping> |
10 | 13 | ||
11 | Optional properties: | 14 | Optional properties: |
12 | - dma-coherent : Present if dma operations are coherent | 15 | - dma-coherent : Present if dma operations are coherent |
16 | - clocks : a list of phandle + clock specifier pairs | ||
17 | - target-supply : regulator for SATA target power | ||
13 | 18 | ||
14 | Example: | 19 | "fsl,imx53-ahci", "fsl,imx6q-ahci" required properties: |
20 | - clocks : must contain the sata, sata_ref and ahb clocks | ||
21 | - clock-names : must contain "ahb" for the ahb clock | ||
22 | |||
23 | Examples: | ||
15 | sata@ffe08000 { | 24 | sata@ffe08000 { |
16 | compatible = "snps,spear-ahci"; | 25 | compatible = "snps,spear-ahci"; |
17 | reg = <0xffe08000 0x1000>; | 26 | reg = <0xffe08000 0x1000>; |
18 | interrupts = <115>; | 27 | interrupts = <115>; |
19 | |||
20 | }; | 28 | }; |
29 | |||
30 | ahci: sata@01c18000 { | ||
31 | compatible = "allwinner,sun4i-a10-ahci"; | ||
32 | reg = <0x01c18000 0x1000>; | ||
33 | interrupts = <56>; | ||
34 | clocks = <&pll6 0>, <&ahb_gates 25>; | ||
35 | target-supply = <®_ahci_5v>; | ||
36 | }; | ||
diff --git a/Documentation/devicetree/bindings/ata/apm-xgene.txt b/Documentation/devicetree/bindings/ata/apm-xgene.txt new file mode 100644 index 000000000000..7bcfbf59810e --- /dev/null +++ b/Documentation/devicetree/bindings/ata/apm-xgene.txt | |||
@@ -0,0 +1,76 @@ | |||
1 | * APM X-Gene 6.0 Gb/s SATA host controller nodes | ||
2 | |||
3 | SATA host controller nodes are defined to describe on-chip Serial ATA | ||
4 | controllers. Each SATA controller (pair of ports) have its own node. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible : Shall contain: | ||
8 | * "apm,xgene-ahci" | ||
9 | - reg : First memory resource shall be the AHCI memory | ||
10 | resource. | ||
11 | Second memory resource shall be the host controller | ||
12 | core memory resource. | ||
13 | Third memory resource shall be the host controller | ||
14 | diagnostic memory resource. | ||
15 | 4th memory resource shall be the host controller | ||
16 | AXI memory resource. | ||
17 | 5th optional memory resource shall be the host | ||
18 | controller MUX memory resource if required. | ||
19 | - interrupts : Interrupt-specifier for SATA host controller IRQ. | ||
20 | - clocks : Reference to the clock entry. | ||
21 | - phys : A list of phandles + phy-specifiers, one for each | ||
22 | entry in phy-names. | ||
23 | - phy-names : Should contain: | ||
24 | * "sata-phy" for the SATA 6.0Gbps PHY | ||
25 | |||
26 | Optional properties: | ||
27 | - status : Shall be "ok" if enabled or "disabled" if disabled. | ||
28 | Default is "ok". | ||
29 | |||
30 | Example: | ||
31 | sataclk: sataclk { | ||
32 | compatible = "fixed-clock"; | ||
33 | #clock-cells = <1>; | ||
34 | clock-frequency = <100000000>; | ||
35 | clock-output-names = "sataclk"; | ||
36 | }; | ||
37 | |||
38 | phy2: phy@1f22a000 { | ||
39 | compatible = "apm,xgene-phy"; | ||
40 | reg = <0x0 0x1f22a000 0x0 0x100>; | ||
41 | #phy-cells = <1>; | ||
42 | }; | ||
43 | |||
44 | phy3: phy@1f23a000 { | ||
45 | compatible = "apm,xgene-phy"; | ||
46 | reg = <0x0 0x1f23a000 0x0 0x100>; | ||
47 | #phy-cells = <1>; | ||
48 | }; | ||
49 | |||
50 | sata2: sata@1a400000 { | ||
51 | compatible = "apm,xgene-ahci"; | ||
52 | reg = <0x0 0x1a400000 0x0 0x1000>, | ||
53 | <0x0 0x1f220000 0x0 0x1000>, | ||
54 | <0x0 0x1f22d000 0x0 0x1000>, | ||
55 | <0x0 0x1f22e000 0x0 0x1000>, | ||
56 | <0x0 0x1f227000 0x0 0x1000>; | ||
57 | interrupts = <0x0 0x87 0x4>; | ||
58 | status = "ok"; | ||
59 | clocks = <&sataclk 0>; | ||
60 | phys = <&phy2 0>; | ||
61 | phy-names = "sata-phy"; | ||
62 | }; | ||
63 | |||
64 | sata3: sata@1a800000 { | ||
65 | compatible = "apm,xgene-ahci-pcie"; | ||
66 | reg = <0x0 0x1a800000 0x0 0x1000>, | ||
67 | <0x0 0x1f230000 0x0 0x1000>, | ||
68 | <0x0 0x1f23d000 0x0 0x1000>, | ||
69 | <0x0 0x1f23e000 0x0 0x1000>, | ||
70 | <0x0 0x1f237000 0x0 0x1000>; | ||
71 | interrupts = <0x0 0x88 0x4>; | ||
72 | status = "ok"; | ||
73 | clocks = <&sataclk 0>; | ||
74 | phys = <&phy3 0>; | ||
75 | phy-names = "sata-phy"; | ||
76 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt index a6a352c2771e..5992dceec7af 100644 --- a/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt +++ b/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt | |||
@@ -21,9 +21,9 @@ Required Properties: | |||
21 | must appear in the same order as the output clocks. | 21 | must appear in the same order as the output clocks. |
22 | - #clock-cells: Must be 1 | 22 | - #clock-cells: Must be 1 |
23 | - clock-output-names: The name of the clocks as free-form strings | 23 | - clock-output-names: The name of the clocks as free-form strings |
24 | - renesas,indices: Indices of the gate clocks into the group (0 to 31) | 24 | - renesas,clock-indices: Indices of the gate clocks into the group (0 to 31) |
25 | 25 | ||
26 | The clocks, clock-output-names and renesas,indices properties contain one | 26 | The clocks, clock-output-names and renesas,clock-indices properties contain one |
27 | entry per gate clock. The MSTP groups are sparsely populated. Unimplemented | 27 | entry per gate clock. The MSTP groups are sparsely populated. Unimplemented |
28 | gate clocks must not be declared. | 28 | gate clocks must not be declared. |
29 | 29 | ||
diff --git a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt index 68b83ecc3850..ee9be9961524 100644 --- a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt +++ b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt | |||
@@ -1,12 +1,16 @@ | |||
1 | * Freescale Smart Direct Memory Access (SDMA) Controller for i.MX | 1 | * Freescale Smart Direct Memory Access (SDMA) Controller for i.MX |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : Should be "fsl,imx31-sdma", "fsl,imx31-to1-sdma", | 4 | - compatible : Should be one of |
5 | "fsl,imx31-to2-sdma", "fsl,imx35-sdma", "fsl,imx35-to1-sdma", | 5 | "fsl,imx25-sdma" |
6 | "fsl,imx35-to2-sdma", "fsl,imx51-sdma", "fsl,imx53-sdma" or | 6 | "fsl,imx31-sdma", "fsl,imx31-to1-sdma", "fsl,imx31-to2-sdma" |
7 | "fsl,imx6q-sdma". The -to variants should be preferred since they | 7 | "fsl,imx35-sdma", "fsl,imx35-to1-sdma", "fsl,imx35-to2-sdma" |
8 | allow to determnine the correct ROM script addresses needed for | 8 | "fsl,imx51-sdma" |
9 | the driver to work without additional firmware. | 9 | "fsl,imx53-sdma" |
10 | "fsl,imx6q-sdma" | ||
11 | The -to variants should be preferred since they allow to determnine the | ||
12 | correct ROM script addresses needed for the driver to work without additional | ||
13 | firmware. | ||
10 | - reg : Should contain SDMA registers location and length | 14 | - reg : Should contain SDMA registers location and length |
11 | - interrupts : Should contain SDMA interrupt | 15 | - interrupts : Should contain SDMA interrupt |
12 | - #dma-cells : Must be <3>. | 16 | - #dma-cells : Must be <3>. |
diff --git a/Documentation/devicetree/bindings/graph.txt b/Documentation/devicetree/bindings/graph.txt new file mode 100644 index 000000000000..1a69c078adf2 --- /dev/null +++ b/Documentation/devicetree/bindings/graph.txt | |||
@@ -0,0 +1,129 @@ | |||
1 | Common bindings for device graphs | ||
2 | |||
3 | General concept | ||
4 | --------------- | ||
5 | |||
6 | The hierarchical organisation of the device tree is well suited to describe | ||
7 | control flow to devices, but there can be more complex connections between | ||
8 | devices that work together to form a logical compound device, following an | ||
9 | arbitrarily complex graph. | ||
10 | There already is a simple directed graph between devices tree nodes using | ||
11 | phandle properties pointing to other nodes to describe connections that | ||
12 | can not be inferred from device tree parent-child relationships. The device | ||
13 | tree graph bindings described herein abstract more complex devices that can | ||
14 | have multiple specifiable ports, each of which can be linked to one or more | ||
15 | ports of other devices. | ||
16 | |||
17 | These common bindings do not contain any information about the direction or | ||
18 | type of the connections, they just map their existence. Specific properties | ||
19 | may be described by specialized bindings depending on the type of connection. | ||
20 | |||
21 | To see how this binding applies to video pipelines, for example, see | ||
22 | Documentation/device-tree/bindings/media/video-interfaces.txt. | ||
23 | Here the ports describe data interfaces, and the links between them are | ||
24 | the connecting data buses. A single port with multiple connections can | ||
25 | correspond to multiple devices being connected to the same physical bus. | ||
26 | |||
27 | Organisation of ports and endpoints | ||
28 | ----------------------------------- | ||
29 | |||
30 | Ports are described by child 'port' nodes contained in the device node. | ||
31 | Each port node contains an 'endpoint' subnode for each remote device port | ||
32 | connected to this port. If a single port is connected to more than one | ||
33 | remote device, an 'endpoint' child node must be provided for each link. | ||
34 | If more than one port is present in a device node or there is more than one | ||
35 | endpoint at a port, or a port node needs to be associated with a selected | ||
36 | hardware interface, a common scheme using '#address-cells', '#size-cells' | ||
37 | and 'reg' properties is used number the nodes. | ||
38 | |||
39 | device { | ||
40 | ... | ||
41 | #address-cells = <1>; | ||
42 | #size-cells = <0>; | ||
43 | |||
44 | port@0 { | ||
45 | #address-cells = <1>; | ||
46 | #size-cells = <0>; | ||
47 | reg = <0>; | ||
48 | |||
49 | endpoint@0 { | ||
50 | reg = <0>; | ||
51 | ... | ||
52 | }; | ||
53 | endpoint@1 { | ||
54 | reg = <1>; | ||
55 | ... | ||
56 | }; | ||
57 | }; | ||
58 | |||
59 | port@1 { | ||
60 | reg = <1>; | ||
61 | |||
62 | endpoint { ... }; | ||
63 | }; | ||
64 | }; | ||
65 | |||
66 | All 'port' nodes can be grouped under an optional 'ports' node, which | ||
67 | allows to specify #address-cells, #size-cells properties for the 'port' | ||
68 | nodes independently from any other child device nodes a device might | ||
69 | have. | ||
70 | |||
71 | device { | ||
72 | ... | ||
73 | ports { | ||
74 | #address-cells = <1>; | ||
75 | #size-cells = <0>; | ||
76 | |||
77 | port@0 { | ||
78 | ... | ||
79 | endpoint@0 { ... }; | ||
80 | endpoint@1 { ... }; | ||
81 | }; | ||
82 | |||
83 | port@1 { ... }; | ||
84 | }; | ||
85 | }; | ||
86 | |||
87 | Links between endpoints | ||
88 | ----------------------- | ||
89 | |||
90 | Each endpoint should contain a 'remote-endpoint' phandle property that points | ||
91 | to the corresponding endpoint in the port of the remote device. In turn, the | ||
92 | remote endpoint should contain a 'remote-endpoint' property. If it has one, | ||
93 | it must not point to another than the local endpoint. Two endpoints with their | ||
94 | 'remote-endpoint' phandles pointing at each other form a link between the | ||
95 | containing ports. | ||
96 | |||
97 | device-1 { | ||
98 | port { | ||
99 | device_1_output: endpoint { | ||
100 | remote-endpoint = <&device_2_input>; | ||
101 | }; | ||
102 | }; | ||
103 | }; | ||
104 | |||
105 | device-2 { | ||
106 | port { | ||
107 | device_2_input: endpoint { | ||
108 | remote-endpoint = <&device_1_output>; | ||
109 | }; | ||
110 | }; | ||
111 | }; | ||
112 | |||
113 | |||
114 | Required properties | ||
115 | ------------------- | ||
116 | |||
117 | If there is more than one 'port' or more than one 'endpoint' node or 'reg' | ||
118 | property is present in port and/or endpoint nodes the following properties | ||
119 | are required in a relevant parent node: | ||
120 | |||
121 | - #address-cells : number of cells required to define port/endpoint | ||
122 | identifier, should be 1. | ||
123 | - #size-cells : should be zero. | ||
124 | |||
125 | Optional endpoint properties | ||
126 | ---------------------------- | ||
127 | |||
128 | - remote-endpoint: phandle to an 'endpoint' subnode of a remote device node. | ||
129 | |||
diff --git a/Documentation/devicetree/bindings/i2c/trivial-devices.txt b/Documentation/devicetree/bindings/i2c/trivial-devices.txt index 1a1ac2e560e9..f47e56bcf78d 100644 --- a/Documentation/devicetree/bindings/i2c/trivial-devices.txt +++ b/Documentation/devicetree/bindings/i2c/trivial-devices.txt | |||
@@ -18,6 +18,7 @@ atmel,24c02 i2c serial eeprom (24cxx) | |||
18 | atmel,at97sc3204t i2c trusted platform module (TPM) | 18 | atmel,at97sc3204t i2c trusted platform module (TPM) |
19 | capella,cm32181 CM32181: Ambient Light Sensor | 19 | capella,cm32181 CM32181: Ambient Light Sensor |
20 | catalyst,24c32 i2c serial eeprom | 20 | catalyst,24c32 i2c serial eeprom |
21 | cirrus,cs42l51 Cirrus Logic CS42L51 audio codec | ||
21 | dallas,ds1307 64 x 8, Serial, I2C Real-Time Clock | 22 | dallas,ds1307 64 x 8, Serial, I2C Real-Time Clock |
22 | dallas,ds1338 I2C RTC with 56-Byte NV RAM | 23 | dallas,ds1338 I2C RTC with 56-Byte NV RAM |
23 | dallas,ds1339 I2C Serial Real-Time Clock | 24 | dallas,ds1339 I2C Serial Real-Time Clock |
diff --git a/Documentation/devicetree/bindings/iio/adc/vf610-adc.txt b/Documentation/devicetree/bindings/iio/adc/vf610-adc.txt new file mode 100644 index 000000000000..dcebff1928e1 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/adc/vf610-adc.txt | |||
@@ -0,0 +1,22 @@ | |||
1 | Freescale vf610 Analog to Digital Converter bindings | ||
2 | |||
3 | The devicetree bindings are for the new ADC driver written for | ||
4 | vf610/i.MX6slx and upward SoCs from Freescale. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible: Should contain "fsl,vf610-adc" | ||
8 | - reg: Offset and length of the register set for the device | ||
9 | - interrupts: Should contain the interrupt for the device | ||
10 | - clocks: The clock is needed by the ADC controller, ADC clock source is ipg clock. | ||
11 | - clock-names: Must contain "adc", matching entry in the clocks property. | ||
12 | - vref-supply: The regulator supply ADC refrence voltage. | ||
13 | |||
14 | Example: | ||
15 | adc0: adc@4003b000 { | ||
16 | compatible = "fsl,vf610-adc"; | ||
17 | reg = <0x4003b000 0x1000>; | ||
18 | interrupts = <0 53 0x04>; | ||
19 | clocks = <&clks VF610_CLK_ADC0>; | ||
20 | clock-names = "adc"; | ||
21 | vref-supply = <®_vcc_3v3_mcu>; | ||
22 | }; | ||
diff --git a/Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt b/Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt new file mode 100644 index 000000000000..d9ee909d2b78 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt | |||
@@ -0,0 +1,113 @@ | |||
1 | Xilinx XADC device driver | ||
2 | |||
3 | This binding document describes the bindings for both of them since the | ||
4 | bindings are very similar. The Xilinx XADC is a ADC that can be found in the | ||
5 | series 7 FPGAs from Xilinx. The XADC has a DRP interface for communication. | ||
6 | Currently two different frontends for the DRP interface exist. One that is only | ||
7 | available on the ZYNQ family as a hardmacro in the SoC portion of the ZYNQ. The | ||
8 | other one is available on all series 7 platforms and is a softmacro with a AXI | ||
9 | interface. This binding document describes the bindings for both of them since | ||
10 | the bindings are very similar. | ||
11 | |||
12 | Required properties: | ||
13 | - compatible: Should be one of | ||
14 | * "xlnx,zynq-xadc-1.00.a": When using the ZYNQ device | ||
15 | configuration interface to interface to the XADC hardmacro. | ||
16 | * "xlnx,axi-xadc-1.00.a": When using the axi-xadc pcore to | ||
17 | interface to the XADC hardmacro. | ||
18 | - reg: Address and length of the register set for the device | ||
19 | - interrupts: Interrupt for the XADC control interface. | ||
20 | - clocks: When using the ZYNQ this must be the ZYNQ PCAP clock, | ||
21 | when using the AXI-XADC pcore this must be the clock that provides the | ||
22 | clock to the AXI bus interface of the core. | ||
23 | |||
24 | Optional properties: | ||
25 | - interrupt-parent: phandle to the parent interrupt controller | ||
26 | - xlnx,external-mux: | ||
27 | * "none": No external multiplexer is used, this is the default | ||
28 | if the property is omitted. | ||
29 | * "single": External multiplexer mode is used with one | ||
30 | multiplexer. | ||
31 | * "dual": External multiplexer mode is used with two | ||
32 | multiplexers for simultaneous sampling. | ||
33 | - xlnx,external-mux-channel: Configures which pair of pins is used to | ||
34 | sample data in external mux mode. | ||
35 | Valid values for single external multiplexer mode are: | ||
36 | 0: VP/VN | ||
37 | 1: VAUXP[0]/VAUXN[0] | ||
38 | 2: VAUXP[1]/VAUXN[1] | ||
39 | ... | ||
40 | 16: VAUXP[15]/VAUXN[15] | ||
41 | Valid values for dual external multiplexer mode are: | ||
42 | 1: VAUXP[0]/VAUXN[0] - VAUXP[8]/VAUXN[8] | ||
43 | 2: VAUXP[1]/VAUXN[1] - VAUXP[9]/VAUXN[9] | ||
44 | ... | ||
45 | 8: VAUXP[7]/VAUXN[7] - VAUXP[15]/VAUXN[15] | ||
46 | |||
47 | This property needs to be present if the device is configured for | ||
48 | external multiplexer mode (either single or dual). If the device is | ||
49 | not using external multiplexer mode the property is ignored. | ||
50 | - xnlx,channels: List of external channels that are connected to the ADC | ||
51 | Required properties: | ||
52 | * #address-cells: Should be 1. | ||
53 | * #size-cells: Should be 0. | ||
54 | |||
55 | The child nodes of this node represent the external channels which are | ||
56 | connected to the ADC. If the property is no present no external | ||
57 | channels will be assumed to be connected. | ||
58 | |||
59 | Each child node represents one channel and has the following | ||
60 | properties: | ||
61 | Required properties: | ||
62 | * reg: Pair of pins the the channel is connected to. | ||
63 | 0: VP/VN | ||
64 | 1: VAUXP[0]/VAUXN[0] | ||
65 | 2: VAUXP[1]/VAUXN[1] | ||
66 | ... | ||
67 | 16: VAUXP[15]/VAUXN[15] | ||
68 | Note each channel number should only be used at most | ||
69 | once. | ||
70 | Optional properties: | ||
71 | * xlnx,bipolar: If set the channel is used in bipolar | ||
72 | mode. | ||
73 | |||
74 | |||
75 | Examples: | ||
76 | xadc@f8007100 { | ||
77 | compatible = "xlnx,zynq-xadc-1.00.a"; | ||
78 | reg = <0xf8007100 0x20>; | ||
79 | interrupts = <0 7 4>; | ||
80 | interrupt-parent = <&gic>; | ||
81 | clocks = <&pcap_clk>; | ||
82 | |||
83 | xlnx,channels { | ||
84 | #address-cells = <1>; | ||
85 | #size-cells = <0>; | ||
86 | channel@0 { | ||
87 | reg = <0>; | ||
88 | }; | ||
89 | channel@1 { | ||
90 | reg = <1>; | ||
91 | }; | ||
92 | channel@8 { | ||
93 | reg = <8>; | ||
94 | }; | ||
95 | }; | ||
96 | }; | ||
97 | |||
98 | xadc@43200000 { | ||
99 | compatible = "xlnx,axi-xadc-1.00.a"; | ||
100 | reg = <0x43200000 0x1000>; | ||
101 | interrupts = <0 53 4>; | ||
102 | interrupt-parent = <&gic>; | ||
103 | clocks = <&fpga1_clk>; | ||
104 | |||
105 | xlnx,channels { | ||
106 | #address-cells = <1>; | ||
107 | #size-cells = <0>; | ||
108 | channel@0 { | ||
109 | reg = <0>; | ||
110 | xlnx,bipolar; | ||
111 | }; | ||
112 | }; | ||
113 | }; | ||
diff --git a/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt b/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt index 32cec4b26cd0..b290ca150d30 100644 --- a/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt +++ b/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt | |||
@@ -2,7 +2,7 @@ Allwinner Sunxi Interrupt Controller | |||
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | 4 | ||
5 | - compatible : should be "allwinner,sun4i-ic" | 5 | - compatible : should be "allwinner,sun4i-a10-ic" |
6 | - reg : Specifies base physical address and size of the registers. | 6 | - reg : Specifies base physical address and size of the registers. |
7 | - interrupt-controller : Identifies the node as an interrupt controller | 7 | - interrupt-controller : Identifies the node as an interrupt controller |
8 | - #interrupt-cells : Specifies the number of cells needed to encode an | 8 | - #interrupt-cells : Specifies the number of cells needed to encode an |
@@ -11,7 +11,7 @@ Required properties: | |||
11 | Example: | 11 | Example: |
12 | 12 | ||
13 | intc: interrupt-controller { | 13 | intc: interrupt-controller { |
14 | compatible = "allwinner,sun4i-ic"; | 14 | compatible = "allwinner,sun4i-a10-ic"; |
15 | reg = <0x01c20400 0x400>; | 15 | reg = <0x01c20400 0x400>; |
16 | interrupt-controller; | 16 | interrupt-controller; |
17 | #interrupt-cells = <1>; | 17 | #interrupt-cells = <1>; |
diff --git a/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun67i-sc-nmi.txt b/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun67i-sc-nmi.txt new file mode 100644 index 000000000000..d1c5cdabc3e0 --- /dev/null +++ b/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun67i-sc-nmi.txt | |||
@@ -0,0 +1,27 @@ | |||
1 | Allwinner Sunxi NMI Controller | ||
2 | ============================== | ||
3 | |||
4 | Required properties: | ||
5 | |||
6 | - compatible : should be "allwinner,sun7i-a20-sc-nmi" or | ||
7 | "allwinner,sun6i-a31-sc-nmi" | ||
8 | - reg : Specifies base physical address and size of the registers. | ||
9 | - interrupt-controller : Identifies the node as an interrupt controller | ||
10 | - #interrupt-cells : Specifies the number of cells needed to encode an | ||
11 | interrupt source. The value shall be 2. The first cell is the IRQ number, the | ||
12 | second cell the trigger type as defined in interrupt.txt in this directory. | ||
13 | - interrupt-parent: Specifies the parent interrupt controller. | ||
14 | - interrupts: Specifies the interrupt line (NMI) which is handled by | ||
15 | the interrupt controller in the parent controller's notation. This value | ||
16 | shall be the NMI. | ||
17 | |||
18 | Example: | ||
19 | |||
20 | sc-nmi-intc@01c00030 { | ||
21 | compatible = "allwinner,sun7i-a20-sc-nmi"; | ||
22 | interrupt-controller; | ||
23 | #interrupt-cells = <2>; | ||
24 | reg = <0x01c00030 0x0c>; | ||
25 | interrupt-parent = <&gic>; | ||
26 | interrupts = <0 0 4>; | ||
27 | }; | ||
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/ifc.txt b/Documentation/devicetree/bindings/memory-controllers/fsl/ifc.txt index d5e370450ac0..d5e370450ac0 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/ifc.txt +++ b/Documentation/devicetree/bindings/memory-controllers/fsl/ifc.txt | |||
diff --git a/Documentation/devicetree/bindings/memory-controllers/ti-aemif.txt b/Documentation/devicetree/bindings/memory-controllers/ti-aemif.txt new file mode 100644 index 000000000000..9592717f483f --- /dev/null +++ b/Documentation/devicetree/bindings/memory-controllers/ti-aemif.txt | |||
@@ -0,0 +1,210 @@ | |||
1 | * Device tree bindings for Texas instruments AEMIF controller | ||
2 | |||
3 | The Async External Memory Interface (EMIF16/AEMIF) controller is intended to | ||
4 | provide a glue-less interface to a variety of asynchronous memory devices like | ||
5 | ASRA M, NOR and NAND memory. A total of 256M bytes of any of these memories | ||
6 | can be accessed at any given time via four chip selects with 64M byte access | ||
7 | per chip select. Synchronous memories such as DDR1 SD RAM, SDR SDRAM | ||
8 | and Mobile SDR are not supported. | ||
9 | |||
10 | Documentation: | ||
11 | Davinci DM646x - http://www.ti.com/lit/ug/sprueq7c/sprueq7c.pdf | ||
12 | OMAP-L138 (DA850) - http://www.ti.com/lit/ug/spruh77a/spruh77a.pdf | ||
13 | Kestone - http://www.ti.com/lit/ug/sprugz3a/sprugz3a.pdf | ||
14 | |||
15 | Required properties: | ||
16 | |||
17 | - compatible: "ti,davinci-aemif" | ||
18 | "ti,keystone-aemif" | ||
19 | "ti,da850-aemif" | ||
20 | |||
21 | - reg: contains offset/length value for AEMIF control registers | ||
22 | space. | ||
23 | |||
24 | - #address-cells: Must be 2. The partition number has to be encoded in the | ||
25 | first address cell and it may accept values 0..N-1 | ||
26 | (N - total number of partitions). It's recommended to | ||
27 | assign N-1 number for the control partition. The second | ||
28 | cell is the offset into the partition. | ||
29 | |||
30 | - #size-cells: Must be set to 1. | ||
31 | |||
32 | - ranges: Contains memory regions. There are two types of | ||
33 | ranges/partitions: | ||
34 | - CS-specific partition/range. If continuous, must be | ||
35 | set up to reflect the memory layout for 4 chipselects, | ||
36 | if not then additional range/partition can be added and | ||
37 | child device can select the proper one. | ||
38 | - control partition which is common for all CS | ||
39 | interfaces. | ||
40 | |||
41 | - clocks: the clock feeding the controller clock. Required only | ||
42 | if clock tree data present in device tree. | ||
43 | See clock-bindings.txt | ||
44 | |||
45 | - clock-names: clock name. It has to be "aemif". Required only if clock | ||
46 | tree data present in device tree, in another case don't | ||
47 | use it. | ||
48 | See clock-bindings.txt | ||
49 | |||
50 | - clock-ranges: Empty property indicating that child nodes can inherit | ||
51 | named clocks. Required only if clock tree data present | ||
52 | in device tree. | ||
53 | See clock-bindings.txt | ||
54 | |||
55 | |||
56 | Child chip-select (cs) nodes contain the memory devices nodes connected to | ||
57 | such as NOR (e.g. cfi-flash) and NAND (ti,davinci-nand, see davinci-nand.txt). | ||
58 | There might be board specific devices like FPGAs. | ||
59 | |||
60 | Required child cs node properties: | ||
61 | |||
62 | - #address-cells: Must be 2. | ||
63 | |||
64 | - #size-cells: Must be 1. | ||
65 | |||
66 | - ranges: Empty property indicating that child nodes can inherit | ||
67 | memory layout. | ||
68 | |||
69 | - clock-ranges: Empty property indicating that child nodes can inherit | ||
70 | named clocks. Required only if clock tree data present | ||
71 | in device tree. | ||
72 | |||
73 | - ti,cs-chipselect: number of chipselect. Indicates on the aemif driver | ||
74 | which chipselect is used for accessing the memory. For | ||
75 | compatibles "ti,davinci-aemif" and "ti,keystone-aemif" | ||
76 | it can be in range [0-3]. For compatible | ||
77 | "ti,da850-aemif" range is [2-5]. | ||
78 | |||
79 | Optional child cs node properties: | ||
80 | |||
81 | - ti,cs-bus-width: width of the asynchronous device's data bus | ||
82 | 8 or 16 if not preset 8 | ||
83 | |||
84 | - ti,cs-select-strobe-mode: enable/disable select strobe mode | ||
85 | In select strobe mode chip select behaves as | ||
86 | the strobe and is active only during the strobe | ||
87 | period. If present then enable. | ||
88 | |||
89 | - ti,cs-extended-wait-mode: enable/disable extended wait mode | ||
90 | if set, the controller monitors the EMIFWAIT pin | ||
91 | mapped to that chip select to determine if the | ||
92 | device wants to extend the strobe period. If | ||
93 | present then enable. | ||
94 | |||
95 | - ti,cs-min-turnaround-ns: minimum turn around time, ns | ||
96 | Time between the end of one asynchronous memory | ||
97 | access and the start of another asynchronous | ||
98 | memory access. This delay is not incurred | ||
99 | between a read followed by read or a write | ||
100 | followed by a write to same chip select. | ||
101 | |||
102 | - ti,cs-read-setup-ns: read setup width, ns | ||
103 | Time between the beginning of a memory cycle | ||
104 | and the activation of read strobe. | ||
105 | Minimum value is 1 (0 treated as 1). | ||
106 | |||
107 | - ti,cs-read-strobe-ns: read strobe width, ns | ||
108 | Time between the activation and deactivation of | ||
109 | the read strobe. | ||
110 | Minimum value is 1 (0 treated as 1). | ||
111 | |||
112 | - ti,cs-read-hold-ns: read hold width, ns | ||
113 | Time between the deactivation of the read | ||
114 | strobe and the end of the cycle (which may be | ||
115 | either an address change or the deactivation of | ||
116 | the chip select signal. | ||
117 | Minimum value is 1 (0 treated as 1). | ||
118 | |||
119 | - ti,cs-write-setup-ns: write setup width, ns | ||
120 | Time between the beginning of a memory cycle | ||
121 | and the activation of write strobe. | ||
122 | Minimum value is 1 (0 treated as 1). | ||
123 | |||
124 | - ti,cs-write-strobe-ns: write strobe width, ns | ||
125 | Time between the activation and deactivation of | ||
126 | the write strobe. | ||
127 | Minimum value is 1 (0 treated as 1). | ||
128 | |||
129 | - ti,cs-write-hold-ns: write hold width, ns | ||
130 | Time between the deactivation of the write | ||
131 | strobe and the end of the cycle (which may be | ||
132 | either an address change or the deactivation of | ||
133 | the chip select signal. | ||
134 | Minimum value is 1 (0 treated as 1). | ||
135 | |||
136 | If any of the above parameters are absent, current parameter value will be taken | ||
137 | from the corresponding HW reg. | ||
138 | |||
139 | Example for aemif, davinci nand and nor flash chip select shown below. | ||
140 | |||
141 | memory-controller@21000A00 { | ||
142 | compatible = "ti,davinci-aemif"; | ||
143 | #address-cells = <2>; | ||
144 | #size-cells = <1>; | ||
145 | clocks = <&clkaemif 0>; | ||
146 | clock-names = "aemif"; | ||
147 | clock-ranges; | ||
148 | reg = <0x21000A00 0x00000100>; | ||
149 | ranges = <0 0 0x70000000 0x10000000 | ||
150 | 1 0 0x21000A00 0x00000100>; | ||
151 | /* | ||
152 | * Partition0: CS-specific memory range which is | ||
153 | * implemented as continuous physical memory region | ||
154 | * Partition1: control memory range | ||
155 | */ | ||
156 | |||
157 | nand:cs2 { | ||
158 | #address-cells = <2>; | ||
159 | #size-cells = <1>; | ||
160 | clock-ranges; | ||
161 | ranges; | ||
162 | |||
163 | ti,cs-chipselect = <2>; | ||
164 | /* all timings in nanoseconds */ | ||
165 | ti,cs-min-turnaround-ns = <0>; | ||
166 | ti,cs-read-hold-ns = <7>; | ||
167 | ti,cs-read-strobe-ns = <42>; | ||
168 | ti,cs-read-setup-ns = <14>; | ||
169 | ti,cs-write-hold-ns = <7>; | ||
170 | ti,cs-write-strobe-ns = <42>; | ||
171 | ti,cs-write-setup-ns = <14>; | ||
172 | |||
173 | nand@0,0x8000000 { | ||
174 | compatible = "ti,davinci-nand"; | ||
175 | reg = <0 0x8000000 0x4000000 | ||
176 | 1 0x0000000 0x0000100>; | ||
177 | /* | ||
178 | * Partition0, offset 0x8000000, size 0x4000000 | ||
179 | * Partition1, offset 0x0000000, size 0x0000100 | ||
180 | */ | ||
181 | |||
182 | .. see davinci-nand.txt | ||
183 | }; | ||
184 | }; | ||
185 | |||
186 | nor:cs0 { | ||
187 | #address-cells = <2>; | ||
188 | #size-cells = <1>; | ||
189 | clock-ranges; | ||
190 | ranges; | ||
191 | |||
192 | ti,cs-chipselect = <0>; | ||
193 | /* all timings in nanoseconds */ | ||
194 | ti,cs-min-turnaround-ns = <0>; | ||
195 | ti,cs-read-hold-ns = <8>; | ||
196 | ti,cs-read-strobe-ns = <40>; | ||
197 | ti,cs-read-setup-ns = <14>; | ||
198 | ti,cs-write-hold-ns = <7>; | ||
199 | ti,cs-write-strobe-ns = <40>; | ||
200 | ti,cs-write-setup-ns = <14>; | ||
201 | ti,cs-bus-width = <16>; | ||
202 | |||
203 | flash@0,0x0000000 { | ||
204 | compatible = "cfi-flash"; | ||
205 | reg = <0 0x0000000 0x4000000>; | ||
206 | |||
207 | ... | ||
208 | }; | ||
209 | }; | ||
210 | }; | ||
diff --git a/Documentation/devicetree/bindings/mfd/s2mpa01.txt b/Documentation/devicetree/bindings/mfd/s2mpa01.txt new file mode 100644 index 000000000000..c13d3d8c3947 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/s2mpa01.txt | |||
@@ -0,0 +1,90 @@ | |||
1 | |||
2 | * Samsung S2MPA01 Voltage and Current Regulator | ||
3 | |||
4 | The Samsung S2MPA01 is a multi-function device which includes high | ||
5 | efficiency buck converters including Dual-Phase buck converter, various LDOs, | ||
6 | and an RTC. It is interfaced to the host controller using an I2C interface. | ||
7 | Each sub-block is addressed by the host system using different I2C slave | ||
8 | addresses. | ||
9 | |||
10 | Required properties: | ||
11 | - compatible: Should be "samsung,s2mpa01-pmic". | ||
12 | - reg: Specifies the I2C slave address of the PMIC block. It should be 0x66. | ||
13 | |||
14 | Optional properties: | ||
15 | - interrupt-parent: Specifies the phandle of the interrupt controller to which | ||
16 | the interrupts from s2mpa01 are delivered to. | ||
17 | - interrupts: An interrupt specifier for the sole interrupt generated by the | ||
18 | device. | ||
19 | |||
20 | Optional nodes: | ||
21 | - regulators: The regulators of s2mpa01 that have to be instantiated should be | ||
22 | included in a sub-node named 'regulators'. Regulator nodes and constraints | ||
23 | included in this sub-node use the standard regulator bindings which are | ||
24 | documented elsewhere. | ||
25 | |||
26 | Properties for BUCK regulator nodes: | ||
27 | - regulator-ramp-delay: ramp delay in uV/us. May be 6250, 12500 | ||
28 | (default), 25000, or 50000. May be 0 for disabling the ramp delay on | ||
29 | BUCK{1,2,3,4}. | ||
30 | |||
31 | In the absence of the regulator-ramp-delay property, the default ramp | ||
32 | delay will be used. | ||
33 | |||
34 | NOTE: Some BUCKs share the ramp rate setting i.e. same ramp value will be set | ||
35 | for a particular group of BUCKs. So provide same regulator-ramp-delay=<value>. | ||
36 | |||
37 | The following BUCKs share ramp settings: | ||
38 | * 1 and 6 | ||
39 | * 2 and 4 | ||
40 | * 8, 9, and 10 | ||
41 | |||
42 | The following are the names of the regulators that the s2mpa01 PMIC block | ||
43 | supports. Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number | ||
44 | as per the datasheet of s2mpa01. | ||
45 | |||
46 | - LDOn | ||
47 | - valid values for n are 1 to 26 | ||
48 | - Example: LDO1, LD02, LDO26 | ||
49 | - BUCKn | ||
50 | - valid values for n are 1 to 10. | ||
51 | - Example: BUCK1, BUCK2, BUCK9 | ||
52 | |||
53 | Example: | ||
54 | |||
55 | s2mpa01_pmic@66 { | ||
56 | compatible = "samsung,s2mpa01-pmic"; | ||
57 | reg = <0x66>; | ||
58 | |||
59 | regulators { | ||
60 | ldo1_reg: LDO1 { | ||
61 | regulator-name = "VDD_ALIVE"; | ||
62 | regulator-min-microvolt = <1000000>; | ||
63 | regulator-max-microvolt = <1000000>; | ||
64 | }; | ||
65 | |||
66 | ldo2_reg: LDO2 { | ||
67 | regulator-name = "VDDQ_MMC2"; | ||
68 | regulator-min-microvolt = <2800000>; | ||
69 | regulator-max-microvolt = <2800000>; | ||
70 | regulator-always-on; | ||
71 | }; | ||
72 | |||
73 | buck1_reg: BUCK1 { | ||
74 | regulator-name = "vdd_mif"; | ||
75 | regulator-min-microvolt = <950000>; | ||
76 | regulator-max-microvolt = <1350000>; | ||
77 | regulator-always-on; | ||
78 | regulator-boot-on; | ||
79 | }; | ||
80 | |||
81 | buck2_reg: BUCK2 { | ||
82 | regulator-name = "vdd_arm"; | ||
83 | regulator-min-microvolt = <950000>; | ||
84 | regulator-max-microvolt = <1350000>; | ||
85 | regulator-always-on; | ||
86 | regulator-boot-on; | ||
87 | regulator-ramp-delay = <50000>; | ||
88 | }; | ||
89 | }; | ||
90 | }; | ||
diff --git a/Documentation/devicetree/bindings/mfd/s2mps11.txt b/Documentation/devicetree/bindings/mfd/s2mps11.txt index 15ee89c3cc7b..f69bec294f02 100644 --- a/Documentation/devicetree/bindings/mfd/s2mps11.txt +++ b/Documentation/devicetree/bindings/mfd/s2mps11.txt | |||
@@ -1,5 +1,5 @@ | |||
1 | 1 | ||
2 | * Samsung S2MPS11 Voltage and Current Regulator | 2 | * Samsung S2MPS11 and S2MPS14 Voltage and Current Regulator |
3 | 3 | ||
4 | The Samsung S2MPS11 is a multi-function device which includes voltage and | 4 | The Samsung S2MPS11 is a multi-function device which includes voltage and |
5 | current regulators, RTC, charger controller and other sub-blocks. It is | 5 | current regulators, RTC, charger controller and other sub-blocks. It is |
@@ -7,7 +7,7 @@ interfaced to the host controller using an I2C interface. Each sub-block is | |||
7 | addressed by the host system using different I2C slave addresses. | 7 | addressed by the host system using different I2C slave addresses. |
8 | 8 | ||
9 | Required properties: | 9 | Required properties: |
10 | - compatible: Should be "samsung,s2mps11-pmic". | 10 | - compatible: Should be "samsung,s2mps11-pmic" or "samsung,s2mps14-pmic". |
11 | - reg: Specifies the I2C slave address of the pmic block. It should be 0x66. | 11 | - reg: Specifies the I2C slave address of the pmic block. It should be 0x66. |
12 | 12 | ||
13 | Optional properties: | 13 | Optional properties: |
@@ -59,10 +59,14 @@ supports. Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number | |||
59 | as per the datasheet of s2mps11. | 59 | as per the datasheet of s2mps11. |
60 | 60 | ||
61 | - LDOn | 61 | - LDOn |
62 | - valid values for n are 1 to 38 | 62 | - valid values for n are: |
63 | - S2MPS11: 1 to 38 | ||
64 | - S2MPS14: 1 to 25 | ||
63 | - Example: LDO1, LD02, LDO28 | 65 | - Example: LDO1, LD02, LDO28 |
64 | - BUCKn | 66 | - BUCKn |
65 | - valid values for n are 1 to 10. | 67 | - valid values for n are: |
68 | - S2MPS11: 1 to 10 | ||
69 | - S2MPS14: 1 to 5 | ||
66 | - Example: BUCK1, BUCK2, BUCK9 | 70 | - Example: BUCK1, BUCK2, BUCK9 |
67 | 71 | ||
68 | Example: | 72 | Example: |
diff --git a/Documentation/devicetree/bindings/mfd/tps65910.txt b/Documentation/devicetree/bindings/mfd/tps65910.txt index b4bd98af1cc7..38833e63a59f 100644 --- a/Documentation/devicetree/bindings/mfd/tps65910.txt +++ b/Documentation/devicetree/bindings/mfd/tps65910.txt | |||
@@ -11,7 +11,7 @@ Required properties: | |||
11 | - #interrupt-cells: the number of cells to describe an IRQ, this should be 2. | 11 | - #interrupt-cells: the number of cells to describe an IRQ, this should be 2. |
12 | The first cell is the IRQ number. | 12 | The first cell is the IRQ number. |
13 | The second cell is the flags, encoded as the trigger masks from | 13 | The second cell is the flags, encoded as the trigger masks from |
14 | Documentation/devicetree/bindings/interrupts.txt | 14 | Documentation/devicetree/bindings/interrupt-controller/interrupts.txt |
15 | - regulators: This is the list of child nodes that specify the regulator | 15 | - regulators: This is the list of child nodes that specify the regulator |
16 | initialization data for defined regulators. Not all regulators for the given | 16 | initialization data for defined regulators. Not all regulators for the given |
17 | device need to be present. The definition for each of these nodes is defined | 17 | device need to be present. The definition for each of these nodes is defined |
diff --git a/Documentation/devicetree/bindings/misc/allwinner,sunxi-sid.txt b/Documentation/devicetree/bindings/misc/allwinner,sunxi-sid.txt index 68ba37295565..fabdf64a5737 100644 --- a/Documentation/devicetree/bindings/misc/allwinner,sunxi-sid.txt +++ b/Documentation/devicetree/bindings/misc/allwinner,sunxi-sid.txt | |||
@@ -1,12 +1,12 @@ | |||
1 | Allwinner sunxi-sid | 1 | Allwinner sunxi-sid |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: "allwinner,sun4i-sid" or "allwinner,sun7i-a20-sid". | 4 | - compatible: "allwinner,sun4i-a10-sid" or "allwinner,sun7i-a20-sid" |
5 | - reg: Should contain registers location and length | 5 | - reg: Should contain registers location and length |
6 | 6 | ||
7 | Example for sun4i: | 7 | Example for sun4i: |
8 | sid@01c23800 { | 8 | sid@01c23800 { |
9 | compatible = "allwinner,sun4i-sid"; | 9 | compatible = "allwinner,sun4i-a10-sid"; |
10 | reg = <0x01c23800 0x10> | 10 | reg = <0x01c23800 0x10> |
11 | }; | 11 | }; |
12 | 12 | ||
diff --git a/Documentation/devicetree/bindings/misc/atmel-ssc.txt b/Documentation/devicetree/bindings/misc/atmel-ssc.txt index 60960b2755f4..efc98ea1f23d 100644 --- a/Documentation/devicetree/bindings/misc/atmel-ssc.txt +++ b/Documentation/devicetree/bindings/misc/atmel-ssc.txt | |||
@@ -17,6 +17,14 @@ Required properties for devices compatible with "atmel,at91sam9g45-ssc": | |||
17 | See Documentation/devicetree/bindings/dma/atmel-dma.txt for details. | 17 | See Documentation/devicetree/bindings/dma/atmel-dma.txt for details. |
18 | - dma-names: Must be "tx", "rx". | 18 | - dma-names: Must be "tx", "rx". |
19 | 19 | ||
20 | Optional properties: | ||
21 | - atmel,clk-from-rk-pin: bool property. | ||
22 | - When SSC works in slave mode, according to the hardware design, the | ||
23 | clock can get from TK pin, and also can get from RK pin. So, add | ||
24 | this parameter to choose where the clock from. | ||
25 | - By default the clock is from TK pin, if the clock from RK pin, this | ||
26 | property is needed. | ||
27 | |||
20 | Examples: | 28 | Examples: |
21 | - PDC transfer: | 29 | - PDC transfer: |
22 | ssc0: ssc@fffbc000 { | 30 | ssc0: ssc@fffbc000 { |
diff --git a/Documentation/devicetree/bindings/misc/sram.txt b/Documentation/devicetree/bindings/misc/sram.txt index 4d0a00e453a8..36cbe5aea990 100644 --- a/Documentation/devicetree/bindings/misc/sram.txt +++ b/Documentation/devicetree/bindings/misc/sram.txt | |||
@@ -8,9 +8,44 @@ Required properties: | |||
8 | 8 | ||
9 | - reg : SRAM iomem address range | 9 | - reg : SRAM iomem address range |
10 | 10 | ||
11 | Reserving sram areas: | ||
12 | --------------------- | ||
13 | |||
14 | Each child of the sram node specifies a region of reserved memory. Each | ||
15 | child node should use a 'reg' property to specify a specific range of | ||
16 | reserved memory. | ||
17 | |||
18 | Following the generic-names recommended practice, node names should | ||
19 | reflect the purpose of the node. Unit address (@<address>) should be | ||
20 | appended to the name. | ||
21 | |||
22 | Required properties in the sram node: | ||
23 | |||
24 | - #address-cells, #size-cells : should use the same values as the root node | ||
25 | - ranges : standard definition, should translate from local addresses | ||
26 | within the sram to bus addresses | ||
27 | |||
28 | Required properties in the area nodes: | ||
29 | |||
30 | - reg : iomem address range, relative to the SRAM range | ||
31 | |||
32 | Optional properties in the area nodes: | ||
33 | |||
34 | - compatible : standard definition, should contain a vendor specific string | ||
35 | in the form <vendor>,[<device>-]<usage> | ||
36 | |||
11 | Example: | 37 | Example: |
12 | 38 | ||
13 | sram: sram@5c000000 { | 39 | sram: sram@5c000000 { |
14 | compatible = "mmio-sram"; | 40 | compatible = "mmio-sram"; |
15 | reg = <0x5c000000 0x40000>; /* 256 KiB SRAM at address 0x5c000000 */ | 41 | reg = <0x5c000000 0x40000>; /* 256 KiB SRAM at address 0x5c000000 */ |
42 | |||
43 | #adress-cells = <1>; | ||
44 | #size-cells = <1>; | ||
45 | ranges = <0 0x5c000000 0x40000>; | ||
46 | |||
47 | smp-sram@100 { | ||
48 | compatible = "socvendor,smp-sram"; | ||
49 | reg = <0x100 0x50>; | ||
50 | }; | ||
16 | }; | 51 | }; |
diff --git a/Documentation/devicetree/bindings/net/micrel-ks8851.txt b/Documentation/devicetree/bindings/net/micrel-ks8851.txt index 11ace3c3d805..4fc392763611 100644 --- a/Documentation/devicetree/bindings/net/micrel-ks8851.txt +++ b/Documentation/devicetree/bindings/net/micrel-ks8851.txt | |||
@@ -7,3 +7,4 @@ Required properties: | |||
7 | 7 | ||
8 | Optional properties: | 8 | Optional properties: |
9 | - local-mac-address : Ethernet mac address to use | 9 | - local-mac-address : Ethernet mac address to use |
10 | - vdd-supply: supply for Ethernet mac | ||
diff --git a/Documentation/devicetree/bindings/net/opencores-ethoc.txt b/Documentation/devicetree/bindings/net/opencores-ethoc.txt new file mode 100644 index 000000000000..2dc127c30d9b --- /dev/null +++ b/Documentation/devicetree/bindings/net/opencores-ethoc.txt | |||
@@ -0,0 +1,22 @@ | |||
1 | * OpenCores MAC 10/100 Mbps | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "opencores,ethoc". | ||
5 | - reg: two memory regions (address and length), | ||
6 | first region is for the device registers and descriptor rings, | ||
7 | second is for the device packet memory. | ||
8 | - interrupts: interrupt for the device. | ||
9 | |||
10 | Optional properties: | ||
11 | - clocks: phandle to refer to the clk used as per | ||
12 | Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
13 | |||
14 | Examples: | ||
15 | |||
16 | enet0: ethoc@fd030000 { | ||
17 | compatible = "opencores,ethoc"; | ||
18 | reg = <0xfd030000 0x4000 0xfd800000 0x4000>; | ||
19 | interrupts = <1>; | ||
20 | local-mac-address = [00 50 c2 13 6f 00]; | ||
21 | clocks = <&osc>; | ||
22 | }; | ||
diff --git a/Documentation/devicetree/bindings/net/sti-dwmac.txt b/Documentation/devicetree/bindings/net/sti-dwmac.txt new file mode 100644 index 000000000000..3dd3d0bf112f --- /dev/null +++ b/Documentation/devicetree/bindings/net/sti-dwmac.txt | |||
@@ -0,0 +1,58 @@ | |||
1 | STMicroelectronics SoC DWMAC glue layer controller | ||
2 | |||
3 | The device node has following properties. | ||
4 | |||
5 | Required properties: | ||
6 | - compatible : Can be "st,stih415-dwmac", "st,stih416-dwmac" or | ||
7 | "st,stid127-dwmac". | ||
8 | - reg : Offset of the glue configuration register map in system | ||
9 | configuration regmap pointed by st,syscon property and size. | ||
10 | |||
11 | - reg-names : Should be "sti-ethconf". | ||
12 | |||
13 | - st,syscon : Should be phandle to system configuration node which | ||
14 | encompases this glue registers. | ||
15 | |||
16 | - st,tx-retime-src: On STi Parts for Giga bit speeds, 125Mhz clocks can be | ||
17 | wired up in from different sources. One via TXCLK pin and other via CLK_125 | ||
18 | pin. This wiring is totally board dependent. However the retiming glue | ||
19 | logic should be configured accordingly. Possible values for this property | ||
20 | |||
21 | "txclk" - if 125Mhz clock is wired up via txclk line. | ||
22 | "clk_125" - if 125Mhz clock is wired up via clk_125 line. | ||
23 | |||
24 | This property is only valid for Giga bit setup( GMII, RGMII), and it is | ||
25 | un-used for non-giga bit (MII and RMII) setups. Also note that internal | ||
26 | clockgen can not generate stable 125Mhz clock. | ||
27 | |||
28 | - st,ext-phyclk: This boolean property indicates who is generating the clock | ||
29 | for tx and rx. This property is only valid for RMII case where the clock can | ||
30 | be generated from the MAC or PHY. | ||
31 | |||
32 | - clock-names: should be "sti-ethclk". | ||
33 | - clocks: Should point to ethernet clockgen which can generate phyclk. | ||
34 | |||
35 | |||
36 | Example: | ||
37 | |||
38 | ethernet0: dwmac@fe810000 { | ||
39 | device_type = "network"; | ||
40 | compatible = "st,stih416-dwmac", "snps,dwmac", "snps,dwmac-3.710"; | ||
41 | reg = <0xfe810000 0x8000>, <0x8bc 0x4>; | ||
42 | reg-names = "stmmaceth", "sti-ethconf"; | ||
43 | interrupts = <0 133 0>, <0 134 0>, <0 135 0>; | ||
44 | interrupt-names = "macirq", "eth_wake_irq", "eth_lpi"; | ||
45 | phy-mode = "mii"; | ||
46 | |||
47 | st,syscon = <&syscfg_rear>; | ||
48 | |||
49 | snps,pbl = <32>; | ||
50 | snps,mixed-burst; | ||
51 | |||
52 | resets = <&softreset STIH416_ETH0_SOFTRESET>; | ||
53 | reset-names = "stmmaceth"; | ||
54 | pinctrl-0 = <&pinctrl_mii0>; | ||
55 | pinctrl-names = "default"; | ||
56 | clocks = <&CLK_S_GMAC0_PHY>; | ||
57 | clock-names = "stmmaceth"; | ||
58 | }; | ||
diff --git a/Documentation/devicetree/bindings/phy/apm-xgene-phy.txt b/Documentation/devicetree/bindings/phy/apm-xgene-phy.txt new file mode 100644 index 000000000000..5f3a65a9dd88 --- /dev/null +++ b/Documentation/devicetree/bindings/phy/apm-xgene-phy.txt | |||
@@ -0,0 +1,79 @@ | |||
1 | * APM X-Gene 15Gbps Multi-purpose PHY nodes | ||
2 | |||
3 | PHY nodes are defined to describe on-chip 15Gbps Multi-purpose PHY. Each | ||
4 | PHY (pair of lanes) has its own node. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible : Shall be "apm,xgene-phy". | ||
8 | - reg : PHY memory resource is the SDS PHY access resource. | ||
9 | - #phy-cells : Shall be 1 as it expects one argument for setting | ||
10 | the mode of the PHY. Possible values are 0 (SATA), | ||
11 | 1 (SGMII), 2 (PCIe), 3 (USB), and 4 (XFI). | ||
12 | |||
13 | Optional properties: | ||
14 | - status : Shall be "ok" if enabled or "disabled" if disabled. | ||
15 | Default is "ok". | ||
16 | - clocks : Reference to the clock entry. | ||
17 | - apm,tx-eye-tuning : Manual control to fine tune the capture of the serial | ||
18 | bit lines from the automatic calibrated position. | ||
19 | Two set of 3-tuple setting for each (up to 3) | ||
20 | supported link speed on the host. Range from 0 to | ||
21 | 127 in unit of one bit period. Default is 10. | ||
22 | - apm,tx-eye-direction : Eye tuning manual control direction. 0 means sample | ||
23 | data earlier than the nominal sampling point. 1 means | ||
24 | sample data later than the nominal sampling point. | ||
25 | Two set of 3-tuple setting for each (up to 3) | ||
26 | supported link speed on the host. Default is 0. | ||
27 | - apm,tx-boost-gain : Frequency boost AC (LSB 3-bit) and DC (2-bit) | ||
28 | gain control. Two set of 3-tuple setting for each | ||
29 | (up to 3) supported link speed on the host. Range is | ||
30 | between 0 to 31 in unit of dB. Default is 3. | ||
31 | - apm,tx-amplitude : Amplitude control. Two set of 3-tuple setting for | ||
32 | each (up to 3) supported link speed on the host. | ||
33 | Range is between 0 to 199500 in unit of uV. | ||
34 | Default is 199500 uV. | ||
35 | - apm,tx-pre-cursor1 : 1st pre-cursor emphasis taps control. Two set of | ||
36 | 3-tuple setting for each (up to 3) supported link | ||
37 | speed on the host. Range is 0 to 273000 in unit of | ||
38 | uV. Default is 0. | ||
39 | - apm,tx-pre-cursor2 : 2st pre-cursor emphasis taps control. Two set of | ||
40 | 3-tuple setting for each (up to 3) supported link | ||
41 | speed on the host. Range is 0 to 127400 in unit uV. | ||
42 | Default is 0x0. | ||
43 | - apm,tx-post-cursor : Post-cursor emphasis taps control. Two set of | ||
44 | 3-tuple setting for Gen1, Gen2, and Gen3. Range is | ||
45 | between 0 to 0x1f in unit of 18.2mV. Default is 0xf. | ||
46 | - apm,tx-speed : Tx operating speed. One set of 3-tuple for each | ||
47 | supported link speed on the host. | ||
48 | 0 = 1-2Gbps | ||
49 | 1 = 2-4Gbps (1st tuple default) | ||
50 | 2 = 4-8Gbps | ||
51 | 3 = 8-15Gbps (2nd tuple default) | ||
52 | 4 = 2.5-4Gbps | ||
53 | 5 = 4-5Gbps | ||
54 | 6 = 5-6Gbps | ||
55 | 7 = 6-16Gbps (3rd tuple default) | ||
56 | |||
57 | NOTE: PHY override parameters are board specific setting. | ||
58 | |||
59 | Example: | ||
60 | phy1: phy@1f21a000 { | ||
61 | compatible = "apm,xgene-phy"; | ||
62 | reg = <0x0 0x1f21a000 0x0 0x100>; | ||
63 | #phy-cells = <1>; | ||
64 | status = "disabled"; | ||
65 | }; | ||
66 | |||
67 | phy2: phy@1f22a000 { | ||
68 | compatible = "apm,xgene-phy"; | ||
69 | reg = <0x0 0x1f22a000 0x0 0x100>; | ||
70 | #phy-cells = <1>; | ||
71 | status = "ok"; | ||
72 | }; | ||
73 | |||
74 | phy3: phy@1f23a000 { | ||
75 | compatible = "apm,xgene-phy"; | ||
76 | reg = <0x0 0x1f23a000 0x0 0x100>; | ||
77 | #phy-cells = <1>; | ||
78 | status = "ok"; | ||
79 | }; | ||
diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt b/Documentation/devicetree/bindings/phy/samsung-phy.txt index c0fccaa1671e..28f9edb8f19c 100644 --- a/Documentation/devicetree/bindings/phy/samsung-phy.txt +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt | |||
@@ -20,3 +20,57 @@ Required properties: | |||
20 | - compatible : should be "samsung,exynos5250-dp-video-phy"; | 20 | - compatible : should be "samsung,exynos5250-dp-video-phy"; |
21 | - reg : offset and length of the Display Port PHY register set; | 21 | - reg : offset and length of the Display Port PHY register set; |
22 | - #phy-cells : from the generic PHY bindings, must be 0; | 22 | - #phy-cells : from the generic PHY bindings, must be 0; |
23 | |||
24 | Samsung S5P/EXYNOS SoC series USB PHY | ||
25 | ------------------------------------------------- | ||
26 | |||
27 | Required properties: | ||
28 | - compatible : should be one of the listed compatibles: | ||
29 | - "samsung,exynos4210-usb2-phy" | ||
30 | - "samsung,exynos4x12-usb2-phy" | ||
31 | - "samsung,exynos5250-usb2-phy" | ||
32 | - reg : a list of registers used by phy driver | ||
33 | - first and obligatory is the location of phy modules registers | ||
34 | - samsung,sysreg-phandle - handle to syscon used to control the system registers | ||
35 | - samsung,pmureg-phandle - handle to syscon used to control PMU registers | ||
36 | - #phy-cells : from the generic phy bindings, must be 1; | ||
37 | - clocks and clock-names: | ||
38 | - the "phy" clock is required by the phy module, used as a gate | ||
39 | - the "ref" clock is used to get the rate of the clock provided to the | ||
40 | PHY module | ||
41 | |||
42 | The first phandle argument in the PHY specifier identifies the PHY, its | ||
43 | meaning is compatible dependent. For the currently supported SoCs (Exynos 4210 | ||
44 | and Exynos 4212) it is as follows: | ||
45 | 0 - USB device ("device"), | ||
46 | 1 - USB host ("host"), | ||
47 | 2 - HSIC0 ("hsic0"), | ||
48 | 3 - HSIC1 ("hsic1"), | ||
49 | |||
50 | Exynos 4210 and Exynos 4212 use mode switching and require that mode switch | ||
51 | register is supplied. | ||
52 | |||
53 | Example: | ||
54 | |||
55 | For Exynos 4412 (compatible with Exynos 4212): | ||
56 | |||
57 | usbphy: phy@125b0000 { | ||
58 | compatible = "samsung,exynos4x12-usb2-phy"; | ||
59 | reg = <0x125b0000 0x100>; | ||
60 | clocks = <&clock 305>, <&clock 2>; | ||
61 | clock-names = "phy", "ref"; | ||
62 | status = "okay"; | ||
63 | #phy-cells = <1>; | ||
64 | samsung,sysreg-phandle = <&sys_reg>; | ||
65 | samsung,pmureg-phandle = <&pmu_reg>; | ||
66 | }; | ||
67 | |||
68 | Then the PHY can be used in other nodes such as: | ||
69 | |||
70 | phy-consumer@12340000 { | ||
71 | phys = <&usbphy 2>; | ||
72 | phy-names = "phy"; | ||
73 | }; | ||
74 | |||
75 | Refer to DT bindings documentation of particular PHY consumer devices for more | ||
76 | information about required PHYs and the way of specification. | ||
diff --git a/Documentation/devicetree/bindings/phy/sun4i-usb-phy.txt b/Documentation/devicetree/bindings/phy/sun4i-usb-phy.txt new file mode 100644 index 000000000000..a82361b62015 --- /dev/null +++ b/Documentation/devicetree/bindings/phy/sun4i-usb-phy.txt | |||
@@ -0,0 +1,26 @@ | |||
1 | Allwinner sun4i USB PHY | ||
2 | ----------------------- | ||
3 | |||
4 | Required properties: | ||
5 | - compatible : should be one of "allwinner,sun4i-a10-usb-phy", | ||
6 | "allwinner,sun5i-a13-usb-phy" or "allwinner,sun7i-a20-usb-phy" | ||
7 | - reg : a list of offset + length pairs | ||
8 | - reg-names : "phy_ctrl", "pmu1" and for sun4i or sun7i "pmu2" | ||
9 | - #phy-cells : from the generic phy bindings, must be 1 | ||
10 | - clocks : phandle + clock specifier for the phy clock | ||
11 | - clock-names : "usb_phy" | ||
12 | - resets : a list of phandle + reset specifier pairs | ||
13 | - reset-names : "usb0_reset", "usb1_reset" and for sun4i or sun7i "usb2_reset" | ||
14 | |||
15 | Example: | ||
16 | usbphy: phy@0x01c13400 { | ||
17 | #phy-cells = <1>; | ||
18 | compatible = "allwinner,sun4i-a10-usb-phy"; | ||
19 | /* phy base regs, phy1 pmu reg, phy2 pmu reg */ | ||
20 | reg = <0x01c13400 0x10 0x01c14800 0x4 0x01c1c800 0x4>; | ||
21 | reg-names = "phy_ctrl", "pmu1", "pmu2"; | ||
22 | clocks = <&usb_clk 8>; | ||
23 | clock-names = "usb_phy"; | ||
24 | resets = <&usb_clk 1>, <&usb_clk 2>; | ||
25 | reset-names = "usb1_reset", "usb2_reset"; | ||
26 | }; | ||
diff --git a/Documentation/devicetree/bindings/phy/ti-phy.txt b/Documentation/devicetree/bindings/phy/ti-phy.txt new file mode 100644 index 000000000000..788fb0fa3762 --- /dev/null +++ b/Documentation/devicetree/bindings/phy/ti-phy.txt | |||
@@ -0,0 +1,86 @@ | |||
1 | TI PHY: DT DOCUMENTATION FOR PHYs in TI PLATFORMs | ||
2 | |||
3 | OMAP CONTROL PHY | ||
4 | |||
5 | Required properties: | ||
6 | - compatible: Should be one of | ||
7 | "ti,control-phy-otghs" - if it has otghs_control mailbox register as on OMAP4. | ||
8 | "ti,control-phy-usb2" - if it has Power down bit in control_dev_conf register | ||
9 | e.g. USB2_PHY on OMAP5. | ||
10 | "ti,control-phy-pipe3" - if it has DPLL and individual Rx & Tx power control | ||
11 | e.g. USB3 PHY and SATA PHY on OMAP5. | ||
12 | "ti,control-phy-usb2-dra7" - if it has power down register like USB2 PHY on | ||
13 | DRA7 platform. | ||
14 | "ti,control-phy-usb2-am437" - if it has power down register like USB2 PHY on | ||
15 | AM437 platform. | ||
16 | - reg : Address and length of the register set for the device. It contains | ||
17 | the address of "otghs_control" for control-phy-otghs or "power" register | ||
18 | for other types. | ||
19 | - reg-names: should be "otghs_control" control-phy-otghs and "power" for | ||
20 | other types. | ||
21 | |||
22 | omap_control_usb: omap-control-usb@4a002300 { | ||
23 | compatible = "ti,control-phy-otghs"; | ||
24 | reg = <0x4a00233c 0x4>; | ||
25 | reg-names = "otghs_control"; | ||
26 | }; | ||
27 | |||
28 | OMAP USB2 PHY | ||
29 | |||
30 | Required properties: | ||
31 | - compatible: Should be "ti,omap-usb2" | ||
32 | - reg : Address and length of the register set for the device. | ||
33 | - #phy-cells: determine the number of cells that should be given in the | ||
34 | phandle while referencing this phy. | ||
35 | |||
36 | Optional properties: | ||
37 | - ctrl-module : phandle of the control module used by PHY driver to power on | ||
38 | the PHY. | ||
39 | |||
40 | This is usually a subnode of ocp2scp to which it is connected. | ||
41 | |||
42 | usb2phy@4a0ad080 { | ||
43 | compatible = "ti,omap-usb2"; | ||
44 | reg = <0x4a0ad080 0x58>; | ||
45 | ctrl-module = <&omap_control_usb>; | ||
46 | #phy-cells = <0>; | ||
47 | }; | ||
48 | |||
49 | TI PIPE3 PHY | ||
50 | |||
51 | Required properties: | ||
52 | - compatible: Should be "ti,phy-usb3" or "ti,phy-pipe3-sata". | ||
53 | "ti,omap-usb3" is deprecated. | ||
54 | - reg : Address and length of the register set for the device. | ||
55 | - reg-names: The names of the register addresses corresponding to the registers | ||
56 | filled in "reg". | ||
57 | - #phy-cells: determine the number of cells that should be given in the | ||
58 | phandle while referencing this phy. | ||
59 | - clocks: a list of phandles and clock-specifier pairs, one for each entry in | ||
60 | clock-names. | ||
61 | - clock-names: should include: | ||
62 | * "wkupclk" - wakeup clock. | ||
63 | * "sysclk" - system clock. | ||
64 | * "refclk" - reference clock. | ||
65 | |||
66 | Optional properties: | ||
67 | - ctrl-module : phandle of the control module used by PHY driver to power on | ||
68 | the PHY. | ||
69 | |||
70 | This is usually a subnode of ocp2scp to which it is connected. | ||
71 | |||
72 | usb3phy@4a084400 { | ||
73 | compatible = "ti,phy-usb3"; | ||
74 | reg = <0x4a084400 0x80>, | ||
75 | <0x4a084800 0x64>, | ||
76 | <0x4a084c00 0x40>; | ||
77 | reg-names = "phy_rx", "phy_tx", "pll_ctrl"; | ||
78 | ctrl-module = <&omap_control_usb>; | ||
79 | #phy-cells = <0>; | ||
80 | clocks = <&usb_phy_cm_clk32k>, | ||
81 | <&sys_clkin>, | ||
82 | <&usb_otg_ss_refclk960m>; | ||
83 | clock-names = "wkupclk", | ||
84 | "sysclk", | ||
85 | "refclk"; | ||
86 | }; | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,capri-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/brcm,bcm11351-pinctrl.txt index 9e9e9ef9f852..c119debe6bab 100644 --- a/Documentation/devicetree/bindings/pinctrl/brcm,capri-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/brcm,bcm11351-pinctrl.txt | |||
@@ -1,4 +1,4 @@ | |||
1 | Broadcom Capri Pin Controller | 1 | Broadcom BCM281xx Pin Controller |
2 | 2 | ||
3 | This is a pin controller for the Broadcom BCM281xx SoC family, which includes | 3 | This is a pin controller for the Broadcom BCM281xx SoC family, which includes |
4 | BCM11130, BCM11140, BCM11351, BCM28145, and BCM28155 SoCs. | 4 | BCM11130, BCM11140, BCM11351, BCM28145, and BCM28155 SoCs. |
@@ -7,14 +7,14 @@ BCM11130, BCM11140, BCM11351, BCM28145, and BCM28155 SoCs. | |||
7 | 7 | ||
8 | Required Properties: | 8 | Required Properties: |
9 | 9 | ||
10 | - compatible: Must be "brcm,capri-pinctrl". | 10 | - compatible: Must be "brcm,bcm11351-pinctrl" |
11 | - reg: Base address of the PAD Controller register block and the size | 11 | - reg: Base address of the PAD Controller register block and the size |
12 | of the block. | 12 | of the block. |
13 | 13 | ||
14 | For example, the following is the bare minimum node: | 14 | For example, the following is the bare minimum node: |
15 | 15 | ||
16 | pinctrl@35004800 { | 16 | pinctrl@35004800 { |
17 | compatible = "brcm,capri-pinctrl"; | 17 | compatible = "brcm,bcm11351-pinctrl"; |
18 | reg = <0x35004800 0x430>; | 18 | reg = <0x35004800 0x430>; |
19 | }; | 19 | }; |
20 | 20 | ||
@@ -119,7 +119,7 @@ Optional Properties (for HDMI pins): | |||
119 | Example: | 119 | Example: |
120 | // pin controller node | 120 | // pin controller node |
121 | pinctrl@35004800 { | 121 | pinctrl@35004800 { |
122 | compatible = "brcm,capri-pinctrl"; | 122 | compatible = "brcmbcm11351-pinctrl"; |
123 | reg = <0x35004800 0x430>; | 123 | reg = <0x35004800 0x430>; |
124 | 124 | ||
125 | // pin configuration node | 125 | // pin configuration node |
diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,armada-370-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,armada-370-pinctrl.txt index 01ef408e205f..adda2a8d1d52 100644 --- a/Documentation/devicetree/bindings/pinctrl/marvell,armada-370-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/marvell,armada-370-pinctrl.txt | |||
@@ -5,6 +5,7 @@ part and usage. | |||
5 | 5 | ||
6 | Required properties: | 6 | Required properties: |
7 | - compatible: "marvell,88f6710-pinctrl" | 7 | - compatible: "marvell,88f6710-pinctrl" |
8 | - reg: register specifier of MPP registers | ||
8 | 9 | ||
9 | Available mpp pins/groups and functions: | 10 | Available mpp pins/groups and functions: |
10 | Note: brackets (x) are not part of the mpp name for marvell,function and given | 11 | Note: brackets (x) are not part of the mpp name for marvell,function and given |
diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,armada-375-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,armada-375-pinctrl.txt new file mode 100644 index 000000000000..7de0cda4a379 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/marvell,armada-375-pinctrl.txt | |||
@@ -0,0 +1,82 @@ | |||
1 | * Marvell Armada 375 SoC pinctrl driver for mpp | ||
2 | |||
3 | Please refer to marvell,mvebu-pinctrl.txt in this directory for common binding | ||
4 | part and usage. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible: "marvell,88f6720-pinctrl" | ||
8 | - reg: register specifier of MPP registers | ||
9 | |||
10 | Available mpp pins/groups and functions: | ||
11 | Note: brackets (x) are not part of the mpp name for marvell,function and given | ||
12 | only for more detailed description in this document. | ||
13 | |||
14 | name pins functions | ||
15 | ================================================================================ | ||
16 | mpp0 0 gpio, dev(ad2), spi0(cs1), spi1(cs1) | ||
17 | mpp1 1 gpio, dev(ad3), spi0(mosi), spi1(mosi) | ||
18 | mpp2 2 gpio, dev(ad4), ptp(eventreq), led(c0), audio(sdi) | ||
19 | mpp3 3 gpio, dev(ad5), ptp(triggen), led(p3), audio(mclk) | ||
20 | mpp4 4 gpio, dev(ad6), spi0(miso), spi1(miso) | ||
21 | mpp5 5 gpio, dev(ad7), spi0(cs2), spi1(cs2) | ||
22 | mpp6 6 gpio, dev(ad0), led(p1), audio(rclk) | ||
23 | mpp7 7 gpio, dev(ad1), ptp(clk), led(p2), audio(extclk) | ||
24 | mpp8 8 gpio, dev (bootcs), spi0(cs0), spi1(cs0) | ||
25 | mpp9 9 gpio, nf(wen), spi0(sck), spi1(sck) | ||
26 | mpp10 10 gpio, nf(ren), dram(vttctrl), led(c1) | ||
27 | mpp11 11 gpio, dev(a0), led(c2), audio(sdo) | ||
28 | mpp12 12 gpio, dev(a1), audio(bclk) | ||
29 | mpp13 13 gpio, dev(readyn), pcie0(rstoutn), pcie1(rstoutn) | ||
30 | mpp14 14 gpio, i2c0(sda), uart1(txd) | ||
31 | mpp15 15 gpio, i2c0(sck), uart1(rxd) | ||
32 | mpp16 16 gpio, uart0(txd) | ||
33 | mpp17 17 gpio, uart0(rxd) | ||
34 | mpp18 18 gpio, tdm(intn) | ||
35 | mpp19 19 gpio, tdm(rstn) | ||
36 | mpp20 20 gpio, tdm(pclk) | ||
37 | mpp21 21 gpio, tdm(fsync) | ||
38 | mpp22 22 gpio, tdm(drx) | ||
39 | mpp23 23 gpio, tdm(dtx) | ||
40 | mpp24 24 gpio, led(p0), ge1(rxd0), sd(cmd), uart0(rts) | ||
41 | mpp25 25 gpio, led(p2), ge1(rxd1), sd(d0), uart0(cts) | ||
42 | mpp26 26 gpio, pcie0(clkreq), ge1(rxd2), sd(d2), uart1(rts) | ||
43 | mpp27 27 gpio, pcie1(clkreq), ge1(rxd3), sd(d1), uart1(cts) | ||
44 | mpp28 28 gpio, led(p3), ge1(txctl), sd(clk) | ||
45 | mpp29 29 gpio, pcie1(clkreq), ge1(rxclk), sd(d3) | ||
46 | mpp30 30 gpio, ge1(txd0), spi1(cs0) | ||
47 | mpp31 31 gpio, ge1(txd1), spi1(mosi) | ||
48 | mpp32 32 gpio, ge1(txd2), spi1(sck), ptp(triggen) | ||
49 | mpp33 33 gpio, ge1(txd3), spi1(miso) | ||
50 | mpp34 34 gpio, ge1(txclkout), spi1(sck) | ||
51 | mpp35 35 gpio, ge1(rxctl), spi1(cs1), spi0(cs2) | ||
52 | mpp36 36 gpio, pcie0(clkreq) | ||
53 | mpp37 37 gpio, pcie0(clkreq), tdm(intn), ge(mdc) | ||
54 | mpp38 38 gpio, pcie1(clkreq), ge(mdio) | ||
55 | mpp39 39 gpio, ref(clkout) | ||
56 | mpp40 40 gpio, uart1(txd) | ||
57 | mpp41 41 gpio, uart1(rxd) | ||
58 | mpp42 42 gpio, spi1(cs2), led(c0) | ||
59 | mpp43 43 gpio, sata0(prsnt), dram(vttctrl) | ||
60 | mpp44 44 gpio, sata0(prsnt) | ||
61 | mpp45 45 gpio, spi0(cs2), pcie0(rstoutn) | ||
62 | mpp46 46 gpio, led(p0), ge0(txd0), ge1(txd0) | ||
63 | mpp47 47 gpio, led(p1), ge0(txd1), ge1(txd1) | ||
64 | mpp48 48 gpio, led(p2), ge0(txd2), ge1(txd2) | ||
65 | mpp49 49 gpio, led(p3), ge0(txd3), ge1(txd3) | ||
66 | mpp50 50 gpio, led(c0), ge0(rxd0), ge1(rxd0) | ||
67 | mpp51 51 gpio, led(c1), ge0(rxd1), ge1(rxd1) | ||
68 | mpp52 52 gpio, led(c2), ge0(rxd2), ge1(rxd2) | ||
69 | mpp53 53 gpio, pcie1(rstoutn), ge0(rxd3), ge1(rxd3) | ||
70 | mpp54 54 gpio, pcie0(rstoutn), ge0(rxctl), ge1(rxctl) | ||
71 | mpp55 55 gpio, ge0(rxclk), ge1(rxclk) | ||
72 | mpp56 56 gpio, ge0(txclkout), ge1(txclkout) | ||
73 | mpp57 57 gpio, ge0(txctl), ge1(txctl) | ||
74 | mpp58 58 gpio, led(c0) | ||
75 | mpp59 59 gpio, led(c1) | ||
76 | mpp60 60 gpio, uart1(txd), led(c2) | ||
77 | mpp61 61 gpio, i2c1(sda), uart1(rxd), spi1(cs2), led(p0) | ||
78 | mpp62 62 gpio, i2c1(sck), led(p1) | ||
79 | mpp63 63 gpio, ptp(triggen), led(p2) | ||
80 | mpp64 64 gpio, dram(vttctrl), led(p3) | ||
81 | mpp65 65 gpio, sata1(prsnt) | ||
82 | mpp66 66 gpio, ptp(eventreq), spi1(cs3) | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,armada-38x-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,armada-38x-pinctrl.txt new file mode 100644 index 000000000000..b17c96849fc9 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/marvell,armada-38x-pinctrl.txt | |||
@@ -0,0 +1,80 @@ | |||
1 | * Marvell Armada 380/385 SoC pinctrl driver for mpp | ||
2 | |||
3 | Please refer to marvell,mvebu-pinctrl.txt in this directory for common binding | ||
4 | part and usage. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible: "marvell,88f6810-pinctrl", "marvell,88f6820-pinctrl" or | ||
8 | "marvell,88f6828-pinctrl" depending on the specific variant of the | ||
9 | SoC being used. | ||
10 | - reg: register specifier of MPP registers | ||
11 | |||
12 | Available mpp pins/groups and functions: | ||
13 | Note: brackets (x) are not part of the mpp name for marvell,function and given | ||
14 | only for more detailed description in this document. | ||
15 | |||
16 | name pins functions | ||
17 | ================================================================================ | ||
18 | mpp0 0 gpio, ua0(rxd) | ||
19 | mpp1 1 gpio, ua0(txd) | ||
20 | mpp2 2 gpio, i2c0(sck) | ||
21 | mpp3 3 gpio, i2c0(sda) | ||
22 | mpp4 4 gpio, ge(mdc), ua1(txd), ua0(rts) | ||
23 | mpp5 5 gpio, ge(mdio), ua1(rxd), ua0(cts) | ||
24 | mpp6 6 gpio, ge0(txclkout), ge0(crs), dev(cs3) | ||
25 | mpp7 7 gpio, ge0(txd0), dev(ad9) | ||
26 | mpp8 8 gpio, ge0(txd1), dev(ad10) | ||
27 | mpp9 9 gpio, ge0(txd2), dev(ad11) | ||
28 | mpp10 10 gpio, ge0(txd3), dev(ad12) | ||
29 | mpp11 11 gpio, ge0(txctl), dev(ad13) | ||
30 | mpp12 12 gpio, ge0(rxd0), pcie0(rstout), pcie1(rstout) [1], spi0(cs1), dev(ad14) | ||
31 | mpp13 13 gpio, ge0(rxd1), pcie0(clkreq), pcie1(clkreq) [1], spi0(cs2), dev(ad15) | ||
32 | mpp14 14 gpio, ge0(rxd2), ptp(clk), m(vtt_ctrl), spi0(cs3), dev(wen1) | ||
33 | mpp15 15 gpio, ge0(rxd3), ge(mdc slave), pcie0(rstout), spi0(mosi), pcie1(rstout) [1] | ||
34 | mpp16 16 gpio, ge0(rxctl), ge(mdio slave), m(decc_err), spi0(miso), pcie0(clkreq) | ||
35 | mpp17 17 gpio, ge0(rxclk), ptp(clk), ua1(rxd), spi0(sck), sata1(prsnt) | ||
36 | mpp18 18 gpio, ge0(rxerr), ptp(trig_gen), ua1(txd), spi0(cs0), pcie1(rstout) [1] | ||
37 | mpp19 19 gpio, ge0(col), ptp(event_req), pcie0(clkreq), sata1(prsnt), ua0(cts) | ||
38 | mpp20 20 gpio, ge0(txclk), ptp(clk), pcie1(rstout) [1], sata0(prsnt), ua0(rts) | ||
39 | mpp21 21 gpio, spi0(cs1), ge1(rxd0), sata0(prsnt), sd0(cmd), dev(bootcs) | ||
40 | mpp22 22 gpio, spi0(mosi), dev(ad0) | ||
41 | mpp23 23 gpio, spi0(sck), dev(ad2) | ||
42 | mpp24 24 gpio, spi0(miso), ua0(cts), ua1(rxd), sd0(d4), dev(ready) | ||
43 | mpp25 25 gpio, spi0(cs0), ua0(rts), ua1(txd), sd0(d5), dev(cs0) | ||
44 | mpp26 26 gpio, spi0(cs2), i2c1(sck), sd0(d6), dev(cs1) | ||
45 | mpp27 27 gpio, spi0(cs3), ge1(txclkout), i2c1(sda), sd0(d7), dev(cs2) | ||
46 | mpp28 28 gpio, ge1(txd0), sd0(clk), dev(ad5) | ||
47 | mpp29 29 gpio, ge1(txd1), dev(ale0) | ||
48 | mpp30 30 gpio, ge1(txd2), dev(oen) | ||
49 | mpp31 31 gpio, ge1(txd3), dev(ale1) | ||
50 | mpp32 32 gpio, ge1(txctl), dev(wen0) | ||
51 | mpp33 33 gpio, m(decc_err), dev(ad3) | ||
52 | mpp34 34 gpio, dev(ad1) | ||
53 | mpp35 35 gpio, ref(clk_out1), dev(a1) | ||
54 | mpp36 36 gpio, ptp(trig_gen), dev(a0) | ||
55 | mpp37 37 gpio, ptp(clk), ge1(rxclk), sd0(d3), dev(ad8) | ||
56 | mpp38 38 gpio, ptp(event_req), ge1(rxd1), ref(clk_out0), sd0(d0), dev(ad4) | ||
57 | mpp39 39 gpio, i2c1(sck), ge1(rxd2), ua0(cts), sd0(d1), dev(a2) | ||
58 | mpp40 40 gpio, i2c1(sda), ge1(rxd3), ua0(rts), sd0(d2), dev(ad6) | ||
59 | mpp41 41 gpio, ua1(rxd), ge1(rxctl), ua0(cts), spi1(cs3), dev(burst/last) | ||
60 | mpp42 42 gpio, ua1(txd), ua0(rts), dev(ad7) | ||
61 | mpp43 43 gpio, pcie0(clkreq), m(vtt_ctrl), m(decc_err), pcie0(rstout), dev(clkout) | ||
62 | mpp44 44 gpio, sata0(prsnt), sata1(prsnt), sata2(prsnt) [2], sata3(prsnt) [3], pcie0(rstout) | ||
63 | mpp45 45 gpio, ref(clk_out0), pcie0(rstout), pcie1(rstout) [1], pcie2(rstout), pcie3(rstout) | ||
64 | mpp46 46 gpio, ref(clk_out1), pcie0(rstout), pcie1(rstout) [1], pcie2(rstout), pcie3(rstout) | ||
65 | mpp47 47 gpio, sata0(prsnt), sata1(prsnt), sata2(prsnt) [2], spi1(cs2), sata3(prsnt) [2] | ||
66 | mpp48 48 gpio, sata0(prsnt), m(vtt_ctrl), tdm2c(pclk), audio(mclk), sd0(d4) | ||
67 | mpp49 49 gpio, sata2(prsnt) [2], sata3(prsnt) [2], tdm2c(fsync), audio(lrclk), sd0(d5) | ||
68 | mpp50 50 gpio, pcie0(rstout), pcie1(rstout) [1], tdm2c(drx), audio(extclk), sd0(cmd) | ||
69 | mpp51 51 gpio, tdm2c(dtx), audio(sdo), m(decc_err) | ||
70 | mpp52 52 gpio, pcie0(rstout), pcie1(rstout) [1], tdm2c(intn), audio(sdi), sd0(d6) | ||
71 | mpp53 53 gpio, sata1(prsnt), sata0(prsnt), tdm2c(rstn), audio(bclk), sd0(d7) | ||
72 | mpp54 54 gpio, sata0(prsnt), sata1(prsnt), pcie0(rstout), pcie1(rstout) [1], sd0(d3) | ||
73 | mpp55 55 gpio, ua1(cts), ge(mdio), pcie1(clkreq) [1], spi1(cs1), sd0(d0) | ||
74 | mpp56 56 gpio, ua1(rts), ge(mdc), m(decc_err), spi1(mosi) | ||
75 | mpp57 57 gpio, spi1(sck), sd0(clk) | ||
76 | mpp58 58 gpio, pcie1(clkreq) [1], i2c1(sck), pcie2(clkreq), spi1(miso), sd0(d1) | ||
77 | mpp59 59 gpio, pcie0(rstout), i2c1(sda), pcie1(rstout) [1], spi1(cs0), sd0(d2) | ||
78 | |||
79 | [1]: only available on 88F6820 and 88F6828 | ||
80 | [2]: only available on 88F6828 | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,armada-xp-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,armada-xp-pinctrl.txt index bfa0a2e5e0cb..373dbccd7ab0 100644 --- a/Documentation/devicetree/bindings/pinctrl/marvell,armada-xp-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/marvell,armada-xp-pinctrl.txt | |||
@@ -6,6 +6,7 @@ part and usage. | |||
6 | Required properties: | 6 | Required properties: |
7 | - compatible: "marvell,mv78230-pinctrl", "marvell,mv78260-pinctrl", | 7 | - compatible: "marvell,mv78230-pinctrl", "marvell,mv78260-pinctrl", |
8 | "marvell,mv78460-pinctrl" | 8 | "marvell,mv78460-pinctrl" |
9 | - reg: register specifier of MPP registers | ||
9 | 10 | ||
10 | This driver supports all Armada XP variants, i.e. mv78230, mv78260, and mv78460. | 11 | This driver supports all Armada XP variants, i.e. mv78230, mv78260, and mv78460. |
11 | 12 | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,dove-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,dove-pinctrl.txt index 50ec3512a292..cf52477cc7ee 100644 --- a/Documentation/devicetree/bindings/pinctrl/marvell,dove-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/marvell,dove-pinctrl.txt | |||
@@ -6,6 +6,7 @@ part and usage. | |||
6 | Required properties: | 6 | Required properties: |
7 | - compatible: "marvell,dove-pinctrl" | 7 | - compatible: "marvell,dove-pinctrl" |
8 | - clocks: (optional) phandle of pdma clock | 8 | - clocks: (optional) phandle of pdma clock |
9 | - reg: register specifiers of MPP, MPP4, and PMU MPP registers | ||
9 | 10 | ||
10 | Available mpp pins/groups and functions: | 11 | Available mpp pins/groups and functions: |
11 | Note: brackets (x) are not part of the mpp name for marvell,function and given | 12 | Note: brackets (x) are not part of the mpp name for marvell,function and given |
diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,kirkwood-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,kirkwood-pinctrl.txt index 95daf6335c37..730444a9a4de 100644 --- a/Documentation/devicetree/bindings/pinctrl/marvell,kirkwood-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/marvell,kirkwood-pinctrl.txt | |||
@@ -8,6 +8,7 @@ Required properties: | |||
8 | "marvell,88f6190-pinctrl", "marvell,88f6192-pinctrl", | 8 | "marvell,88f6190-pinctrl", "marvell,88f6192-pinctrl", |
9 | "marvell,88f6281-pinctrl", "marvell,88f6282-pinctrl" | 9 | "marvell,88f6281-pinctrl", "marvell,88f6282-pinctrl" |
10 | "marvell,98dx4122-pinctrl" | 10 | "marvell,98dx4122-pinctrl" |
11 | - reg: register specifier of MPP registers | ||
11 | 12 | ||
12 | This driver supports all kirkwood variants, i.e. 88f6180, 88f619x, and 88f628x. | 13 | This driver supports all kirkwood variants, i.e. 88f6180, 88f619x, and 88f628x. |
13 | It also support the 88f6281-based variant in the 98dx412x Bobcat SoCs. | 14 | It also support the 88f6281-based variant in the 98dx412x Bobcat SoCs. |
diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt index 0a26c3aa4e6d..0c09f4eb2af0 100644 --- a/Documentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt | |||
@@ -37,7 +37,7 @@ uart1: serial@12100 { | |||
37 | 37 | ||
38 | pinctrl: pinctrl@d0200 { | 38 | pinctrl: pinctrl@d0200 { |
39 | compatible = "marvell,dove-pinctrl"; | 39 | compatible = "marvell,dove-pinctrl"; |
40 | reg = <0xd0200 0x20>; | 40 | reg = <0xd0200 0x14>, <0xd0440 0x04>, <0xd802c 0x08>; |
41 | 41 | ||
42 | pmx_uart1_sw: pmx-uart1-sw { | 42 | pmx_uart1_sw: pmx-uart1-sw { |
43 | marvell,pins = "mpp_uart1"; | 43 | marvell,pins = "mpp_uart1"; |
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt index bc0dfdfdb148..66dcaa9efd74 100644 --- a/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt | |||
@@ -63,6 +63,13 @@ Optional properties: | |||
63 | /* input, enable bits, disable bits, mask */ | 63 | /* input, enable bits, disable bits, mask */ |
64 | pinctrl-single,input-schmitt-enable = <0x30 0x40 0 0x70>; | 64 | pinctrl-single,input-schmitt-enable = <0x30 0x40 0 0x70>; |
65 | 65 | ||
66 | - pinctrl-single,low-power-mode : array of value that are used to configure | ||
67 | low power mode of this pin. For some silicons, the low power mode will | ||
68 | control the output of the pin when the pad including the pin enter low | ||
69 | power mode. | ||
70 | /* low power mode value, mask */ | ||
71 | pinctrl-single,low-power-mode = <0x288 0x388>; | ||
72 | |||
66 | - pinctrl-single,gpio-range : list of value that are used to configure a GPIO | 73 | - pinctrl-single,gpio-range : list of value that are used to configure a GPIO |
67 | range. They're value of subnode phandle, pin base in pinctrl device, pin | 74 | range. They're value of subnode phandle, pin base in pinctrl device, pin |
68 | number in this range, GPIO function value of this GPIO range. | 75 | number in this range, GPIO function value of this GPIO range. |
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-st.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-st.txt index 05bf82a07dfd..4bd5be0e5e7d 100644 --- a/Documentation/devicetree/bindings/pinctrl/pinctrl-st.txt +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-st.txt | |||
@@ -11,18 +11,68 @@ Pull Up (PU) are driven by the related PIO block. | |||
11 | ST pinctrl driver controls PIO multiplexing block and also interacts with | 11 | ST pinctrl driver controls PIO multiplexing block and also interacts with |
12 | gpio driver to configure a pin. | 12 | gpio driver to configure a pin. |
13 | 13 | ||
14 | Required properties: (PIO multiplexing block) | 14 | GPIO bank can have one of the two possible types of interrupt-wirings. |
15 | |||
16 | First type is via irqmux, single interrupt is used by multiple gpio banks. This | ||
17 | reduces number of overall interrupts numbers required. All these banks belong to | ||
18 | a single pincontroller. | ||
19 | _________ | ||
20 | | |----> [gpio-bank (n) ] | ||
21 | | |----> [gpio-bank (n + 1)] | ||
22 | [irqN]-- | irq-mux |----> [gpio-bank (n + 2)] | ||
23 | | |----> [gpio-bank (... )] | ||
24 | |_________|----> [gpio-bank (n + 7)] | ||
25 | |||
26 | Second type has a dedicated interrupt per gpio bank. | ||
27 | |||
28 | [irqN]----> [gpio-bank (n)] | ||
29 | |||
30 | |||
31 | Pin controller node: | ||
32 | Required properties: | ||
15 | - compatible : should be "st,<SOC>-<pio-block>-pinctrl" | 33 | - compatible : should be "st,<SOC>-<pio-block>-pinctrl" |
16 | like st,stih415-sbc-pinctrl, st,stih415-front-pinctrl and so on. | 34 | like st,stih415-sbc-pinctrl, st,stih415-front-pinctrl and so on. |
17 | - gpio-controller : Indicates this device is a GPIO controller | 35 | - st,syscfg : Should be a phandle of the syscfg node. |
18 | - #gpio-cells : Should be one. The first cell is the pin number. | ||
19 | - st,retime-pin-mask : Should be mask to specify which pins can be retimed. | 36 | - st,retime-pin-mask : Should be mask to specify which pins can be retimed. |
20 | If the property is not present, it is assumed that all the pins in the | 37 | If the property is not present, it is assumed that all the pins in the |
21 | bank are capable of retiming. Retiming is mainly used to improve the | 38 | bank are capable of retiming. Retiming is mainly used to improve the |
22 | IO timing margins of external synchronous interfaces. | 39 | IO timing margins of external synchronous interfaces. |
23 | - st,bank-name : Should be a name string for this bank as | 40 | - ranges : defines mapping between pin controller node (parent) to gpio-bank |
24 | specified in datasheet. | 41 | node (children). |
25 | - st,syscfg : Should be a phandle of the syscfg node. | 42 | |
43 | Optional properties: | ||
44 | - interrupts : Interrupt number of the irqmux. If the interrupt is shared | ||
45 | with other gpio banks via irqmux. | ||
46 | a irqline and gpio banks. | ||
47 | - reg : irqmux memory resource. If irqmux is present. | ||
48 | - reg-names : irqmux resource should be named as "irqmux". | ||
49 | |||
50 | GPIO controller/bank node. | ||
51 | Required properties: | ||
52 | - gpio-controller : Indicates this device is a GPIO controller | ||
53 | - #gpio-cells : Should be one. The first cell is the pin number. | ||
54 | - st,bank-name : Should be a name string for this bank as specified in | ||
55 | datasheet. | ||
56 | |||
57 | Optional properties: | ||
58 | - interrupts : Interrupt number for this gpio bank. If there is a dedicated | ||
59 | interrupt wired up for this gpio bank. | ||
60 | |||
61 | - interrupt-controller : Indicates this device is a interrupt controller. GPIO | ||
62 | bank can be an interrupt controller iff one of the interrupt type either via | ||
63 | irqmux or a dedicated interrupt per bank is specified. | ||
64 | |||
65 | - #interrupt-cells: the value of this property should be 2. | ||
66 | - First Cell: represents the external gpio interrupt number local to the | ||
67 | gpio interrupt space of the controller. | ||
68 | - Second Cell: flags to identify the type of the interrupt | ||
69 | - 1 = rising edge triggered | ||
70 | - 2 = falling edge triggered | ||
71 | - 3 = rising and falling edge triggered | ||
72 | - 4 = high level triggered | ||
73 | - 8 = low level triggered | ||
74 | for related macros look in: | ||
75 | include/dt-bindings/interrupt-controller/irq.h | ||
26 | 76 | ||
27 | Example: | 77 | Example: |
28 | pin-controller-sbc { | 78 | pin-controller-sbc { |
@@ -30,10 +80,17 @@ Example: | |||
30 | #size-cells = <1>; | 80 | #size-cells = <1>; |
31 | compatible = "st,stih415-sbc-pinctrl"; | 81 | compatible = "st,stih415-sbc-pinctrl"; |
32 | st,syscfg = <&syscfg_sbc>; | 82 | st,syscfg = <&syscfg_sbc>; |
83 | reg = <0xfe61f080 0x4>; | ||
84 | reg-names = "irqmux"; | ||
85 | interrupts = <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>; | ||
86 | interrupts-names = "irqmux"; | ||
33 | ranges = <0 0xfe610000 0x5000>; | 87 | ranges = <0 0xfe610000 0x5000>; |
88 | |||
34 | PIO0: gpio@fe610000 { | 89 | PIO0: gpio@fe610000 { |
35 | gpio-controller; | 90 | gpio-controller; |
36 | #gpio-cells = <1>; | 91 | #gpio-cells = <1>; |
92 | interrupt-controller; | ||
93 | #interrupt-cells = <2>; | ||
37 | reg = <0 0x100>; | 94 | reg = <0 0x100>; |
38 | st,bank-name = "PIO0"; | 95 | st,bank-name = "PIO0"; |
39 | }; | 96 | }; |
@@ -105,6 +162,10 @@ pin-controller { | |||
105 | 162 | ||
106 | sdhci0:sdhci@fe810000{ | 163 | sdhci0:sdhci@fe810000{ |
107 | ... | 164 | ... |
165 | interrupt-parent = <&PIO3>; | ||
166 | #interrupt-cells = <2>; | ||
167 | interrupts = <3 IRQ_TYPE_LEVEL_HIGH>; /* Interrupt line via PIO3-3 */ | ||
168 | interrupts-names = "card-detect"; | ||
108 | pinctrl-names = "default"; | 169 | pinctrl-names = "default"; |
109 | pinctrl-0 = <&pinctrl_mmc>; | 170 | pinctrl-0 = <&pinctrl_mmc>; |
110 | }; | 171 | }; |
diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt index 4c352be5dd61..9fb89e3f61ea 100644 --- a/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | Qualcomm MSM8974 TLMM block | 1 | Qualcomm MSM8974 TLMM block |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: "qcom,msm8x74-pinctrl" | 4 | - compatible: "qcom,msm8974-pinctrl" |
5 | - reg: Should be the base address and length of the TLMM block. | 5 | - reg: Should be the base address and length of the TLMM block. |
6 | - interrupts: Should be the parent IRQ of the TLMM block. | 6 | - interrupts: Should be the parent IRQ of the TLMM block. |
7 | - interrupt-controller: Marks the device node as an interrupt controller. | 7 | - interrupt-controller: Marks the device node as an interrupt controller. |
@@ -42,14 +42,14 @@ Non-empty subnodes must specify the 'pins' property. | |||
42 | Note that not all properties are valid for all pins. | 42 | Note that not all properties are valid for all pins. |
43 | 43 | ||
44 | 44 | ||
45 | Valid values for qcom,pins are: | 45 | Valid values for pins are: |
46 | gpio0-gpio145 | 46 | gpio0-gpio145 |
47 | Supports mux, bias and drive-strength | 47 | Supports mux, bias and drive-strength |
48 | 48 | ||
49 | sdc1_clk, sdc1_cmd, sdc1_data, sdc2_clk, sdc2_cmd, sdc2_data | 49 | sdc1_clk, sdc1_cmd, sdc1_data, sdc2_clk, sdc2_cmd, sdc2_data |
50 | Supports bias and drive-strength | 50 | Supports bias and drive-strength |
51 | 51 | ||
52 | Valid values for qcom,function are: | 52 | Valid values for function are: |
53 | blsp_i2c2, blsp_i2c6, blsp_i2c11, blsp_spi1, blsp_uart2, blsp_uart8, slimbus | 53 | blsp_i2c2, blsp_i2c6, blsp_i2c11, blsp_spi1, blsp_uart2, blsp_uart8, slimbus |
54 | 54 | ||
55 | (Note that this is not yet the complete list of functions) | 55 | (Note that this is not yet the complete list of functions) |
@@ -73,18 +73,18 @@ Example: | |||
73 | 73 | ||
74 | uart2_default: uart2_default { | 74 | uart2_default: uart2_default { |
75 | mux { | 75 | mux { |
76 | qcom,pins = "gpio4", "gpio5"; | 76 | pins = "gpio4", "gpio5"; |
77 | qcom,function = "blsp_uart2"; | 77 | function = "blsp_uart2"; |
78 | }; | 78 | }; |
79 | 79 | ||
80 | tx { | 80 | tx { |
81 | qcom,pins = "gpio4"; | 81 | pins = "gpio4"; |
82 | drive-strength = <4>; | 82 | drive-strength = <4>; |
83 | bias-disable; | 83 | bias-disable; |
84 | }; | 84 | }; |
85 | 85 | ||
86 | rx { | 86 | rx { |
87 | qcom,pins = "gpio5"; | 87 | pins = "gpio5"; |
88 | drive-strength = <2>; | 88 | drive-strength = <2>; |
89 | bias-pull-up; | 89 | bias-pull-up; |
90 | }; | 90 | }; |
diff --git a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt index 257677de3e6b..2b32783ba821 100644 --- a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt | |||
@@ -16,6 +16,7 @@ Required Properties: | |||
16 | - "samsung,exynos4210-pinctrl": for Exynos4210 compatible pin-controller. | 16 | - "samsung,exynos4210-pinctrl": for Exynos4210 compatible pin-controller. |
17 | - "samsung,exynos4x12-pinctrl": for Exynos4x12 compatible pin-controller. | 17 | - "samsung,exynos4x12-pinctrl": for Exynos4x12 compatible pin-controller. |
18 | - "samsung,exynos5250-pinctrl": for Exynos5250 compatible pin-controller. | 18 | - "samsung,exynos5250-pinctrl": for Exynos5250 compatible pin-controller. |
19 | - "samsung,exynos5260-pinctrl": for Exynos5260 compatible pin-controller. | ||
19 | - "samsung,exynos5420-pinctrl": for Exynos5420 compatible pin-controller. | 20 | - "samsung,exynos5420-pinctrl": for Exynos5420 compatible pin-controller. |
20 | 21 | ||
21 | - reg: Base address of the pin controller hardware module and length of | 22 | - reg: Base address of the pin controller hardware module and length of |
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/l2cache.txt b/Documentation/devicetree/bindings/powerpc/fsl/l2cache.txt new file mode 100644 index 000000000000..c41b2187eaa8 --- /dev/null +++ b/Documentation/devicetree/bindings/powerpc/fsl/l2cache.txt | |||
@@ -0,0 +1,23 @@ | |||
1 | Freescale L2 Cache Controller | ||
2 | |||
3 | L2 cache is present in Freescale's QorIQ and QorIQ Qonverge platforms. | ||
4 | The cache bindings explained below are ePAPR compliant | ||
5 | |||
6 | Required Properties: | ||
7 | |||
8 | - compatible : Should include "fsl,chip-l2-cache-controller" and "cache" | ||
9 | where chip is the processor (bsc9132, npc8572 etc.) | ||
10 | - reg : Address and size of L2 cache controller registers | ||
11 | - cache-size : Size of the entire L2 cache | ||
12 | - interrupts : Error interrupt of L2 controller | ||
13 | - cache-line-size : Size of L2 cache lines | ||
14 | |||
15 | Example: | ||
16 | |||
17 | L2: l2-cache-controller@20000 { | ||
18 | compatible = "fsl,bsc9132-l2-cache-controller", "cache"; | ||
19 | reg = <0x20000 0x1000>; | ||
20 | cache-line-size = <32>; // 32 bytes | ||
21 | cache-size = <0x40000>; // L2,256K | ||
22 | interrupts = <16 2 1 0>; | ||
23 | }; | ||
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/mem-ctrlr.txt b/Documentation/devicetree/bindings/powerpc/fsl/mem-ctrlr.txt new file mode 100644 index 000000000000..f87856faf1ab --- /dev/null +++ b/Documentation/devicetree/bindings/powerpc/fsl/mem-ctrlr.txt | |||
@@ -0,0 +1,27 @@ | |||
1 | Freescale DDR memory controller | ||
2 | |||
3 | Properties: | ||
4 | |||
5 | - compatible : Should include "fsl,chip-memory-controller" where | ||
6 | chip is the processor (bsc9132, mpc8572 etc.), or | ||
7 | "fsl,qoriq-memory-controller". | ||
8 | - reg : Address and size of DDR controller registers | ||
9 | - interrupts : Error interrupt of DDR controller | ||
10 | |||
11 | Example 1: | ||
12 | |||
13 | memory-controller@2000 { | ||
14 | compatible = "fsl,bsc9132-memory-controller"; | ||
15 | reg = <0x2000 0x1000>; | ||
16 | interrupts = <16 2 1 8>; | ||
17 | }; | ||
18 | |||
19 | |||
20 | Example 2: | ||
21 | |||
22 | ddr1: memory-controller@8000 { | ||
23 | compatible = "fsl,qoriq-memory-controller-v4.7", | ||
24 | "fsl,qoriq-memory-controller"; | ||
25 | reg = <0x8000 0x1000>; | ||
26 | interrupts = <16 2 1 23>; | ||
27 | }; | ||
diff --git a/Documentation/devicetree/bindings/regulator/gpio-regulator.txt b/Documentation/devicetree/bindings/regulator/gpio-regulator.txt index 63c659800c03..e5cac1e0ca8a 100644 --- a/Documentation/devicetree/bindings/regulator/gpio-regulator.txt +++ b/Documentation/devicetree/bindings/regulator/gpio-regulator.txt | |||
@@ -8,8 +8,12 @@ Required properties: | |||
8 | Optional properties: | 8 | Optional properties: |
9 | - enable-gpio : GPIO to use to enable/disable the regulator. | 9 | - enable-gpio : GPIO to use to enable/disable the regulator. |
10 | - gpios : GPIO group used to control voltage. | 10 | - gpios : GPIO group used to control voltage. |
11 | - gpios-states : gpios pin's initial states array. 0: LOW, 1: HIGH. | ||
12 | defualt is LOW if nothing is specified. | ||
11 | - startup-delay-us : Startup time in microseconds. | 13 | - startup-delay-us : Startup time in microseconds. |
12 | - enable-active-high : Polarity of GPIO is active high (default is low). | 14 | - enable-active-high : Polarity of GPIO is active high (default is low). |
15 | - regulator-type : Specifies what is being regulated, must be either | ||
16 | "voltage" or "current", defaults to current. | ||
13 | 17 | ||
14 | Any property defined as part of the core regulator binding defined in | 18 | Any property defined as part of the core regulator binding defined in |
15 | regulator.txt can also be used. | 19 | regulator.txt can also be used. |
diff --git a/Documentation/devicetree/bindings/regulator/pfuze100.txt b/Documentation/devicetree/bindings/regulator/pfuze100.txt index fc989b2e8057..34ef5d16d0f1 100644 --- a/Documentation/devicetree/bindings/regulator/pfuze100.txt +++ b/Documentation/devicetree/bindings/regulator/pfuze100.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | PFUZE100 family of regulators | 1 | PFUZE100 family of regulators |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: "fsl,pfuze100" | 4 | - compatible: "fsl,pfuze100" or "fsl,pfuze200" |
5 | - reg: I2C slave address | 5 | - reg: I2C slave address |
6 | 6 | ||
7 | Required child node: | 7 | Required child node: |
@@ -10,11 +10,14 @@ Required child node: | |||
10 | Documentation/devicetree/bindings/regulator/regulator.txt. | 10 | Documentation/devicetree/bindings/regulator/regulator.txt. |
11 | 11 | ||
12 | The valid names for regulators are: | 12 | The valid names for regulators are: |
13 | --PFUZE100 | ||
13 | sw1ab,sw1c,sw2,sw3a,sw3b,sw4,swbst,vsnvs,vrefddr,vgen1~vgen6 | 14 | sw1ab,sw1c,sw2,sw3a,sw3b,sw4,swbst,vsnvs,vrefddr,vgen1~vgen6 |
15 | --PFUZE200 | ||
16 | sw1ab,sw2,sw3a,sw3b,swbst,vsnvs,vrefddr,vgen1~vgen6 | ||
14 | 17 | ||
15 | Each regulator is defined using the standard binding for regulators. | 18 | Each regulator is defined using the standard binding for regulators. |
16 | 19 | ||
17 | Example: | 20 | Example 1: PFUZE100 |
18 | 21 | ||
19 | pmic: pfuze100@08 { | 22 | pmic: pfuze100@08 { |
20 | compatible = "fsl,pfuze100"; | 23 | compatible = "fsl,pfuze100"; |
@@ -113,3 +116,92 @@ Example: | |||
113 | }; | 116 | }; |
114 | }; | 117 | }; |
115 | }; | 118 | }; |
119 | |||
120 | |||
121 | Example 2: PFUZE200 | ||
122 | |||
123 | pmic: pfuze200@08 { | ||
124 | compatible = "fsl,pfuze200"; | ||
125 | reg = <0x08>; | ||
126 | |||
127 | regulators { | ||
128 | sw1a_reg: sw1ab { | ||
129 | regulator-min-microvolt = <300000>; | ||
130 | regulator-max-microvolt = <1875000>; | ||
131 | regulator-boot-on; | ||
132 | regulator-always-on; | ||
133 | regulator-ramp-delay = <6250>; | ||
134 | }; | ||
135 | |||
136 | sw2_reg: sw2 { | ||
137 | regulator-min-microvolt = <800000>; | ||
138 | regulator-max-microvolt = <3300000>; | ||
139 | regulator-boot-on; | ||
140 | regulator-always-on; | ||
141 | }; | ||
142 | |||
143 | sw3a_reg: sw3a { | ||
144 | regulator-min-microvolt = <400000>; | ||
145 | regulator-max-microvolt = <1975000>; | ||
146 | regulator-boot-on; | ||
147 | regulator-always-on; | ||
148 | }; | ||
149 | |||
150 | sw3b_reg: sw3b { | ||
151 | regulator-min-microvolt = <400000>; | ||
152 | regulator-max-microvolt = <1975000>; | ||
153 | regulator-boot-on; | ||
154 | regulator-always-on; | ||
155 | }; | ||
156 | |||
157 | swbst_reg: swbst { | ||
158 | regulator-min-microvolt = <5000000>; | ||
159 | regulator-max-microvolt = <5150000>; | ||
160 | }; | ||
161 | |||
162 | snvs_reg: vsnvs { | ||
163 | regulator-min-microvolt = <1000000>; | ||
164 | regulator-max-microvolt = <3000000>; | ||
165 | regulator-boot-on; | ||
166 | regulator-always-on; | ||
167 | }; | ||
168 | |||
169 | vref_reg: vrefddr { | ||
170 | regulator-boot-on; | ||
171 | regulator-always-on; | ||
172 | }; | ||
173 | |||
174 | vgen1_reg: vgen1 { | ||
175 | regulator-min-microvolt = <800000>; | ||
176 | regulator-max-microvolt = <1550000>; | ||
177 | }; | ||
178 | |||
179 | vgen2_reg: vgen2 { | ||
180 | regulator-min-microvolt = <800000>; | ||
181 | regulator-max-microvolt = <1550000>; | ||
182 | }; | ||
183 | |||
184 | vgen3_reg: vgen3 { | ||
185 | regulator-min-microvolt = <1800000>; | ||
186 | regulator-max-microvolt = <3300000>; | ||
187 | }; | ||
188 | |||
189 | vgen4_reg: vgen4 { | ||
190 | regulator-min-microvolt = <1800000>; | ||
191 | regulator-max-microvolt = <3300000>; | ||
192 | regulator-always-on; | ||
193 | }; | ||
194 | |||
195 | vgen5_reg: vgen5 { | ||
196 | regulator-min-microvolt = <1800000>; | ||
197 | regulator-max-microvolt = <3300000>; | ||
198 | regulator-always-on; | ||
199 | }; | ||
200 | |||
201 | vgen6_reg: vgen6 { | ||
202 | regulator-min-microvolt = <1800000>; | ||
203 | regulator-max-microvolt = <3300000>; | ||
204 | regulator-always-on; | ||
205 | }; | ||
206 | }; | ||
207 | }; | ||
diff --git a/Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt b/Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt index fc6b38f035bd..d290988ed975 100644 --- a/Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt +++ b/Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt | |||
@@ -69,13 +69,16 @@ sub-node should be of the format as listed below. | |||
69 | }; | 69 | }; |
70 | }; | 70 | }; |
71 | The above regulator entries are defined in regulator bindings documentation | 71 | The above regulator entries are defined in regulator bindings documentation |
72 | except op_mode description. | 72 | except these properties: |
73 | - op_mode: describes the different operating modes of the LDO's with | 73 | - op_mode: describes the different operating modes of the LDO's with |
74 | power mode change in SOC. The different possible values are, | 74 | power mode change in SOC. The different possible values are, |
75 | 0 - always off mode | 75 | 0 - always off mode |
76 | 1 - on in normal mode | 76 | 1 - on in normal mode |
77 | 2 - low power mode | 77 | 2 - low power mode |
78 | 3 - suspend mode | 78 | 3 - suspend mode |
79 | - s5m8767,pmic-ext-control-gpios: (optional) GPIO specifier for one | ||
80 | GPIO controlling this regulator (enable/disable); This is | ||
81 | valid only for buck9. | ||
79 | 82 | ||
80 | The following are the names of the regulators that the s5m8767 pmic block | 83 | The following are the names of the regulators that the s5m8767 pmic block |
81 | supports. Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number | 84 | supports. Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number |
@@ -148,5 +151,13 @@ Example: | |||
148 | regulator-always-on; | 151 | regulator-always-on; |
149 | regulator-boot-on; | 152 | regulator-boot-on; |
150 | }; | 153 | }; |
154 | |||
155 | vemmc_reg: BUCK9 { | ||
156 | regulator-name = "VMEM_VDD_2.8V"; | ||
157 | regulator-min-microvolt = <2800000>; | ||
158 | regulator-max-microvolt = <2800000>; | ||
159 | op_mode = <3>; /* Standby Mode */ | ||
160 | s5m8767,pmic-ext-control-gpios = <&gpk0 2 0>; | ||
161 | }; | ||
151 | }; | 162 | }; |
152 | }; | 163 | }; |
diff --git a/Documentation/devicetree/bindings/regulator/ti-abb-regulator.txt b/Documentation/devicetree/bindings/regulator/ti-abb-regulator.txt index 2e57a33e9029..c58db75f959e 100644 --- a/Documentation/devicetree/bindings/regulator/ti-abb-regulator.txt +++ b/Documentation/devicetree/bindings/regulator/ti-abb-regulator.txt | |||
@@ -4,10 +4,14 @@ Required Properties: | |||
4 | - compatible: Should be one of: | 4 | - compatible: Should be one of: |
5 | - "ti,abb-v1" for older SoCs like OMAP3 | 5 | - "ti,abb-v1" for older SoCs like OMAP3 |
6 | - "ti,abb-v2" for newer SoCs like OMAP4, OMAP5 | 6 | - "ti,abb-v2" for newer SoCs like OMAP4, OMAP5 |
7 | - "ti,abb-v3" for a generic definition where setup and control registers are | ||
8 | provided (example: DRA7) | ||
7 | - reg: Address and length of the register set for the device. It contains | 9 | - reg: Address and length of the register set for the device. It contains |
8 | the information of registers in the same order as described by reg-names | 10 | the information of registers in the same order as described by reg-names |
9 | - reg-names: Should contain the reg names | 11 | - reg-names: Should contain the reg names |
10 | - "base-address" - contains base address of ABB module | 12 | - "base-address" - contains base address of ABB module (ti,abb-v1,ti,abb-v2) |
13 | - "control-address" - contains control register address of ABB module (ti,abb-v3) | ||
14 | - "setup-address" - contains setup register address of ABB module (ti,abb-v3) | ||
11 | - "int-address" - contains address of interrupt register for ABB module | 15 | - "int-address" - contains address of interrupt register for ABB module |
12 | (also see Optional properties) | 16 | (also see Optional properties) |
13 | - #address-cell: should be 0 | 17 | - #address-cell: should be 0 |
diff --git a/Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt b/Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt new file mode 100644 index 000000000000..3da0ebdba8d9 --- /dev/null +++ b/Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt | |||
@@ -0,0 +1,133 @@ | |||
1 | *** Reserved memory regions *** | ||
2 | |||
3 | Reserved memory is specified as a node under the /reserved-memory node. | ||
4 | The operating system shall exclude reserved memory from normal usage | ||
5 | one can create child nodes describing particular reserved (excluded from | ||
6 | normal use) memory regions. Such memory regions are usually designed for | ||
7 | the special usage by various device drivers. | ||
8 | |||
9 | Parameters for each memory region can be encoded into the device tree | ||
10 | with the following nodes: | ||
11 | |||
12 | /reserved-memory node | ||
13 | --------------------- | ||
14 | #address-cells, #size-cells (required) - standard definition | ||
15 | - Should use the same values as the root node | ||
16 | ranges (required) - standard definition | ||
17 | - Should be empty | ||
18 | |||
19 | /reserved-memory/ child nodes | ||
20 | ----------------------------- | ||
21 | Each child of the reserved-memory node specifies one or more regions of | ||
22 | reserved memory. Each child node may either use a 'reg' property to | ||
23 | specify a specific range of reserved memory, or a 'size' property with | ||
24 | optional constraints to request a dynamically allocated block of memory. | ||
25 | |||
26 | Following the generic-names recommended practice, node names should | ||
27 | reflect the purpose of the node (ie. "framebuffer" or "dma-pool"). Unit | ||
28 | address (@<address>) should be appended to the name if the node is a | ||
29 | static allocation. | ||
30 | |||
31 | Properties: | ||
32 | Requires either a) or b) below. | ||
33 | a) static allocation | ||
34 | reg (required) - standard definition | ||
35 | b) dynamic allocation | ||
36 | size (required) - length based on parent's #size-cells | ||
37 | - Size in bytes of memory to reserve. | ||
38 | alignment (optional) - length based on parent's #size-cells | ||
39 | - Address boundary for alignment of allocation. | ||
40 | alloc-ranges (optional) - prop-encoded-array (address, length pairs). | ||
41 | - Specifies regions of memory that are | ||
42 | acceptable to allocate from. | ||
43 | |||
44 | If both reg and size are present, then the reg property takes precedence | ||
45 | and size is ignored. | ||
46 | |||
47 | Additional properties: | ||
48 | compatible (optional) - standard definition | ||
49 | - may contain the following strings: | ||
50 | - shared-dma-pool: This indicates a region of memory meant to be | ||
51 | used as a shared pool of DMA buffers for a set of devices. It can | ||
52 | be used by an operating system to instanciate the necessary pool | ||
53 | management subsystem if necessary. | ||
54 | - vendor specific string in the form <vendor>,[<device>-]<usage> | ||
55 | no-map (optional) - empty property | ||
56 | - Indicates the operating system must not create a virtual mapping | ||
57 | of the region as part of its standard mapping of system memory, | ||
58 | nor permit speculative access to it under any circumstances other | ||
59 | than under the control of the device driver using the region. | ||
60 | reusable (optional) - empty property | ||
61 | - The operating system can use the memory in this region with the | ||
62 | limitation that the device driver(s) owning the region need to be | ||
63 | able to reclaim it back. Typically that means that the operating | ||
64 | system can use that region to store volatile or cached data that | ||
65 | can be otherwise regenerated or migrated elsewhere. | ||
66 | |||
67 | Linux implementation note: | ||
68 | - If a "linux,cma-default" property is present, then Linux will use the | ||
69 | region for the default pool of the contiguous memory allocator. | ||
70 | |||
71 | Device node references to reserved memory | ||
72 | ----------------------------------------- | ||
73 | Regions in the /reserved-memory node may be referenced by other device | ||
74 | nodes by adding a memory-region property to the device node. | ||
75 | |||
76 | memory-region (optional) - phandle, specifier pairs to children of /reserved-memory | ||
77 | |||
78 | Example | ||
79 | ------- | ||
80 | This example defines 3 contiguous regions are defined for Linux kernel: | ||
81 | one default of all device drivers (named linux,cma@72000000 and 64MiB in size), | ||
82 | one dedicated to the framebuffer device (named framebuffer@78000000, 8MiB), and | ||
83 | one for multimedia processing (named multimedia-memory@77000000, 64MiB). | ||
84 | |||
85 | / { | ||
86 | #address-cells = <1>; | ||
87 | #size-cells = <1>; | ||
88 | |||
89 | memory { | ||
90 | reg = <0x40000000 0x40000000>; | ||
91 | }; | ||
92 | |||
93 | reserved-memory { | ||
94 | #address-cells = <1>; | ||
95 | #size-cells = <1>; | ||
96 | ranges; | ||
97 | |||
98 | /* global autoconfigured region for contiguous allocations */ | ||
99 | linux,cma { | ||
100 | compatible = "shared-dma-pool"; | ||
101 | reusable; | ||
102 | size = <0x4000000>; | ||
103 | alignment = <0x2000>; | ||
104 | linux,cma-default; | ||
105 | }; | ||
106 | |||
107 | display_reserved: framebuffer@78000000 { | ||
108 | reg = <0x78000000 0x800000>; | ||
109 | }; | ||
110 | |||
111 | multimedia_reserved: multimedia@77000000 { | ||
112 | compatible = "acme,multimedia-memory"; | ||
113 | reg = <0x77000000 0x4000000>; | ||
114 | }; | ||
115 | }; | ||
116 | |||
117 | /* ... */ | ||
118 | |||
119 | fb0: video@12300000 { | ||
120 | memory-region = <&display_reserved>; | ||
121 | /* ... */ | ||
122 | }; | ||
123 | |||
124 | scaler: scaler@12500000 { | ||
125 | memory-region = <&multimedia_reserved>; | ||
126 | /* ... */ | ||
127 | }; | ||
128 | |||
129 | codec: codec@12600000 { | ||
130 | memory-region = <&multimedia_reserved>; | ||
131 | /* ... */ | ||
132 | }; | ||
133 | }; | ||
diff --git a/Documentation/devicetree/bindings/serial/efm32-uart.txt b/Documentation/devicetree/bindings/serial/efm32-uart.txt index 8e080b893b49..1984bdfbd545 100644 --- a/Documentation/devicetree/bindings/serial/efm32-uart.txt +++ b/Documentation/devicetree/bindings/serial/efm32-uart.txt | |||
@@ -6,7 +6,7 @@ Required properties: | |||
6 | - interrupts : Should contain uart interrupt | 6 | - interrupts : Should contain uart interrupt |
7 | 7 | ||
8 | Optional properties: | 8 | Optional properties: |
9 | - location : Decides the location of the USART I/O pins. | 9 | - efm32,location : Decides the location of the USART I/O pins. |
10 | Allowed range : [0 .. 5] | 10 | Allowed range : [0 .. 5] |
11 | Default: 0 | 11 | Default: 0 |
12 | 12 | ||
@@ -16,5 +16,5 @@ uart@0x4000c400 { | |||
16 | compatible = "efm32,uart"; | 16 | compatible = "efm32,uart"; |
17 | reg = <0x4000c400 0x400>; | 17 | reg = <0x4000c400 0x400>; |
18 | interrupts = <15>; | 18 | interrupts = <15>; |
19 | location = <0>; | 19 | efm32,location = <0>; |
20 | }; | 20 | }; |
diff --git a/Documentation/devicetree/bindings/serial/fsl-lpuart.txt b/Documentation/devicetree/bindings/serial/fsl-lpuart.txt index 6fd1dd1638dd..a1d1205d8185 100644 --- a/Documentation/devicetree/bindings/serial/fsl-lpuart.txt +++ b/Documentation/devicetree/bindings/serial/fsl-lpuart.txt | |||
@@ -4,11 +4,24 @@ Required properties: | |||
4 | - compatible : Should be "fsl,<soc>-lpuart" | 4 | - compatible : Should be "fsl,<soc>-lpuart" |
5 | - reg : Address and length of the register set for the device | 5 | - reg : Address and length of the register set for the device |
6 | - interrupts : Should contain uart interrupt | 6 | - interrupts : Should contain uart interrupt |
7 | - clocks : phandle + clock specifier pairs, one for each entry in clock-names | ||
8 | - clock-names : should contain: "ipg" - the uart clock | ||
9 | |||
10 | Optional properties: | ||
11 | - dmas: A list of two dma specifiers, one for each entry in dma-names. | ||
12 | - dma-names: should contain "tx" and "rx". | ||
13 | |||
14 | Note: Optional properties for DMA support. Write them both or both not. | ||
7 | 15 | ||
8 | Example: | 16 | Example: |
9 | 17 | ||
10 | uart0: serial@40027000 { | 18 | uart0: serial@40027000 { |
11 | compatible = "fsl,vf610-lpuart"; | 19 | compatible = "fsl,vf610-lpuart"; |
12 | reg = <0x40027000 0x1000>; | 20 | reg = <0x40027000 0x1000>; |
13 | interrupts = <0 61 0x00>; | 21 | interrupts = <0 61 0x00>; |
14 | }; | 22 | clocks = <&clks VF610_CLK_UART0>; |
23 | clock-names = "ipg"; | ||
24 | dmas = <&edma0 0 2>, | ||
25 | <&edma0 0 3>; | ||
26 | dma-names = "rx","tx"; | ||
27 | }; | ||
diff --git a/Documentation/devicetree/bindings/serial/maxim,max310x.txt b/Documentation/devicetree/bindings/serial/maxim,max310x.txt new file mode 100644 index 000000000000..83a919c241b0 --- /dev/null +++ b/Documentation/devicetree/bindings/serial/maxim,max310x.txt | |||
@@ -0,0 +1,36 @@ | |||
1 | * Maxim MAX310X advanced Universal Asynchronous Receiver-Transmitter (UART) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be one of the following: | ||
5 | - "maxim,max3107" for Maxim MAX3107, | ||
6 | - "maxim,max3108" for Maxim MAX3108, | ||
7 | - "maxim,max3109" for Maxim MAX3109, | ||
8 | - "maxim,max14830" for Maxim MAX14830. | ||
9 | - reg: SPI chip select number. | ||
10 | - interrupt-parent: The phandle for the interrupt controller that | ||
11 | services interrupts for this IC. | ||
12 | - interrupts: Specifies the interrupt source of the parent interrupt | ||
13 | controller. The format of the interrupt specifier depends on the | ||
14 | parent interrupt controller. | ||
15 | - clocks: phandle to the IC source clock. | ||
16 | - clock-names: Should be "xtal" if clock is an external crystal or | ||
17 | "osc" if an external clock source is used. | ||
18 | |||
19 | Optional properties: | ||
20 | - gpio-controller: Marks the device node as a GPIO controller. | ||
21 | - #gpio-cells: Should be two. The first cell is the GPIO number and | ||
22 | the second cell is used to specify the GPIO polarity: | ||
23 | 0 = active high, | ||
24 | 1 = active low. | ||
25 | |||
26 | Example: | ||
27 | max14830: max14830@0 { | ||
28 | compatible = "maxim,max14830"; | ||
29 | reg = <0>; | ||
30 | clocks = <&clk20m>; | ||
31 | clock-names = "osc"; | ||
32 | interrupt-parent = <&gpio3>; | ||
33 | interrupts = <7 IRQ_TYPE_EDGE_FALLING>; | ||
34 | gpio-controller; | ||
35 | #gpio-cells = <2>; | ||
36 | }; | ||
diff --git a/Documentation/devicetree/bindings/serial/renesas,sci-serial.txt b/Documentation/devicetree/bindings/serial/renesas,sci-serial.txt index f372cf29068d..53e6c175db6c 100644 --- a/Documentation/devicetree/bindings/serial/renesas,sci-serial.txt +++ b/Documentation/devicetree/bindings/serial/renesas,sci-serial.txt | |||
@@ -37,7 +37,7 @@ Example: | |||
37 | }; | 37 | }; |
38 | 38 | ||
39 | scifa0: serial@e6c40000 { | 39 | scifa0: serial@e6c40000 { |
40 | compatible = "renesas,scifa-r8a7790", "renesas,scifa-generic"; | 40 | compatible = "renesas,scifa-r8a7790", "renesas,scifa"; |
41 | reg = <0 0xe6c40000 0 64>; | 41 | reg = <0 0xe6c40000 0 64>; |
42 | interrupt-parent = <&gic>; | 42 | interrupt-parent = <&gic>; |
43 | interrupts = <0 144 IRQ_TYPE_LEVEL_HIGH>; | 43 | interrupts = <0 144 IRQ_TYPE_LEVEL_HIGH>; |
diff --git a/Documentation/devicetree/bindings/sound/armada-370db-audio.txt b/Documentation/devicetree/bindings/sound/armada-370db-audio.txt new file mode 100644 index 000000000000..bf984d238620 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/armada-370db-audio.txt | |||
@@ -0,0 +1,27 @@ | |||
1 | Device Tree bindings for the Armada 370 DB audio | ||
2 | ================================================ | ||
3 | |||
4 | These Device Tree bindings are used to describe the audio complex | ||
5 | found on the Armada 370 DB platform. | ||
6 | |||
7 | Mandatory properties: | ||
8 | |||
9 | * compatible: must be "marvell,a370db-audio" | ||
10 | |||
11 | * marvell,audio-controller: a phandle that points to the audio | ||
12 | controller of the Armada 370 SoC. | ||
13 | |||
14 | * marvell,audio-codec: a set of three phandles that points to: | ||
15 | |||
16 | 1/ the analog audio codec connected to the Armada 370 SoC | ||
17 | 2/ the S/PDIF transceiver | ||
18 | 3/ the S/PDIF receiver | ||
19 | |||
20 | Example: | ||
21 | |||
22 | sound { | ||
23 | compatible = "marvell,a370db-audio"; | ||
24 | marvell,audio-controller = <&audio_controller>; | ||
25 | marvell,audio-codec = <&audio_codec &spdif_out &spdif_in>; | ||
26 | status = "okay"; | ||
27 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/cs42xx8.txt b/Documentation/devicetree/bindings/sound/cs42xx8.txt new file mode 100644 index 000000000000..f631fbca6284 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/cs42xx8.txt | |||
@@ -0,0 +1,28 @@ | |||
1 | CS42448/CS42888 audio CODEC | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible : must contain one of "cirrus,cs42448" and "cirrus,cs42888" | ||
6 | |||
7 | - reg : the I2C address of the device for I2C | ||
8 | |||
9 | - clocks : a list of phandles + clock-specifiers, one for each entry in | ||
10 | clock-names | ||
11 | |||
12 | - clock-names : must contain "mclk" | ||
13 | |||
14 | - VA-supply, VD-supply, VLS-supply, VLC-supply: power supplies for the device, | ||
15 | as covered in Documentation/devicetree/bindings/regulator/regulator.txt | ||
16 | |||
17 | Example: | ||
18 | |||
19 | codec: cs42888@48 { | ||
20 | compatible = "cirrus,cs42888"; | ||
21 | reg = <0x48>; | ||
22 | clocks = <&codec_mclk 0>; | ||
23 | clock-names = "mclk"; | ||
24 | VA-supply = <®_audio>; | ||
25 | VD-supply = <®_audio>; | ||
26 | VLS-supply = <®_audio>; | ||
27 | VLC-supply = <®_audio>; | ||
28 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/da9055.txt b/Documentation/devicetree/bindings/sound/da9055.txt new file mode 100644 index 000000000000..ed1b7cc6f249 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/da9055.txt | |||
@@ -0,0 +1,22 @@ | |||
1 | * Dialog DA9055 Audio CODEC | ||
2 | |||
3 | DA9055 provides Audio CODEC support (I2C only). | ||
4 | |||
5 | The Audio CODEC device in DA9055 has it's own I2C address which is configurable, | ||
6 | so the device is instantiated separately from the PMIC (MFD) device. | ||
7 | |||
8 | For details on accompanying PMIC I2C device, see the following: | ||
9 | Documentation/devicetree/bindings/mfd/da9055.txt | ||
10 | |||
11 | Required properties: | ||
12 | |||
13 | - compatible: "dlg,da9055-codec" | ||
14 | - reg: Specifies the I2C slave address | ||
15 | |||
16 | |||
17 | Example: | ||
18 | |||
19 | codec: da9055-codec@1a { | ||
20 | compatible = "dlg,da9055-codec"; | ||
21 | reg = <0x1a>; | ||
22 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt b/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt index 865178d5cdf3..963e100514c2 100644 --- a/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt +++ b/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt | |||
@@ -5,12 +5,19 @@ Required properties: | |||
5 | - ti,model : The user-visible name of this sound complex. | 5 | - ti,model : The user-visible name of this sound complex. |
6 | - ti,audio-codec : The phandle of the TLV320AIC3x audio codec | 6 | - ti,audio-codec : The phandle of the TLV320AIC3x audio codec |
7 | - ti,mcasp-controller : The phandle of the McASP controller | 7 | - ti,mcasp-controller : The phandle of the McASP controller |
8 | - ti,codec-clock-rate : The Codec Clock rate (in Hz) applied to the Codec | ||
9 | - ti,audio-routing : A list of the connections between audio components. | 8 | - ti,audio-routing : A list of the connections between audio components. |
10 | Each entry is a pair of strings, the first being the connection's sink, | 9 | Each entry is a pair of strings, the first being the connection's sink, |
11 | the second being the connection's source. Valid names for sources and | 10 | the second being the connection's source. Valid names for sources and |
12 | sinks are the codec's pins, and the jacks on the board: | 11 | sinks are the codec's pins, and the jacks on the board: |
13 | 12 | ||
13 | Optional properties: | ||
14 | - ti,codec-clock-rate : The Codec Clock rate (in Hz) applied to the Codec. | ||
15 | - clocks : Reference to the master clock | ||
16 | - clock-names : The clock should be named "mclk" | ||
17 | - Either codec-clock-rate or the codec-clock reference has to be defined. If | ||
18 | the both are defined the driver attempts to set referenced clock to the | ||
19 | defined rate and takes the rate from the clock reference. | ||
20 | |||
14 | Board connectors: | 21 | Board connectors: |
15 | 22 | ||
16 | * Headphone Jack | 23 | * Headphone Jack |
diff --git a/Documentation/devicetree/bindings/sound/eukrea-tlv320.txt b/Documentation/devicetree/bindings/sound/eukrea-tlv320.txt new file mode 100644 index 000000000000..0d7985c864af --- /dev/null +++ b/Documentation/devicetree/bindings/sound/eukrea-tlv320.txt | |||
@@ -0,0 +1,21 @@ | |||
1 | Audio complex for Eukrea boards with tlv320aic23 codec. | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "eukrea,asoc-tlv320" | ||
5 | - eukrea,model : The user-visible name of this sound complex. | ||
6 | - ssi-controller : The phandle of the SSI controller. | ||
7 | - fsl,mux-int-port : The internal port of the i.MX audio muxer (AUDMUX). | ||
8 | - fsl,mux-ext-port : The external port of the i.MX audio muxer. | ||
9 | |||
10 | Note: The AUDMUX port numbering should start at 1, which is consistent with | ||
11 | hardware manual. | ||
12 | |||
13 | Example: | ||
14 | |||
15 | sound { | ||
16 | compatible = "eukrea,asoc-tlv320"; | ||
17 | eukrea,model = "imx51-eukrea-tlv320aic23"; | ||
18 | ssi-controller = <&ssi2>; | ||
19 | fsl,mux-int-port = <2>; | ||
20 | fsl,mux-ext-port = <3>; | ||
21 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/fsl,esai.txt b/Documentation/devicetree/bindings/sound/fsl,esai.txt index d7b99fa637b5..aeb8c4a0b88d 100644 --- a/Documentation/devicetree/bindings/sound/fsl,esai.txt +++ b/Documentation/devicetree/bindings/sound/fsl,esai.txt | |||
@@ -34,6 +34,10 @@ Required properties: | |||
34 | that ESAI would work in the synchronous mode, which means all the settings | 34 | that ESAI would work in the synchronous mode, which means all the settings |
35 | for Receiving would be duplicated from Transmition related registers. | 35 | for Receiving would be duplicated from Transmition related registers. |
36 | 36 | ||
37 | - big-endian : If this property is absent, the native endian mode will | ||
38 | be in use as default, or the big endian mode will be in use for all the | ||
39 | device registers. | ||
40 | |||
37 | Example: | 41 | Example: |
38 | 42 | ||
39 | esai: esai@02024000 { | 43 | esai: esai@02024000 { |
@@ -46,5 +50,6 @@ esai: esai@02024000 { | |||
46 | dma-names = "rx", "tx"; | 50 | dma-names = "rx", "tx"; |
47 | fsl,fifo-depth = <128>; | 51 | fsl,fifo-depth = <128>; |
48 | fsl,esai-synchronous; | 52 | fsl,esai-synchronous; |
53 | big-endian; | ||
49 | status = "disabled"; | 54 | status = "disabled"; |
50 | }; | 55 | }; |
diff --git a/Documentation/devicetree/bindings/sound/fsl,spdif.txt b/Documentation/devicetree/bindings/sound/fsl,spdif.txt index f2ae335670f5..3e9e82c8eab3 100644 --- a/Documentation/devicetree/bindings/sound/fsl,spdif.txt +++ b/Documentation/devicetree/bindings/sound/fsl,spdif.txt | |||
@@ -29,6 +29,10 @@ Required properties: | |||
29 | can also be referred to TxClk_Source | 29 | can also be referred to TxClk_Source |
30 | bit of register SPDIF_STC. | 30 | bit of register SPDIF_STC. |
31 | 31 | ||
32 | - big-endian : If this property is absent, the native endian mode will | ||
33 | be in use as default, or the big endian mode will be in use for all the | ||
34 | device registers. | ||
35 | |||
32 | Example: | 36 | Example: |
33 | 37 | ||
34 | spdif: spdif@02004000 { | 38 | spdif: spdif@02004000 { |
@@ -50,5 +54,6 @@ spdif: spdif@02004000 { | |||
50 | "rxtx5", "rxtx6", | 54 | "rxtx5", "rxtx6", |
51 | "rxtx7"; | 55 | "rxtx7"; |
52 | 56 | ||
57 | big-endian; | ||
53 | status = "okay"; | 58 | status = "okay"; |
54 | }; | 59 | }; |
diff --git a/Documentation/devicetree/bindings/sound/mvebu-audio.txt b/Documentation/devicetree/bindings/sound/mvebu-audio.txt index f0062c5871b4..cb8c07c81ce4 100644 --- a/Documentation/devicetree/bindings/sound/mvebu-audio.txt +++ b/Documentation/devicetree/bindings/sound/mvebu-audio.txt | |||
@@ -5,6 +5,7 @@ Required properties: | |||
5 | - compatible: | 5 | - compatible: |
6 | "marvell,kirkwood-audio" for Kirkwood platforms | 6 | "marvell,kirkwood-audio" for Kirkwood platforms |
7 | "marvell,dove-audio" for Dove platforms | 7 | "marvell,dove-audio" for Dove platforms |
8 | "marvell,armada370-audio" for Armada 370 platforms | ||
8 | 9 | ||
9 | - reg: physical base address of the controller and length of memory mapped | 10 | - reg: physical base address of the controller and length of memory mapped |
10 | region. | 11 | region. |
diff --git a/Documentation/devicetree/bindings/sound/pcm512x.txt b/Documentation/devicetree/bindings/sound/pcm512x.txt new file mode 100644 index 000000000000..faff75e64573 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/pcm512x.txt | |||
@@ -0,0 +1,30 @@ | |||
1 | PCM512x audio CODECs | ||
2 | |||
3 | These devices support both I2C and SPI (configured with pin strapping | ||
4 | on the board). | ||
5 | |||
6 | Required properties: | ||
7 | |||
8 | - compatible : One of "ti,pcm5121" or "ti,pcm5122" | ||
9 | |||
10 | - reg : the I2C address of the device for I2C, the chip select | ||
11 | number for SPI. | ||
12 | |||
13 | - AVDD-supply, DVDD-supply, and CPVDD-supply : power supplies for the | ||
14 | device, as covered in bindings/regulator/regulator.txt | ||
15 | |||
16 | Optional properties: | ||
17 | |||
18 | - clocks : A clock specifier for the clock connected as SCLK. If this | ||
19 | is absent the device will be configured to clock from BCLK. | ||
20 | |||
21 | Example: | ||
22 | |||
23 | pcm5122: pcm5122@4c { | ||
24 | compatible = "ti,pcm5122"; | ||
25 | reg = <0x4c>; | ||
26 | |||
27 | AVDD-supply = <®_3v3_analog>; | ||
28 | DVDD-supply = <®_1v8>; | ||
29 | CPVDD-supply = <®_3v3>; | ||
30 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/renesas,rsnd.txt b/Documentation/devicetree/bindings/sound/renesas,rsnd.txt new file mode 100644 index 000000000000..a44e9179faf5 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/renesas,rsnd.txt | |||
@@ -0,0 +1,105 @@ | |||
1 | Renesas R-Car sound | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "renesas,rcar_sound-gen1" if generation1 | ||
5 | "renesas,rcar_sound-gen2" if generation2 | ||
6 | - reg : Should contain the register physical address. | ||
7 | required register is | ||
8 | SRU/ADG/SSI if generation1 | ||
9 | SRU/ADG/SSIU/SSI if generation2 | ||
10 | - rcar_sound,ssi : Should contain SSI feature. | ||
11 | The number of SSI subnode should be same as HW. | ||
12 | see below for detail. | ||
13 | - rcar_sound,src : Should contain SRC feature. | ||
14 | The number of SRC subnode should be same as HW. | ||
15 | see below for detail. | ||
16 | - rcar_sound,dai : DAI contents. | ||
17 | The number of DAI subnode should be same as HW. | ||
18 | see below for detail. | ||
19 | |||
20 | SSI subnode properties: | ||
21 | - interrupts : Should contain SSI interrupt for PIO transfer | ||
22 | - shared-pin : if shared clock pin | ||
23 | |||
24 | SRC subnode properties: | ||
25 | no properties at this point | ||
26 | |||
27 | DAI subnode properties: | ||
28 | - playback : list of playback modules | ||
29 | - capture : list of capture modules | ||
30 | |||
31 | Example: | ||
32 | |||
33 | rcar_sound: rcar_sound@0xffd90000 { | ||
34 | #sound-dai-cells = <1>; | ||
35 | compatible = "renesas,rcar_sound-gen2"; | ||
36 | reg = <0 0xec500000 0 0x1000>, /* SCU */ | ||
37 | <0 0xec5a0000 0 0x100>, /* ADG */ | ||
38 | <0 0xec540000 0 0x1000>, /* SSIU */ | ||
39 | <0 0xec541000 0 0x1280>; /* SSI */ | ||
40 | |||
41 | rcar_sound,src { | ||
42 | src0: src@0 { }; | ||
43 | src1: src@1 { }; | ||
44 | src2: src@2 { }; | ||
45 | src3: src@3 { }; | ||
46 | src4: src@4 { }; | ||
47 | src5: src@5 { }; | ||
48 | src6: src@6 { }; | ||
49 | src7: src@7 { }; | ||
50 | src8: src@8 { }; | ||
51 | src9: src@9 { }; | ||
52 | }; | ||
53 | |||
54 | rcar_sound,ssi { | ||
55 | ssi0: ssi@0 { | ||
56 | interrupts = <0 370 IRQ_TYPE_LEVEL_HIGH>; | ||
57 | }; | ||
58 | ssi1: ssi@1 { | ||
59 | interrupts = <0 371 IRQ_TYPE_LEVEL_HIGH>; | ||
60 | }; | ||
61 | ssi2: ssi@2 { | ||
62 | interrupts = <0 372 IRQ_TYPE_LEVEL_HIGH>; | ||
63 | }; | ||
64 | ssi3: ssi@3 { | ||
65 | interrupts = <0 373 IRQ_TYPE_LEVEL_HIGH>; | ||
66 | }; | ||
67 | ssi4: ssi@4 { | ||
68 | interrupts = <0 374 IRQ_TYPE_LEVEL_HIGH>; | ||
69 | }; | ||
70 | ssi5: ssi@5 { | ||
71 | interrupts = <0 375 IRQ_TYPE_LEVEL_HIGH>; | ||
72 | }; | ||
73 | ssi6: ssi@6 { | ||
74 | interrupts = <0 376 IRQ_TYPE_LEVEL_HIGH>; | ||
75 | }; | ||
76 | ssi7: ssi@7 { | ||
77 | interrupts = <0 377 IRQ_TYPE_LEVEL_HIGH>; | ||
78 | }; | ||
79 | ssi8: ssi@8 { | ||
80 | interrupts = <0 378 IRQ_TYPE_LEVEL_HIGH>; | ||
81 | }; | ||
82 | ssi9: ssi@9 { | ||
83 | interrupts = <0 379 IRQ_TYPE_LEVEL_HIGH>; | ||
84 | }; | ||
85 | }; | ||
86 | |||
87 | rcar_sound,dai { | ||
88 | dai0 { | ||
89 | playback = <&ssi5 &src5>; | ||
90 | capture = <&ssi6>; | ||
91 | }; | ||
92 | dai1 { | ||
93 | playback = <&ssi3>; | ||
94 | }; | ||
95 | dai2 { | ||
96 | capture = <&ssi4>; | ||
97 | }; | ||
98 | dai3 { | ||
99 | playback = <&ssi7>; | ||
100 | }; | ||
101 | dai4 { | ||
102 | capture = <&ssi8>; | ||
103 | }; | ||
104 | }; | ||
105 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/simple-card.txt b/Documentation/devicetree/bindings/sound/simple-card.txt index 19c84df5fffa..131aa2ad7f1a 100644 --- a/Documentation/devicetree/bindings/sound/simple-card.txt +++ b/Documentation/devicetree/bindings/sound/simple-card.txt | |||
@@ -8,16 +8,26 @@ Required properties: | |||
8 | 8 | ||
9 | Optional properties: | 9 | Optional properties: |
10 | 10 | ||
11 | - simple-audio-card,name : User specified audio sound card name, one string | ||
12 | property. | ||
11 | - simple-audio-card,format : CPU/CODEC common audio format. | 13 | - simple-audio-card,format : CPU/CODEC common audio format. |
12 | "i2s", "right_j", "left_j" , "dsp_a" | 14 | "i2s", "right_j", "left_j" , "dsp_a" |
13 | "dsp_b", "ac97", "pdm", "msb", "lsb" | 15 | "dsp_b", "ac97", "pdm", "msb", "lsb" |
16 | - simple-audio-card,widgets : Please refer to widgets.txt. | ||
14 | - simple-audio-card,routing : A list of the connections between audio components. | 17 | - simple-audio-card,routing : A list of the connections between audio components. |
15 | Each entry is a pair of strings, the first being the | 18 | Each entry is a pair of strings, the first being the |
16 | connection's sink, the second being the connection's | 19 | connection's sink, the second being the connection's |
17 | source. | 20 | source. |
21 | - dai-tdm-slot-num : Please refer to tdm-slot.txt. | ||
22 | - dai-tdm-slot-width : Please refer to tdm-slot.txt. | ||
18 | 23 | ||
19 | Required subnodes: | 24 | Required subnodes: |
20 | 25 | ||
26 | - simple-audio-card,dai-link : container for the CPU and CODEC sub-nodes | ||
27 | This container may be omitted when the | ||
28 | card has only one DAI link. | ||
29 | See the examples. | ||
30 | |||
21 | - simple-audio-card,cpu : CPU sub-node | 31 | - simple-audio-card,cpu : CPU sub-node |
22 | - simple-audio-card,codec : CODEC sub-node | 32 | - simple-audio-card,codec : CODEC sub-node |
23 | 33 | ||
@@ -38,15 +48,29 @@ Optional CPU/CODEC subnodes properties: | |||
38 | clock node (= common clock), or "system-clock-frequency" | 48 | clock node (= common clock), or "system-clock-frequency" |
39 | (if system doens't support common clock) | 49 | (if system doens't support common clock) |
40 | 50 | ||
41 | Example: | 51 | Note: |
52 | * For 'format', 'frame-master', 'bitclock-master', 'bitclock-inversion' and | ||
53 | 'frame-inversion', the simple card will use the settings of CODEC for both | ||
54 | CPU and CODEC sides as we need to keep the settings identical for both ends | ||
55 | of the link. | ||
56 | |||
57 | Example 1 - single DAI link: | ||
42 | 58 | ||
43 | sound { | 59 | sound { |
44 | compatible = "simple-audio-card"; | 60 | compatible = "simple-audio-card"; |
61 | simple-audio-card,name = "VF610-Tower-Sound-Card"; | ||
45 | simple-audio-card,format = "left_j"; | 62 | simple-audio-card,format = "left_j"; |
63 | simple-audio-card,widgets = | ||
64 | "Microphone", "Microphone Jack", | ||
65 | "Headphone", "Headphone Jack", | ||
66 | "Speaker", "External Speaker"; | ||
46 | simple-audio-card,routing = | 67 | simple-audio-card,routing = |
47 | "MIC_IN", "Mic Jack", | 68 | "MIC_IN", "Microphone Jack", |
48 | "Headphone Jack", "HP_OUT", | 69 | "Headphone Jack", "HP_OUT", |
49 | "Ext Spk", "LINE_OUT"; | 70 | "External Speaker", "LINE_OUT"; |
71 | |||
72 | dai-tdm-slot-num = <2>; | ||
73 | dai-tdm-slot-width = <8>; | ||
50 | 74 | ||
51 | simple-audio-card,cpu { | 75 | simple-audio-card,cpu { |
52 | sound-dai = <&sh_fsi2 0>; | 76 | sound-dai = <&sh_fsi2 0>; |
@@ -75,3 +99,38 @@ sh_fsi2: sh_fsi2@ec230000 { | |||
75 | interrupt-parent = <&gic>; | 99 | interrupt-parent = <&gic>; |
76 | interrupts = <0 146 0x4>; | 100 | interrupts = <0 146 0x4>; |
77 | }; | 101 | }; |
102 | |||
103 | Example 2 - many DAI links: | ||
104 | |||
105 | sound { | ||
106 | compatible = "simple-audio-card"; | ||
107 | simple-audio-card,name = "Cubox Audio"; | ||
108 | simple-audio-card,format = "i2s"; | ||
109 | |||
110 | simple-audio-card,dai-link@0 { /* I2S - HDMI */ | ||
111 | simple-audio-card,cpu { | ||
112 | sound-dai = <&audio1 0>; | ||
113 | }; | ||
114 | simple-audio-card,codec { | ||
115 | sound-dai = <&tda998x 0>; | ||
116 | }; | ||
117 | }; | ||
118 | |||
119 | simple-audio-card,dai-link@1 { /* S/PDIF - HDMI */ | ||
120 | simple-audio-card,cpu { | ||
121 | sound-dai = <&audio1 1>; | ||
122 | }; | ||
123 | simple-audio-card,codec { | ||
124 | sound-dai = <&tda998x 1>; | ||
125 | }; | ||
126 | }; | ||
127 | |||
128 | simple-audio-card,dai-link@2 { /* S/PDIF - S/PDIF */ | ||
129 | simple-audio-card,cpu { | ||
130 | sound-dai = <&audio1 1>; | ||
131 | }; | ||
132 | simple-audio-card,codec { | ||
133 | sound-dai = <&spdif_codec>; | ||
134 | }; | ||
135 | }; | ||
136 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/sirf-audio-codec.txt b/Documentation/devicetree/bindings/sound/sirf-audio-codec.txt new file mode 100644 index 000000000000..062f5ec36f9b --- /dev/null +++ b/Documentation/devicetree/bindings/sound/sirf-audio-codec.txt | |||
@@ -0,0 +1,17 @@ | |||
1 | SiRF internal audio CODEC | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible : "sirf,atlas6-audio-codec" or "sirf,prima2-audio-codec" | ||
6 | |||
7 | - reg : the register address of the device. | ||
8 | |||
9 | - clocks: the clock of SiRF internal audio codec | ||
10 | |||
11 | Example: | ||
12 | |||
13 | audiocodec: audiocodec@b0040000 { | ||
14 | compatible = "sirf,atlas6-audio-codec"; | ||
15 | reg = <0xb0040000 0x10000>; | ||
16 | clocks = <&clks 27>; | ||
17 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/sirf-audio-port.txt b/Documentation/devicetree/bindings/sound/sirf-audio-port.txt new file mode 100644 index 000000000000..1f66de3c8f00 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/sirf-audio-port.txt | |||
@@ -0,0 +1,20 @@ | |||
1 | * SiRF SoC audio port | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "sirf,audio-port" | ||
5 | - reg: Base address and size entries: | ||
6 | - dmas: List of DMA controller phandle and DMA request line ordered pairs. | ||
7 | - dma-names: Identifier string for each DMA request line in the dmas property. | ||
8 | These strings correspond 1:1 with the ordered pairs in dmas. | ||
9 | |||
10 | One of the DMA channels will be responsible for transmission (should be | ||
11 | named "tx") and one for reception (should be named "rx"). | ||
12 | |||
13 | Example: | ||
14 | |||
15 | audioport: audioport@b0040000 { | ||
16 | compatible = "sirf,audio-port"; | ||
17 | reg = <0xb0040000 0x10000>; | ||
18 | dmas = <&dmac1 3>, <&dmac1 8>; | ||
19 | dma-names = "rx", "tx"; | ||
20 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/sirf-audio.txt b/Documentation/devicetree/bindings/sound/sirf-audio.txt new file mode 100644 index 000000000000..c88882ca3704 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/sirf-audio.txt | |||
@@ -0,0 +1,41 @@ | |||
1 | * SiRF atlas6 and prima2 internal audio codec and port based audio setups | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "sirf,sirf-audio-card" | ||
5 | - sirf,audio-platform: phandle for the platform node | ||
6 | - sirf,audio-codec: phandle for the SiRF internal codec node | ||
7 | |||
8 | Optional properties: | ||
9 | - hp-pa-gpios: Need to be present if the board need control external | ||
10 | headphone amplifier. | ||
11 | - spk-pa-gpios: Need to be present if the board need control external | ||
12 | speaker amplifier. | ||
13 | - hp-switch-gpios: Need to be present if the board capable to detect jack | ||
14 | insertion, removal. | ||
15 | |||
16 | Available audio endpoints for the audio-routing table: | ||
17 | |||
18 | Board connectors: | ||
19 | * Headset Stereophone | ||
20 | * Ext Spk | ||
21 | * Line In | ||
22 | * Mic | ||
23 | |||
24 | SiRF internal audio codec pins: | ||
25 | * HPOUTL | ||
26 | * HPOUTR | ||
27 | * SPKOUT | ||
28 | * Ext Mic | ||
29 | * Mic Bias | ||
30 | |||
31 | Example: | ||
32 | |||
33 | sound { | ||
34 | compatible = "sirf,sirf-audio-card"; | ||
35 | sirf,audio-codec = <&audiocodec>; | ||
36 | sirf,audio-platform = <&audioport>; | ||
37 | hp-pa-gpios = <&gpio 44 0>; | ||
38 | spk-pa-gpios = <&gpio 46 0>; | ||
39 | hp-switch-gpios = <&gpio 45 0>; | ||
40 | }; | ||
41 | |||
diff --git a/Documentation/devicetree/bindings/sound/tdm-slot.txt b/Documentation/devicetree/bindings/sound/tdm-slot.txt new file mode 100644 index 000000000000..6a2c84247f91 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/tdm-slot.txt | |||
@@ -0,0 +1,20 @@ | |||
1 | TDM slot: | ||
2 | |||
3 | This specifies audio DAI's TDM slot. | ||
4 | |||
5 | TDM slot properties: | ||
6 | dai-tdm-slot-num : Number of slots in use. | ||
7 | dai-tdm-slot-width : Width in bits for each slot. | ||
8 | |||
9 | For instance: | ||
10 | dai-tdm-slot-num = <2>; | ||
11 | dai-tdm-slot-width = <8>; | ||
12 | |||
13 | And for each spcified driver, there could be one .of_xlate_tdm_slot_mask() | ||
14 | to specify a explicit mapping of the channels and the slots. If it's absent | ||
15 | the default snd_soc_of_xlate_tdm_slot_mask() will be used to generating the | ||
16 | tx and rx masks. | ||
17 | |||
18 | For snd_soc_of_xlate_tdm_slot_mask(), the tx and rx masks will use a 1 bit | ||
19 | for an active slot as default, and the default active bits are at the LSB of | ||
20 | the masks. | ||
diff --git a/Documentation/devicetree/bindings/sound/tlv320aic31xx.txt b/Documentation/devicetree/bindings/sound/tlv320aic31xx.txt new file mode 100644 index 000000000000..74c66dee3e14 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/tlv320aic31xx.txt | |||
@@ -0,0 +1,61 @@ | |||
1 | Texas Instruments - tlv320aic31xx Codec module | ||
2 | |||
3 | The tlv320aic31xx serial control bus communicates through I2C protocols | ||
4 | |||
5 | Required properties: | ||
6 | |||
7 | - compatible - "string" - One of: | ||
8 | "ti,tlv320aic310x" - Generic TLV320AIC31xx with mono speaker amp | ||
9 | "ti,tlv320aic311x" - Generic TLV320AIC31xx with stereo speaker amp | ||
10 | "ti,tlv320aic3100" - TLV320AIC3100 (mono speaker amp, no MiniDSP) | ||
11 | "ti,tlv320aic3110" - TLV320AIC3110 (stereo speaker amp, no MiniDSP) | ||
12 | "ti,tlv320aic3120" - TLV320AIC3120 (mono speaker amp, MiniDSP) | ||
13 | "ti,tlv320aic3111" - TLV320AIC3111 (stereo speaker amp, MiniDSP) | ||
14 | |||
15 | - reg - <int> - I2C slave address | ||
16 | |||
17 | |||
18 | Optional properties: | ||
19 | |||
20 | - gpio-reset - gpio pin number used for codec reset | ||
21 | - ai31xx-micbias-vg - MicBias Voltage setting | ||
22 | 1 or MICBIAS_2_0V - MICBIAS output is powered to 2.0V | ||
23 | 2 or MICBIAS_2_5V - MICBIAS output is powered to 2.5V | ||
24 | 3 or MICBIAS_AVDD - MICBIAS output is connected to AVDD | ||
25 | If this node is not mentioned or if the value is unknown, then | ||
26 | micbias is set to 2.0V. | ||
27 | - HPVDD-supply, SPRVDD-supply, SPLVDD-supply, AVDD-supply, IOVDD-supply, | ||
28 | DVDD-supply : power supplies for the device as covered in | ||
29 | Documentation/devicetree/bindings/regulator/regulator.txt | ||
30 | |||
31 | CODEC output pins: | ||
32 | * HPL | ||
33 | * HPR | ||
34 | * SPL, devices with stereo speaker amp | ||
35 | * SPR, devices with stereo speaker amp | ||
36 | * SPK, devices with mono speaker amp | ||
37 | * MICBIAS | ||
38 | |||
39 | CODEC input pins: | ||
40 | * MIC1LP | ||
41 | * MIC1RP | ||
42 | * MIC1LM | ||
43 | |||
44 | The pins can be used in referring sound node's audio-routing property. | ||
45 | |||
46 | Example: | ||
47 | #include <dt-bindings/sound/tlv320aic31xx-micbias.h> | ||
48 | |||
49 | tlv320aic31xx: tlv320aic31xx@18 { | ||
50 | compatible = "ti,tlv320aic311x"; | ||
51 | reg = <0x18>; | ||
52 | |||
53 | ai31xx-micbias-vg = <MICBIAS_OFF>; | ||
54 | |||
55 | HPVDD-supply = <®ulator>; | ||
56 | SPRVDD-supply = <®ulator>; | ||
57 | SPLVDD-supply = <®ulator>; | ||
58 | AVDD-supply = <®ulator>; | ||
59 | IOVDD-supply = <®ulator>; | ||
60 | DVDD-supply = <®ulator>; | ||
61 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/tlv320aic32x4.txt b/Documentation/devicetree/bindings/sound/tlv320aic32x4.txt new file mode 100644 index 000000000000..5e2741af27be --- /dev/null +++ b/Documentation/devicetree/bindings/sound/tlv320aic32x4.txt | |||
@@ -0,0 +1,30 @@ | |||
1 | Texas Instruments - tlv320aic32x4 Codec module | ||
2 | |||
3 | The tlv320aic32x4 serial control bus communicates through I2C protocols | ||
4 | |||
5 | Required properties: | ||
6 | - compatible: Should be "ti,tlv320aic32x4" | ||
7 | - reg: I2C slave address | ||
8 | - supply-*: Required supply regulators are: | ||
9 | "iov" - digital IO power supply | ||
10 | "ldoin" - LDO power supply | ||
11 | "dv" - Digital core power supply | ||
12 | "av" - Analog core power supply | ||
13 | If you supply ldoin, dv and av are optional. Otherwise they are required | ||
14 | See regulator/regulator.txt for more information about the detailed binding | ||
15 | format. | ||
16 | |||
17 | Optional properties: | ||
18 | - reset-gpios: Reset-GPIO phandle with args as described in gpio/gpio.txt | ||
19 | - clocks/clock-names: Clock named 'mclk' for the master clock of the codec. | ||
20 | See clock/clock-bindings.txt for information about the detailed format. | ||
21 | |||
22 | |||
23 | Example: | ||
24 | |||
25 | codec: tlv320aic32x4@18 { | ||
26 | compatible = "ti,tlv320aic32x4"; | ||
27 | reg = <0x18>; | ||
28 | clocks = <&clks 201>; | ||
29 | clock-names = "mclk"; | ||
30 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/tlv320aic3x.txt b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt index 9d8ea14db490..5e6040c2c2e9 100644 --- a/Documentation/devicetree/bindings/sound/tlv320aic3x.txt +++ b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt | |||
@@ -6,7 +6,6 @@ Required properties: | |||
6 | 6 | ||
7 | - compatible - "string" - One of: | 7 | - compatible - "string" - One of: |
8 | "ti,tlv320aic3x" - Generic TLV320AIC3x device | 8 | "ti,tlv320aic3x" - Generic TLV320AIC3x device |
9 | "ti,tlv320aic32x4" - TLV320AIC32x4 | ||
10 | "ti,tlv320aic33" - TLV320AIC33 | 9 | "ti,tlv320aic33" - TLV320AIC33 |
11 | "ti,tlv320aic3007" - TLV320AIC3007 | 10 | "ti,tlv320aic3007" - TLV320AIC3007 |
12 | "ti,tlv320aic3106" - TLV320AIC3106 | 11 | "ti,tlv320aic3106" - TLV320AIC3106 |
diff --git a/Documentation/devicetree/bindings/sound/widgets.txt b/Documentation/devicetree/bindings/sound/widgets.txt new file mode 100644 index 000000000000..b6de5ba3b2de --- /dev/null +++ b/Documentation/devicetree/bindings/sound/widgets.txt | |||
@@ -0,0 +1,20 @@ | |||
1 | Widgets: | ||
2 | |||
3 | This mainly specifies audio off-codec DAPM widgets. | ||
4 | |||
5 | Each entry is a pair of strings in DT: | ||
6 | |||
7 | "template-wname", "user-supplied-wname" | ||
8 | |||
9 | The "template-wname" being the template widget name and currently includes: | ||
10 | "Microphone", "Line", "Headphone" and "Speaker". | ||
11 | |||
12 | The "user-supplied-wname" being the user specified widget name. | ||
13 | |||
14 | For instance: | ||
15 | simple-audio-widgets = | ||
16 | "Microphone", "Microphone Jack", | ||
17 | "Line", "Line In Jack", | ||
18 | "Line", "Line Out Jack", | ||
19 | "Headphone", "Headphone Jack", | ||
20 | "Speaker", "Speaker External"; | ||
diff --git a/Documentation/devicetree/bindings/spi/efm32-spi.txt b/Documentation/devicetree/bindings/spi/efm32-spi.txt index a590ca51be75..8f081c96a4fa 100644 --- a/Documentation/devicetree/bindings/spi/efm32-spi.txt +++ b/Documentation/devicetree/bindings/spi/efm32-spi.txt | |||
@@ -3,24 +3,24 @@ | |||
3 | Required properties: | 3 | Required properties: |
4 | - #address-cells: see spi-bus.txt | 4 | - #address-cells: see spi-bus.txt |
5 | - #size-cells: see spi-bus.txt | 5 | - #size-cells: see spi-bus.txt |
6 | - compatible: should be "efm32,spi" | 6 | - compatible: should be "energymicro,efm32-spi" |
7 | - reg: Offset and length of the register set for the controller | 7 | - reg: Offset and length of the register set for the controller |
8 | - interrupts: pair specifying rx and tx irq | 8 | - interrupts: pair specifying rx and tx irq |
9 | - clocks: phandle to the spi clock | 9 | - clocks: phandle to the spi clock |
10 | - cs-gpios: see spi-bus.txt | 10 | - cs-gpios: see spi-bus.txt |
11 | - location: Value to write to the ROUTE register's LOCATION bitfield to configure the pinmux for the device, see datasheet for values. | 11 | - efm32,location: Value to write to the ROUTE register's LOCATION bitfield to configure the pinmux for the device, see datasheet for values. |
12 | 12 | ||
13 | Example: | 13 | Example: |
14 | 14 | ||
15 | spi1: spi@0x4000c400 { /* USART1 */ | 15 | spi1: spi@0x4000c400 { /* USART1 */ |
16 | #address-cells = <1>; | 16 | #address-cells = <1>; |
17 | #size-cells = <0>; | 17 | #size-cells = <0>; |
18 | compatible = "efm32,spi"; | 18 | compatible = "energymicro,efm32-spi"; |
19 | reg = <0x4000c400 0x400>; | 19 | reg = <0x4000c400 0x400>; |
20 | interrupts = <15 16>; | 20 | interrupts = <15 16>; |
21 | clocks = <&cmu 20>; | 21 | clocks = <&cmu 20>; |
22 | cs-gpios = <&gpio 51 1>; // D3 | 22 | cs-gpios = <&gpio 51 1>; // D3 |
23 | location = <1>; | 23 | efm32,location = <1>; |
24 | status = "ok"; | 24 | status = "ok"; |
25 | 25 | ||
26 | ks8851@0 { | 26 | ks8851@0 { |
diff --git a/Documentation/devicetree/bindings/spi/qcom,spi-qup.txt b/Documentation/devicetree/bindings/spi/qcom,spi-qup.txt new file mode 100644 index 000000000000..b82a268f1bd4 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/qcom,spi-qup.txt | |||
@@ -0,0 +1,85 @@ | |||
1 | Qualcomm Universal Peripheral (QUP) Serial Peripheral Interface (SPI) | ||
2 | |||
3 | The QUP core is an AHB slave that provides a common data path (an output FIFO | ||
4 | and an input FIFO) for serial peripheral interface (SPI) mini-core. | ||
5 | |||
6 | SPI in master mode supports up to 50MHz, up to four chip selects, programmable | ||
7 | data path from 4 bits to 32 bits and numerous protocol variants. | ||
8 | |||
9 | Required properties: | ||
10 | - compatible: Should contain "qcom,spi-qup-v2.1.1" or "qcom,spi-qup-v2.2.1" | ||
11 | - reg: Should contain base register location and length | ||
12 | - interrupts: Interrupt number used by this controller | ||
13 | |||
14 | - clocks: Should contain the core clock and the AHB clock. | ||
15 | - clock-names: Should be "core" for the core clock and "iface" for the | ||
16 | AHB clock. | ||
17 | |||
18 | - #address-cells: Number of cells required to define a chip select | ||
19 | address on the SPI bus. Should be set to 1. | ||
20 | - #size-cells: Should be zero. | ||
21 | |||
22 | Optional properties: | ||
23 | - spi-max-frequency: Specifies maximum SPI clock frequency, | ||
24 | Units - Hz. Definition as per | ||
25 | Documentation/devicetree/bindings/spi/spi-bus.txt | ||
26 | |||
27 | SPI slave nodes must be children of the SPI master node and can contain | ||
28 | properties described in Documentation/devicetree/bindings/spi/spi-bus.txt | ||
29 | |||
30 | Example: | ||
31 | |||
32 | spi_8: spi@f9964000 { /* BLSP2 QUP2 */ | ||
33 | |||
34 | compatible = "qcom,spi-qup-v2"; | ||
35 | #address-cells = <1>; | ||
36 | #size-cells = <0>; | ||
37 | reg = <0xf9964000 0x1000>; | ||
38 | interrupts = <0 102 0>; | ||
39 | spi-max-frequency = <19200000>; | ||
40 | |||
41 | clocks = <&gcc GCC_BLSP2_QUP2_SPI_APPS_CLK>, <&gcc GCC_BLSP2_AHB_CLK>; | ||
42 | clock-names = "core", "iface"; | ||
43 | |||
44 | pinctrl-names = "default"; | ||
45 | pinctrl-0 = <&spi8_default>; | ||
46 | |||
47 | device@0 { | ||
48 | compatible = "arm,pl022-dummy"; | ||
49 | #address-cells = <1>; | ||
50 | #size-cells = <1>; | ||
51 | reg = <0>; /* Chip select 0 */ | ||
52 | spi-max-frequency = <19200000>; | ||
53 | spi-cpol; | ||
54 | }; | ||
55 | |||
56 | device@1 { | ||
57 | compatible = "arm,pl022-dummy"; | ||
58 | #address-cells = <1>; | ||
59 | #size-cells = <1>; | ||
60 | reg = <1>; /* Chip select 1 */ | ||
61 | spi-max-frequency = <9600000>; | ||
62 | spi-cpha; | ||
63 | }; | ||
64 | |||
65 | device@2 { | ||
66 | compatible = "arm,pl022-dummy"; | ||
67 | #address-cells = <1>; | ||
68 | #size-cells = <1>; | ||
69 | reg = <2>; /* Chip select 2 */ | ||
70 | spi-max-frequency = <19200000>; | ||
71 | spi-cpol; | ||
72 | spi-cpha; | ||
73 | }; | ||
74 | |||
75 | device@3 { | ||
76 | compatible = "arm,pl022-dummy"; | ||
77 | #address-cells = <1>; | ||
78 | #size-cells = <1>; | ||
79 | reg = <3>; /* Chip select 3 */ | ||
80 | spi-max-frequency = <19200000>; | ||
81 | spi-cpol; | ||
82 | spi-cpha; | ||
83 | spi-cs-high; | ||
84 | }; | ||
85 | }; | ||
diff --git a/Documentation/devicetree/bindings/spi/sh-hspi.txt b/Documentation/devicetree/bindings/spi/sh-hspi.txt index 30b57b1c8a13..319bad4af875 100644 --- a/Documentation/devicetree/bindings/spi/sh-hspi.txt +++ b/Documentation/devicetree/bindings/spi/sh-hspi.txt | |||
@@ -1,7 +1,29 @@ | |||
1 | Renesas HSPI. | 1 | Renesas HSPI. |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : "renesas,hspi" | 4 | - compatible : "renesas,hspi-<soctype>", "renesas,hspi" as fallback. |
5 | - reg : Offset and length of the register set for the device | 5 | Examples with soctypes are: |
6 | - interrupts : interrupt line used by HSPI | 6 | - "renesas,hspi-r8a7778" (R-Car M1) |
7 | - "renesas,hspi-r8a7779" (R-Car H1) | ||
8 | - reg : Offset and length of the register set for the device | ||
9 | - interrupt-parent : The phandle for the interrupt controller that | ||
10 | services interrupts for this device | ||
11 | - interrupts : Interrupt specifier | ||
12 | - #address-cells : Must be <1> | ||
13 | - #size-cells : Must be <0> | ||
14 | |||
15 | Pinctrl properties might be needed, too. See | ||
16 | Documentation/devicetree/bindings/pinctrl/renesas,*. | ||
17 | |||
18 | Example: | ||
19 | |||
20 | hspi0: spi@fffc7000 { | ||
21 | compatible = "renesas,hspi-r8a7778", "renesas,hspi"; | ||
22 | reg = <0xfffc7000 0x18>; | ||
23 | interrupt-parent = <&gic>; | ||
24 | interrupts = <0 63 IRQ_TYPE_LEVEL_HIGH>; | ||
25 | #address-cells = <1>; | ||
26 | #size-cells = <0>; | ||
27 | status = "disabled"; | ||
28 | }; | ||
7 | 29 | ||
diff --git a/Documentation/devicetree/bindings/spi/sh-msiof.txt b/Documentation/devicetree/bindings/spi/sh-msiof.txt index e6222106ca36..f24baf3b6cc1 100644 --- a/Documentation/devicetree/bindings/spi/sh-msiof.txt +++ b/Documentation/devicetree/bindings/spi/sh-msiof.txt | |||
@@ -1,12 +1,40 @@ | |||
1 | Renesas MSIOF spi controller | 1 | Renesas MSIOF spi controller |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : "renesas,sh-msiof" for SuperH or | 4 | - compatible : "renesas,msiof-<soctype>" for SoCs, |
5 | "renesas,sh-mobile-msiof" for SH Mobile series | 5 | "renesas,sh-msiof" for SuperH, or |
6 | - reg : Offset and length of the register set for the device | 6 | "renesas,sh-mobile-msiof" for SH Mobile series. |
7 | - interrupts : interrupt line used by MSIOF | 7 | Examples with soctypes are: |
8 | "renesas,msiof-r8a7790" (R-Car H2) | ||
9 | "renesas,msiof-r8a7791" (R-Car M2) | ||
10 | - reg : Offset and length of the register set for the device | ||
11 | - interrupt-parent : The phandle for the interrupt controller that | ||
12 | services interrupts for this device | ||
13 | - interrupts : Interrupt specifier | ||
14 | - #address-cells : Must be <1> | ||
15 | - #size-cells : Must be <0> | ||
8 | 16 | ||
9 | Optional properties: | 17 | Optional properties: |
10 | - num-cs : total number of chip-selects | 18 | - clocks : Must contain a reference to the functional clock. |
11 | - renesas,tx-fifo-size : Overrides the default tx fifo size given in words | 19 | - num-cs : Total number of chip-selects (default is 1) |
12 | - renesas,rx-fifo-size : Overrides the default rx fifo size given in words | 20 | |
21 | Optional properties, deprecated for soctype-specific bindings: | ||
22 | - renesas,tx-fifo-size : Overrides the default tx fifo size given in words | ||
23 | (default is 64) | ||
24 | - renesas,rx-fifo-size : Overrides the default rx fifo size given in words | ||
25 | (default is 64, or 256 on R-Car H2 and M2) | ||
26 | |||
27 | Pinctrl properties might be needed, too. See | ||
28 | Documentation/devicetree/bindings/pinctrl/renesas,*. | ||
29 | |||
30 | Example: | ||
31 | |||
32 | msiof0: spi@e6e20000 { | ||
33 | compatible = "renesas,msiof-r8a7791"; | ||
34 | reg = <0 0xe6e20000 0 0x0064>; | ||
35 | interrupts = <0 156 IRQ_TYPE_LEVEL_HIGH>; | ||
36 | clocks = <&mstp0_clks R8A7791_CLK_MSIOF0>; | ||
37 | #address-cells = <1>; | ||
38 | #size-cells = <0>; | ||
39 | status = "disabled"; | ||
40 | }; | ||
diff --git a/Documentation/devicetree/bindings/spi/spi-fsl-dspi.txt b/Documentation/devicetree/bindings/spi/spi-fsl-dspi.txt index a1fb3035a42b..5376de40f10b 100644 --- a/Documentation/devicetree/bindings/spi/spi-fsl-dspi.txt +++ b/Documentation/devicetree/bindings/spi/spi-fsl-dspi.txt | |||
@@ -10,6 +10,7 @@ Required properties: | |||
10 | - pinctrl-names: must contain a "default" entry. | 10 | - pinctrl-names: must contain a "default" entry. |
11 | - spi-num-chipselects : the number of the chipselect signals. | 11 | - spi-num-chipselects : the number of the chipselect signals. |
12 | - bus-num : the slave chip chipselect signal number. | 12 | - bus-num : the slave chip chipselect signal number. |
13 | - big-endian : if DSPI modudle is big endian, the bool will be set in node. | ||
13 | Example: | 14 | Example: |
14 | 15 | ||
15 | dspi0@4002c000 { | 16 | dspi0@4002c000 { |
@@ -24,6 +25,7 @@ dspi0@4002c000 { | |||
24 | bus-num = <0>; | 25 | bus-num = <0>; |
25 | pinctrl-names = "default"; | 26 | pinctrl-names = "default"; |
26 | pinctrl-0 = <&pinctrl_dspi0_1>; | 27 | pinctrl-0 = <&pinctrl_dspi0_1>; |
28 | big-endian; | ||
27 | status = "okay"; | 29 | status = "okay"; |
28 | 30 | ||
29 | sflash: at26df081a@0 { | 31 | sflash: at26df081a@0 { |
diff --git a/Documentation/devicetree/bindings/spi/spi-rspi.txt b/Documentation/devicetree/bindings/spi/spi-rspi.txt new file mode 100644 index 000000000000..d57d82a74054 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi-rspi.txt | |||
@@ -0,0 +1,61 @@ | |||
1 | Device tree configuration for Renesas RSPI/QSPI driver | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : For Renesas Serial Peripheral Interface on legacy SH: | ||
5 | "renesas,rspi-<soctype>", "renesas,rspi" as fallback. | ||
6 | For Renesas Serial Peripheral Interface on RZ/A1H: | ||
7 | "renesas,rspi-<soctype>", "renesas,rspi-rz" as fallback. | ||
8 | For Quad Serial Peripheral Interface on R-Car Gen2: | ||
9 | "renesas,qspi-<soctype>", "renesas,qspi" as fallback. | ||
10 | Examples with soctypes are: | ||
11 | - "renesas,rspi-sh7757" (SH) | ||
12 | - "renesas,rspi-r7s72100" (RZ/A1H) | ||
13 | - "renesas,qspi-r8a7790" (R-Car H2) | ||
14 | - "renesas,qspi-r8a7791" (R-Car M2) | ||
15 | - reg : Address start and address range size of the device | ||
16 | - interrupts : A list of interrupt-specifiers, one for each entry in | ||
17 | interrupt-names. | ||
18 | If interrupt-names is not present, an interrupt specifier | ||
19 | for a single muxed interrupt. | ||
20 | - interrupt-names : A list of interrupt names. Should contain (if present): | ||
21 | - "error" for SPEI, | ||
22 | - "rx" for SPRI, | ||
23 | - "tx" to SPTI, | ||
24 | - "mux" for a single muxed interrupt. | ||
25 | - interrupt-parent : The phandle for the interrupt controller that | ||
26 | services interrupts for this device. | ||
27 | - num-cs : Number of chip selects. Some RSPI cores have more than 1. | ||
28 | - #address-cells : Must be <1> | ||
29 | - #size-cells : Must be <0> | ||
30 | |||
31 | Optional properties: | ||
32 | - clocks : Must contain a reference to the functional clock. | ||
33 | |||
34 | Pinctrl properties might be needed, too. See | ||
35 | Documentation/devicetree/bindings/pinctrl/renesas,*. | ||
36 | |||
37 | Examples: | ||
38 | |||
39 | spi0: spi@e800c800 { | ||
40 | compatible = "renesas,rspi-r7s72100", "renesas,rspi-rz"; | ||
41 | reg = <0xe800c800 0x24>; | ||
42 | interrupts = <0 238 IRQ_TYPE_LEVEL_HIGH>, | ||
43 | <0 239 IRQ_TYPE_LEVEL_HIGH>, | ||
44 | <0 240 IRQ_TYPE_LEVEL_HIGH>; | ||
45 | interrupt-names = "error", "rx", "tx"; | ||
46 | interrupt-parent = <&gic>; | ||
47 | num-cs = <1>; | ||
48 | #address-cells = <1>; | ||
49 | #size-cells = <0>; | ||
50 | }; | ||
51 | |||
52 | spi: spi@e6b10000 { | ||
53 | compatible = "renesas,qspi-r8a7791", "renesas,qspi"; | ||
54 | reg = <0 0xe6b10000 0 0x2c>; | ||
55 | interrupt-parent = <&gic>; | ||
56 | interrupts = <0 184 IRQ_TYPE_LEVEL_HIGH>; | ||
57 | clocks = <&mstp9_clks R8A7791_CLK_QSPI_MOD>; | ||
58 | num-cs = <1>; | ||
59 | #address-cells = <1>; | ||
60 | #size-cells = <0>; | ||
61 | }; | ||
diff --git a/Documentation/devicetree/bindings/spi/spi-sun4i.txt b/Documentation/devicetree/bindings/spi/spi-sun4i.txt new file mode 100644 index 000000000000..de827f5a301e --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi-sun4i.txt | |||
@@ -0,0 +1,24 @@ | |||
1 | Allwinner A10 SPI controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "allwinner,sun4-a10-spi". | ||
5 | - reg: Should contain register location and length. | ||
6 | - interrupts: Should contain interrupt. | ||
7 | - clocks: phandle to the clocks feeding the SPI controller. Two are | ||
8 | needed: | ||
9 | - "ahb": the gated AHB parent clock | ||
10 | - "mod": the parent module clock | ||
11 | - clock-names: Must contain the clock names described just above | ||
12 | |||
13 | Example: | ||
14 | |||
15 | spi1: spi@01c06000 { | ||
16 | compatible = "allwinner,sun4i-a10-spi"; | ||
17 | reg = <0x01c06000 0x1000>; | ||
18 | interrupts = <11>; | ||
19 | clocks = <&ahb_gates 21>, <&spi1_clk>; | ||
20 | clock-names = "ahb", "mod"; | ||
21 | status = "disabled"; | ||
22 | #address-cells = <1>; | ||
23 | #size-cells = <0>; | ||
24 | }; | ||
diff --git a/Documentation/devicetree/bindings/spi/spi-sun6i.txt b/Documentation/devicetree/bindings/spi/spi-sun6i.txt new file mode 100644 index 000000000000..21de73db6a05 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi-sun6i.txt | |||
@@ -0,0 +1,24 @@ | |||
1 | Allwinner A31 SPI controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "allwinner,sun6i-a31-spi". | ||
5 | - reg: Should contain register location and length. | ||
6 | - interrupts: Should contain interrupt. | ||
7 | - clocks: phandle to the clocks feeding the SPI controller. Two are | ||
8 | needed: | ||
9 | - "ahb": the gated AHB parent clock | ||
10 | - "mod": the parent module clock | ||
11 | - clock-names: Must contain the clock names described just above | ||
12 | - resets: phandle to the reset controller asserting this device in | ||
13 | reset | ||
14 | |||
15 | Example: | ||
16 | |||
17 | spi1: spi@01c69000 { | ||
18 | compatible = "allwinner,sun6i-a31-spi"; | ||
19 | reg = <0x01c69000 0x1000>; | ||
20 | interrupts = <0 66 4>; | ||
21 | clocks = <&ahb1_gates 21>, <&spi1_clk>; | ||
22 | clock-names = "ahb", "mod"; | ||
23 | resets = <&ahb1_rst 21>; | ||
24 | }; | ||
diff --git a/Documentation/devicetree/bindings/spi/spi-xtensa-xtfpga.txt b/Documentation/devicetree/bindings/spi/spi-xtensa-xtfpga.txt new file mode 100644 index 000000000000..b6ebe2bc7041 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi-xtensa-xtfpga.txt | |||
@@ -0,0 +1,9 @@ | |||
1 | Cadence Xtensa XTFPGA platform SPI controller. | ||
2 | |||
3 | This simple SPI master controller is built into xtfpga bitstreams and is used | ||
4 | to control daughterboard audio codec. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible: should be "cdns,xtfpga-spi". | ||
8 | - reg: physical base address of the controller and length of memory mapped | ||
9 | region. | ||
diff --git a/Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.txt b/Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.txt new file mode 100644 index 000000000000..715d0998af8e --- /dev/null +++ b/Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.txt | |||
@@ -0,0 +1,61 @@ | |||
1 | Qualcomm SPMI Controller (PMIC Arbiter) | ||
2 | |||
3 | The SPMI PMIC Arbiter is found on the Snapdragon 800 Series. It is an SPMI | ||
4 | controller with wrapping arbitration logic to allow for multiple on-chip | ||
5 | devices to control a single SPMI master. | ||
6 | |||
7 | The PMIC Arbiter can also act as an interrupt controller, providing interrupts | ||
8 | to slave devices. | ||
9 | |||
10 | See spmi.txt for the generic SPMI controller binding requirements for child | ||
11 | nodes. | ||
12 | |||
13 | See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt for | ||
14 | generic interrupt controller binding documentation. | ||
15 | |||
16 | Required properties: | ||
17 | - compatible : should be "qcom,spmi-pmic-arb". | ||
18 | - reg-names : must contain: | ||
19 | "core" - core registers | ||
20 | "intr" - interrupt controller registers | ||
21 | "cnfg" - configuration registers | ||
22 | - reg : address + size pairs describing the PMIC arb register sets; order must | ||
23 | correspond with the order of entries in reg-names | ||
24 | - #address-cells : must be set to 2 | ||
25 | - #size-cells : must be set to 0 | ||
26 | - qcom,ee : indicates the active Execution Environment identifier (0-5) | ||
27 | - qcom,channel : which of the PMIC Arb provided channels to use for accesses (0-5) | ||
28 | - interrupts : interrupt list for the PMIC Arb controller, must contain a | ||
29 | single interrupt entry for the peripheral interrupt | ||
30 | - interrupt-names : corresponding interrupt names for the interrupts | ||
31 | listed in the 'interrupts' property, must contain: | ||
32 | "periph_irq" - summary interrupt for PMIC peripherals | ||
33 | - interrupt-controller : boolean indicator that the PMIC arbiter is an interrupt controller | ||
34 | - #interrupt-cells : must be set to 4. Interrupts are specified as a 4-tuple: | ||
35 | cell 1: slave ID for the requested interrupt (0-15) | ||
36 | cell 2: peripheral ID for requested interrupt (0-255) | ||
37 | cell 3: the requested peripheral interrupt (0-7) | ||
38 | cell 4: interrupt flags indicating level-sense information, as defined in | ||
39 | dt-bindings/interrupt-controller/irq.h | ||
40 | |||
41 | Example: | ||
42 | |||
43 | spmi { | ||
44 | compatible = "qcom,spmi-pmic-arb"; | ||
45 | reg-names = "core", "intr", "cnfg"; | ||
46 | reg = <0xfc4cf000 0x1000>, | ||
47 | <0xfc4cb000 0x1000>, | ||
48 | <0xfc4ca000 0x1000>; | ||
49 | |||
50 | interrupt-names = "periph_irq"; | ||
51 | interrupts = <0 190 0>; | ||
52 | |||
53 | qcom,ee = <0>; | ||
54 | qcom,channel = <0>; | ||
55 | |||
56 | #address-cells = <2>; | ||
57 | #size-cells = <0>; | ||
58 | |||
59 | interrupt-controller; | ||
60 | #interrupt-cells = <4>; | ||
61 | }; | ||
diff --git a/Documentation/devicetree/bindings/spmi/spmi.txt b/Documentation/devicetree/bindings/spmi/spmi.txt new file mode 100644 index 000000000000..462a42fb3a1e --- /dev/null +++ b/Documentation/devicetree/bindings/spmi/spmi.txt | |||
@@ -0,0 +1,41 @@ | |||
1 | System Power Management Interface (SPMI) Controller | ||
2 | |||
3 | This document defines a generic set of bindings for use by SPMI controllers. A | ||
4 | controller is modelled in device tree as a node with zero or more child nodes, | ||
5 | each representing a unique slave on the bus. | ||
6 | |||
7 | Required properties: | ||
8 | - #address-cells : must be set to 2 | ||
9 | - #size-cells : must be set to 0 | ||
10 | |||
11 | Child nodes: | ||
12 | |||
13 | An SPMI controller node can contain zero or more child nodes representing slave | ||
14 | devices on the bus. Child 'reg' properties are specified as an address, type | ||
15 | pair. The address must be in the range 0-15 (4 bits). The type must be one of | ||
16 | SPMI_USID (0) or SPMI_GSID (1) for Unique Slave ID or Group Slave ID respectively. | ||
17 | These are the identifiers "statically assigned by the system integrator", as | ||
18 | per the SPMI spec. | ||
19 | |||
20 | Each child node must have one and only one 'reg' entry of type SPMI_USID. | ||
21 | |||
22 | #include <dt-bindings/spmi/spmi.h> | ||
23 | |||
24 | spmi@.. { | ||
25 | compatible = "..."; | ||
26 | reg = <...>; | ||
27 | |||
28 | #address-cells = <2>; | ||
29 | #size-cells <0>; | ||
30 | |||
31 | child@0 { | ||
32 | compatible = "..."; | ||
33 | reg = <0 SPMI_USID>; | ||
34 | }; | ||
35 | |||
36 | child@7 { | ||
37 | compatible = "..."; | ||
38 | reg = <7 SPMI_USID | ||
39 | 3 SPMI_GSID>; | ||
40 | }; | ||
41 | }; | ||
diff --git a/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt b/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt index b876d4925a57..3be5ce7a9654 100644 --- a/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt +++ b/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt | |||
@@ -1,3 +1,22 @@ | |||
1 | Freescale i.MX DRM master device | ||
2 | ================================ | ||
3 | |||
4 | The freescale i.MX DRM master device is a virtual device needed to list all | ||
5 | IPU or other display interface nodes that comprise the graphics subsystem. | ||
6 | |||
7 | Required properties: | ||
8 | - compatible: Should be "fsl,imx-display-subsystem" | ||
9 | - ports: Should contain a list of phandles pointing to display interface ports | ||
10 | of IPU devices | ||
11 | |||
12 | example: | ||
13 | |||
14 | display-subsystem { | ||
15 | compatible = "fsl,display-subsystem"; | ||
16 | ports = <&ipu_di0>; | ||
17 | }; | ||
18 | |||
19 | |||
1 | Freescale i.MX IPUv3 | 20 | Freescale i.MX IPUv3 |
2 | ==================== | 21 | ==================== |
3 | 22 | ||
@@ -7,18 +26,31 @@ Required properties: | |||
7 | datasheet | 26 | datasheet |
8 | - interrupts: Should contain sync interrupt and error interrupt, | 27 | - interrupts: Should contain sync interrupt and error interrupt, |
9 | in this order. | 28 | in this order. |
10 | - #crtc-cells: 1, See below | ||
11 | - resets: phandle pointing to the system reset controller and | 29 | - resets: phandle pointing to the system reset controller and |
12 | reset line index, see reset/fsl,imx-src.txt for details | 30 | reset line index, see reset/fsl,imx-src.txt for details |
31 | Optional properties: | ||
32 | - port@[0-3]: Port nodes with endpoint definitions as defined in | ||
33 | Documentation/devicetree/bindings/media/video-interfaces.txt. | ||
34 | Ports 0 and 1 should correspond to CSI0 and CSI1, | ||
35 | ports 2 and 3 should correspond to DI0 and DI1, respectively. | ||
13 | 36 | ||
14 | example: | 37 | example: |
15 | 38 | ||
16 | ipu: ipu@18000000 { | 39 | ipu: ipu@18000000 { |
17 | #crtc-cells = <1>; | 40 | #address-cells = <1>; |
41 | #size-cells = <0>; | ||
18 | compatible = "fsl,imx53-ipu"; | 42 | compatible = "fsl,imx53-ipu"; |
19 | reg = <0x18000000 0x080000000>; | 43 | reg = <0x18000000 0x080000000>; |
20 | interrupts = <11 10>; | 44 | interrupts = <11 10>; |
21 | resets = <&src 2>; | 45 | resets = <&src 2>; |
46 | |||
47 | ipu_di0: port@2 { | ||
48 | reg = <2>; | ||
49 | |||
50 | ipu_di0_disp0: endpoint { | ||
51 | remote-endpoint = <&display_in>; | ||
52 | }; | ||
53 | }; | ||
22 | }; | 54 | }; |
23 | 55 | ||
24 | Parallel display support | 56 | Parallel display support |
@@ -26,19 +58,25 @@ Parallel display support | |||
26 | 58 | ||
27 | Required properties: | 59 | Required properties: |
28 | - compatible: Should be "fsl,imx-parallel-display" | 60 | - compatible: Should be "fsl,imx-parallel-display" |
29 | - crtc: the crtc this display is connected to, see below | ||
30 | Optional properties: | 61 | Optional properties: |
31 | - interface_pix_fmt: How this display is connected to the | 62 | - interface_pix_fmt: How this display is connected to the |
32 | crtc. Currently supported types: "rgb24", "rgb565", "bgr666" | 63 | display interface. Currently supported types: "rgb24", "rgb565", "bgr666" |
33 | - edid: verbatim EDID data block describing attached display. | 64 | - edid: verbatim EDID data block describing attached display. |
34 | - ddc: phandle describing the i2c bus handling the display data | 65 | - ddc: phandle describing the i2c bus handling the display data |
35 | channel | 66 | channel |
67 | - port: A port node with endpoint definitions as defined in | ||
68 | Documentation/devicetree/bindings/media/video-interfaces.txt. | ||
36 | 69 | ||
37 | example: | 70 | example: |
38 | 71 | ||
39 | display@di0 { | 72 | display@di0 { |
40 | compatible = "fsl,imx-parallel-display"; | 73 | compatible = "fsl,imx-parallel-display"; |
41 | edid = [edid-data]; | 74 | edid = [edid-data]; |
42 | crtc = <&ipu 0>; | ||
43 | interface-pix-fmt = "rgb24"; | 75 | interface-pix-fmt = "rgb24"; |
76 | |||
77 | port { | ||
78 | display_in: endpoint { | ||
79 | remote-endpoint = <&ipu_di0_disp0>; | ||
80 | }; | ||
81 | }; | ||
44 | }; | 82 | }; |
diff --git a/Documentation/devicetree/bindings/staging/imx-drm/hdmi.txt b/Documentation/devicetree/bindings/staging/imx-drm/hdmi.txt new file mode 100644 index 000000000000..1b756cf9afb0 --- /dev/null +++ b/Documentation/devicetree/bindings/staging/imx-drm/hdmi.txt | |||
@@ -0,0 +1,58 @@ | |||
1 | Device-Tree bindings for HDMI Transmitter | ||
2 | |||
3 | HDMI Transmitter | ||
4 | ================ | ||
5 | |||
6 | The HDMI Transmitter is a Synopsys DesignWare HDMI 1.4 TX controller IP | ||
7 | with accompanying PHY IP. | ||
8 | |||
9 | Required properties: | ||
10 | - #address-cells : should be <1> | ||
11 | - #size-cells : should be <0> | ||
12 | - compatible : should be "fsl,imx6q-hdmi" or "fsl,imx6dl-hdmi". | ||
13 | - gpr : should be <&gpr>. | ||
14 | The phandle points to the iomuxc-gpr region containing the HDMI | ||
15 | multiplexer control register. | ||
16 | - clocks, clock-names : phandles to the HDMI iahb and isrf clocks, as described | ||
17 | in Documentation/devicetree/bindings/clock/clock-bindings.txt and | ||
18 | Documentation/devicetree/bindings/clock/imx6q-clock.txt. | ||
19 | - port@[0-4]: Up to four port nodes with endpoint definitions as defined in | ||
20 | Documentation/devicetree/bindings/media/video-interfaces.txt, | ||
21 | corresponding to the four inputs to the HDMI multiplexer. | ||
22 | |||
23 | Optional properties: | ||
24 | - ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing | ||
25 | |||
26 | example: | ||
27 | |||
28 | gpr: iomuxc-gpr@020e0000 { | ||
29 | /* ... */ | ||
30 | }; | ||
31 | |||
32 | hdmi: hdmi@0120000 { | ||
33 | #address-cells = <1>; | ||
34 | #size-cells = <0>; | ||
35 | compatible = "fsl,imx6q-hdmi"; | ||
36 | reg = <0x00120000 0x9000>; | ||
37 | interrupts = <0 115 0x04>; | ||
38 | gpr = <&gpr>; | ||
39 | clocks = <&clks 123>, <&clks 124>; | ||
40 | clock-names = "iahb", "isfr"; | ||
41 | ddc-i2c-bus = <&i2c2>; | ||
42 | |||
43 | port@0 { | ||
44 | reg = <0>; | ||
45 | |||
46 | hdmi_mux_0: endpoint { | ||
47 | remote-endpoint = <&ipu1_di0_hdmi>; | ||
48 | }; | ||
49 | }; | ||
50 | |||
51 | port@1 { | ||
52 | reg = <1>; | ||
53 | |||
54 | hdmi_mux_1: endpoint { | ||
55 | remote-endpoint = <&ipu1_di1_hdmi>; | ||
56 | }; | ||
57 | }; | ||
58 | }; | ||
diff --git a/Documentation/devicetree/bindings/staging/imx-drm/ldb.txt b/Documentation/devicetree/bindings/staging/imx-drm/ldb.txt index ed9377811ee2..578a1fca366e 100644 --- a/Documentation/devicetree/bindings/staging/imx-drm/ldb.txt +++ b/Documentation/devicetree/bindings/staging/imx-drm/ldb.txt | |||
@@ -50,12 +50,14 @@ have a look at Documentation/devicetree/bindings/video/display-timing.txt. | |||
50 | 50 | ||
51 | Required properties: | 51 | Required properties: |
52 | - reg : should be <0> or <1> | 52 | - reg : should be <0> or <1> |
53 | - crtcs : a list of phandles with index pointing to the IPU display interfaces | ||
54 | that can be used as video source for this channel. | ||
55 | - fsl,data-mapping : should be "spwg" or "jeida" | 53 | - fsl,data-mapping : should be "spwg" or "jeida" |
56 | This describes how the color bits are laid out in the | 54 | This describes how the color bits are laid out in the |
57 | serialized LVDS signal. | 55 | serialized LVDS signal. |
58 | - fsl,data-width : should be <18> or <24> | 56 | - fsl,data-width : should be <18> or <24> |
57 | - port: A port node with endpoint definitions as defined in | ||
58 | Documentation/devicetree/bindings/media/video-interfaces.txt. | ||
59 | On i.MX6, there should be four ports (port@[0-3]) that correspond | ||
60 | to the four LVDS multiplexer inputs. | ||
59 | 61 | ||
60 | example: | 62 | example: |
61 | 63 | ||
@@ -77,23 +79,33 @@ ldb: ldb@53fa8008 { | |||
77 | 79 | ||
78 | lvds-channel@0 { | 80 | lvds-channel@0 { |
79 | reg = <0>; | 81 | reg = <0>; |
80 | crtcs = <&ipu 0>; | ||
81 | fsl,data-mapping = "spwg"; | 82 | fsl,data-mapping = "spwg"; |
82 | fsl,data-width = <24>; | 83 | fsl,data-width = <24>; |
83 | 84 | ||
84 | display-timings { | 85 | display-timings { |
85 | /* ... */ | 86 | /* ... */ |
86 | }; | 87 | }; |
88 | |||
89 | port { | ||
90 | lvds0_in: endpoint { | ||
91 | remote-endpoint = <&ipu_di0_lvds0>; | ||
92 | }; | ||
93 | }; | ||
87 | }; | 94 | }; |
88 | 95 | ||
89 | lvds-channel@1 { | 96 | lvds-channel@1 { |
90 | reg = <1>; | 97 | reg = <1>; |
91 | crtcs = <&ipu 1>; | ||
92 | fsl,data-mapping = "spwg"; | 98 | fsl,data-mapping = "spwg"; |
93 | fsl,data-width = <24>; | 99 | fsl,data-width = <24>; |
94 | 100 | ||
95 | display-timings { | 101 | display-timings { |
96 | /* ... */ | 102 | /* ... */ |
97 | }; | 103 | }; |
104 | |||
105 | port { | ||
106 | lvds1_in: endpoint { | ||
107 | remote-endpoint = <&ipu_di1_lvds1>; | ||
108 | }; | ||
109 | }; | ||
98 | }; | 110 | }; |
99 | }; | 111 | }; |
diff --git a/Documentation/devicetree/bindings/timer/allwinner,sun4i-timer.txt b/Documentation/devicetree/bindings/timer/allwinner,sun4i-timer.txt index 48aeb7884ed3..5c2e23574ca0 100644 --- a/Documentation/devicetree/bindings/timer/allwinner,sun4i-timer.txt +++ b/Documentation/devicetree/bindings/timer/allwinner,sun4i-timer.txt | |||
@@ -2,7 +2,7 @@ Allwinner A1X SoCs Timer Controller | |||
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | 4 | ||
5 | - compatible : should be "allwinner,sun4i-timer" | 5 | - compatible : should be "allwinner,sun4i-a10-timer" |
6 | - reg : Specifies base physical address and size of the registers. | 6 | - reg : Specifies base physical address and size of the registers. |
7 | - interrupts : The interrupt of the first timer | 7 | - interrupts : The interrupt of the first timer |
8 | - clocks: phandle to the source clock (usually a 24 MHz fixed clock) | 8 | - clocks: phandle to the source clock (usually a 24 MHz fixed clock) |
@@ -10,7 +10,7 @@ Required properties: | |||
10 | Example: | 10 | Example: |
11 | 11 | ||
12 | timer { | 12 | timer { |
13 | compatible = "allwinner,sun4i-timer"; | 13 | compatible = "allwinner,sun4i-a10-timer"; |
14 | reg = <0x01c20c00 0x400>; | 14 | reg = <0x01c20c00 0x400>; |
15 | interrupts = <22>; | 15 | interrupts = <22>; |
16 | clocks = <&osc>; | 16 | clocks = <&osc>; |
diff --git a/Documentation/devicetree/bindings/timer/ti,keystone-timer.txt b/Documentation/devicetree/bindings/timer/ti,keystone-timer.txt new file mode 100644 index 000000000000..5fbe361252b4 --- /dev/null +++ b/Documentation/devicetree/bindings/timer/ti,keystone-timer.txt | |||
@@ -0,0 +1,29 @@ | |||
1 | * Device tree bindings for Texas instruments Keystone timer | ||
2 | |||
3 | This document provides bindings for the 64-bit timer in the KeyStone | ||
4 | architecture devices. The timer can be configured as a general-purpose 64-bit | ||
5 | timer, dual general-purpose 32-bit timers. When configured as dual 32-bit | ||
6 | timers, each half can operate in conjunction (chain mode) or independently | ||
7 | (unchained mode) of each other. | ||
8 | |||
9 | It is global timer is a free running up-counter and can generate interrupt | ||
10 | when the counter reaches preset counter values. | ||
11 | |||
12 | Documentation: | ||
13 | http://www.ti.com/lit/ug/sprugv5a/sprugv5a.pdf | ||
14 | |||
15 | Required properties: | ||
16 | |||
17 | - compatible : should be "ti,keystone-timer". | ||
18 | - reg : specifies base physical address and count of the registers. | ||
19 | - interrupts : interrupt generated by the timer. | ||
20 | - clocks : the clock feeding the timer clock. | ||
21 | |||
22 | Example: | ||
23 | |||
24 | timer@22f0000 { | ||
25 | compatible = "ti,keystone-timer"; | ||
26 | reg = <0x022f0000 0x80>; | ||
27 | interrupts = <GIC_SPI 110 IRQ_TYPE_EDGE_RISING>; | ||
28 | clocks = <&clktimer15>; | ||
29 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/ci-hdrc-imx.txt b/Documentation/devicetree/bindings/usb/ci-hdrc-imx.txt index b4b5b7906c88..a6a32cb7f777 100644 --- a/Documentation/devicetree/bindings/usb/ci-hdrc-imx.txt +++ b/Documentation/devicetree/bindings/usb/ci-hdrc-imx.txt | |||
@@ -18,6 +18,7 @@ Optional properties: | |||
18 | - vbus-supply: regulator for vbus | 18 | - vbus-supply: regulator for vbus |
19 | - disable-over-current: disable over current detect | 19 | - disable-over-current: disable over current detect |
20 | - external-vbus-divider: enables off-chip resistor divider for Vbus | 20 | - external-vbus-divider: enables off-chip resistor divider for Vbus |
21 | - maximum-speed: limit the maximum connection speed to "full-speed". | ||
21 | 22 | ||
22 | Examples: | 23 | Examples: |
23 | usb@02184000 { /* USB OTG */ | 24 | usb@02184000 { /* USB OTG */ |
@@ -28,4 +29,5 @@ usb@02184000 { /* USB OTG */ | |||
28 | fsl,usbmisc = <&usbmisc 0>; | 29 | fsl,usbmisc = <&usbmisc 0>; |
29 | disable-over-current; | 30 | disable-over-current; |
30 | external-vbus-divider; | 31 | external-vbus-divider; |
32 | maximum-speed = "full-speed"; | ||
31 | }; | 33 | }; |
diff --git a/Documentation/devicetree/bindings/usb/ci-hdrc-zevio.txt b/Documentation/devicetree/bindings/usb/ci-hdrc-zevio.txt new file mode 100644 index 000000000000..abbcb2aea38c --- /dev/null +++ b/Documentation/devicetree/bindings/usb/ci-hdrc-zevio.txt | |||
@@ -0,0 +1,17 @@ | |||
1 | * LSI Zevio USB OTG Controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "lsi,zevio-usb" | ||
5 | - reg: Should contain registers location and length | ||
6 | - interrupts: Should contain controller interrupt | ||
7 | |||
8 | Optional properties: | ||
9 | - vbus-supply: regulator for vbus | ||
10 | |||
11 | Examples: | ||
12 | usb0: usb@b0000000 { | ||
13 | reg = <0xb0000000 0x1000>; | ||
14 | compatible = "lsi,zevio-usb"; | ||
15 | interrupts = <8>; | ||
16 | vbus-supply = <&vbus_reg>; | ||
17 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt index e807635f9e1c..471366d6a129 100644 --- a/Documentation/devicetree/bindings/usb/dwc3.txt +++ b/Documentation/devicetree/bindings/usb/dwc3.txt | |||
@@ -6,11 +6,13 @@ Required properties: | |||
6 | - compatible: must be "snps,dwc3" | 6 | - compatible: must be "snps,dwc3" |
7 | - reg : Address and length of the register set for the device | 7 | - reg : Address and length of the register set for the device |
8 | - interrupts: Interrupts used by the dwc3 controller. | 8 | - interrupts: Interrupts used by the dwc3 controller. |
9 | |||
10 | Optional properties: | ||
9 | - usb-phy : array of phandle for the PHY device. The first element | 11 | - usb-phy : array of phandle for the PHY device. The first element |
10 | in the array is expected to be a handle to the USB2/HS PHY and | 12 | in the array is expected to be a handle to the USB2/HS PHY and |
11 | the second element is expected to be a handle to the USB3/SS PHY | 13 | the second element is expected to be a handle to the USB3/SS PHY |
12 | 14 | - phys: from the *Generic PHY* bindings | |
13 | Optional properties: | 15 | - phy-names: from the *Generic PHY* bindings |
14 | - tx-fifo-resize: determines if the FIFO *has* to be reallocated. | 16 | - tx-fifo-resize: determines if the FIFO *has* to be reallocated. |
15 | 17 | ||
16 | This is usually a subnode to DWC3 glue to which it is connected. | 18 | This is usually a subnode to DWC3 glue to which it is connected. |
diff --git a/Documentation/devicetree/bindings/usb/fsl-usb.txt b/Documentation/devicetree/bindings/usb/fsl-usb.txt index bd5723f0b67e..4779c029b675 100644 --- a/Documentation/devicetree/bindings/usb/fsl-usb.txt +++ b/Documentation/devicetree/bindings/usb/fsl-usb.txt | |||
@@ -8,7 +8,9 @@ and additions : | |||
8 | Required properties : | 8 | Required properties : |
9 | - compatible : Should be "fsl-usb2-mph" for multi port host USB | 9 | - compatible : Should be "fsl-usb2-mph" for multi port host USB |
10 | controllers, or "fsl-usb2-dr" for dual role USB controllers | 10 | controllers, or "fsl-usb2-dr" for dual role USB controllers |
11 | or "fsl,mpc5121-usb2-dr" for dual role USB controllers of MPC5121 | 11 | or "fsl,mpc5121-usb2-dr" for dual role USB controllers of MPC5121. |
12 | Wherever applicable, the IP version of the USB controller should | ||
13 | also be mentioned (for eg. fsl-usb2-dr-v2.2 for bsc9132). | ||
12 | - phy_type : For multi port host USB controllers, should be one of | 14 | - phy_type : For multi port host USB controllers, should be one of |
13 | "ulpi", or "serial". For dual role USB controllers, should be | 15 | "ulpi", or "serial". For dual role USB controllers, should be |
14 | one of "ulpi", "utmi", "utmi_wide", or "serial". | 16 | one of "ulpi", "utmi", "utmi_wide", or "serial". |
diff --git a/Documentation/devicetree/bindings/usb/mxs-phy.txt b/Documentation/devicetree/bindings/usb/mxs-phy.txt index 5835b27146ea..cef181a9d8bd 100644 --- a/Documentation/devicetree/bindings/usb/mxs-phy.txt +++ b/Documentation/devicetree/bindings/usb/mxs-phy.txt | |||
@@ -1,13 +1,19 @@ | |||
1 | * Freescale MXS USB Phy Device | 1 | * Freescale MXS USB Phy Device |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: Should be "fsl,imx23-usbphy" | 4 | - compatible: should contain: |
5 | * "fsl,imx23-usbphy" for imx23 and imx28 | ||
6 | * "fsl,imx6q-usbphy" for imx6dq and imx6dl | ||
7 | * "fsl,imx6sl-usbphy" for imx6sl | ||
8 | "fsl,imx23-usbphy" is still a fallback for other strings | ||
5 | - reg: Should contain registers location and length | 9 | - reg: Should contain registers location and length |
6 | - interrupts: Should contain phy interrupt | 10 | - interrupts: Should contain phy interrupt |
11 | - fsl,anatop: phandle for anatop register, it is only for imx6 SoC series | ||
7 | 12 | ||
8 | Example: | 13 | Example: |
9 | usbphy1: usbphy@020c9000 { | 14 | usbphy1: usbphy@020c9000 { |
10 | compatible = "fsl,imx6q-usbphy", "fsl,imx23-usbphy"; | 15 | compatible = "fsl,imx6q-usbphy", "fsl,imx23-usbphy"; |
11 | reg = <0x020c9000 0x1000>; | 16 | reg = <0x020c9000 0x1000>; |
12 | interrupts = <0 44 0x04>; | 17 | interrupts = <0 44 0x04>; |
18 | fsl,anatop = <&anatop>; | ||
13 | }; | 19 | }; |
diff --git a/Documentation/devicetree/bindings/usb/omap-usb.txt b/Documentation/devicetree/bindings/usb/omap-usb.txt index c495135115cb..38b2faec4199 100644 --- a/Documentation/devicetree/bindings/usb/omap-usb.txt +++ b/Documentation/devicetree/bindings/usb/omap-usb.txt | |||
@@ -76,27 +76,3 @@ omap_dwc3 { | |||
76 | ranges; | 76 | ranges; |
77 | }; | 77 | }; |
78 | 78 | ||
79 | OMAP CONTROL USB | ||
80 | |||
81 | Required properties: | ||
82 | - compatible: Should be one of | ||
83 | "ti,control-phy-otghs" - if it has otghs_control mailbox register as on OMAP4. | ||
84 | "ti,control-phy-usb2" - if it has Power down bit in control_dev_conf register | ||
85 | e.g. USB2_PHY on OMAP5. | ||
86 | "ti,control-phy-pipe3" - if it has DPLL and individual Rx & Tx power control | ||
87 | e.g. USB3 PHY and SATA PHY on OMAP5. | ||
88 | "ti,control-phy-dra7usb2" - if it has power down register like USB2 PHY on | ||
89 | DRA7 platform. | ||
90 | "ti,control-phy-am437usb2" - if it has power down register like USB2 PHY on | ||
91 | AM437 platform. | ||
92 | - reg : Address and length of the register set for the device. It contains | ||
93 | the address of "otghs_control" for control-phy-otghs or "power" register | ||
94 | for other types. | ||
95 | - reg-names: should be "otghs_control" control-phy-otghs and "power" for | ||
96 | other types. | ||
97 | |||
98 | omap_control_usb: omap-control-usb@4a002300 { | ||
99 | compatible = "ti,control-phy-otghs"; | ||
100 | reg = <0x4a00233c 0x4>; | ||
101 | reg-names = "otghs_control"; | ||
102 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/usb-ehci.txt b/Documentation/devicetree/bindings/usb/usb-ehci.txt index fa18612f757b..ff151ec084c4 100644 --- a/Documentation/devicetree/bindings/usb/usb-ehci.txt +++ b/Documentation/devicetree/bindings/usb/usb-ehci.txt | |||
@@ -1,19 +1,20 @@ | |||
1 | USB EHCI controllers | 1 | USB EHCI controllers |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : should be "usb-ehci". | 4 | - compatible : should be "generic-ehci". |
5 | - reg : should contain at least address and length of the standard EHCI | 5 | - reg : should contain at least address and length of the standard EHCI |
6 | register set for the device. Optional platform-dependent registers | 6 | register set for the device. Optional platform-dependent registers |
7 | (debug-port or other) can be also specified here, but only after | 7 | (debug-port or other) can be also specified here, but only after |
8 | definition of standard EHCI registers. | 8 | definition of standard EHCI registers. |
9 | - interrupts : one EHCI interrupt should be described here. | 9 | - interrupts : one EHCI interrupt should be described here. |
10 | If device registers are implemented in big endian mode, the device | 10 | |
11 | node should have "big-endian-regs" property. | 11 | Optional properties: |
12 | If controller implementation operates with big endian descriptors, | 12 | - big-endian-regs : boolean, set this for hcds with big-endian registers |
13 | "big-endian-desc" property should be specified. | 13 | - big-endian-desc : boolean, set this for hcds with big-endian descriptors |
14 | If both big endian registers and descriptors are used by the controller | 14 | - big-endian : boolean, for hcds with big-endian-regs + big-endian-desc |
15 | implementation, "big-endian" property can be specified instead of having | 15 | - clocks : a list of phandle + clock specifier pairs |
16 | both "big-endian-regs" and "big-endian-desc". | 16 | - phys : phandle + phy specifier pair |
17 | - phy-names : "usb" | ||
17 | 18 | ||
18 | Example (Sequoia 440EPx): | 19 | Example (Sequoia 440EPx): |
19 | ehci@e0000300 { | 20 | ehci@e0000300 { |
@@ -23,3 +24,13 @@ Example (Sequoia 440EPx): | |||
23 | reg = <0 e0000300 90 0 e0000390 70>; | 24 | reg = <0 e0000300 90 0 e0000390 70>; |
24 | big-endian; | 25 | big-endian; |
25 | }; | 26 | }; |
27 | |||
28 | Example (Allwinner sun4i A10 SoC): | ||
29 | ehci0: usb@01c14000 { | ||
30 | compatible = "allwinner,sun4i-a10-ehci", "generic-ehci"; | ||
31 | reg = <0x01c14000 0x100>; | ||
32 | interrupts = <39>; | ||
33 | clocks = <&ahb_gates 1>; | ||
34 | phys = <&usbphy 1>; | ||
35 | phy-names = "usb"; | ||
36 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/usb-ohci.txt b/Documentation/devicetree/bindings/usb/usb-ohci.txt new file mode 100644 index 000000000000..45f67d91e888 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/usb-ohci.txt | |||
@@ -0,0 +1,25 @@ | |||
1 | USB OHCI controllers | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "generic-ohci" | ||
5 | - reg : ohci controller register range (address and length) | ||
6 | - interrupts : ohci controller interrupt | ||
7 | |||
8 | Optional properties: | ||
9 | - big-endian-regs : boolean, set this for hcds with big-endian registers | ||
10 | - big-endian-desc : boolean, set this for hcds with big-endian descriptors | ||
11 | - big-endian : boolean, for hcds with big-endian-regs + big-endian-desc | ||
12 | - clocks : a list of phandle + clock specifier pairs | ||
13 | - phys : phandle + phy specifier pair | ||
14 | - phy-names : "usb" | ||
15 | |||
16 | Example: | ||
17 | |||
18 | ohci0: usb@01c14400 { | ||
19 | compatible = "allwinner,sun4i-a10-ohci", "generic-ohci"; | ||
20 | reg = <0x01c14400 0x100>; | ||
21 | interrupts = <64>; | ||
22 | clocks = <&usb_clk 6>, <&ahb_gates 2>; | ||
23 | phys = <&usbphy 1>; | ||
24 | phy-names = "usb"; | ||
25 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/usb-phy.txt b/Documentation/devicetree/bindings/usb/usb-phy.txt deleted file mode 100644 index c0245c888982..000000000000 --- a/Documentation/devicetree/bindings/usb/usb-phy.txt +++ /dev/null | |||
@@ -1,48 +0,0 @@ | |||
1 | USB PHY | ||
2 | |||
3 | OMAP USB2 PHY | ||
4 | |||
5 | Required properties: | ||
6 | - compatible: Should be "ti,omap-usb2" | ||
7 | - reg : Address and length of the register set for the device. | ||
8 | - #phy-cells: determine the number of cells that should be given in the | ||
9 | phandle while referencing this phy. | ||
10 | |||
11 | Optional properties: | ||
12 | - ctrl-module : phandle of the control module used by PHY driver to power on | ||
13 | the PHY. | ||
14 | |||
15 | This is usually a subnode of ocp2scp to which it is connected. | ||
16 | |||
17 | usb2phy@4a0ad080 { | ||
18 | compatible = "ti,omap-usb2"; | ||
19 | reg = <0x4a0ad080 0x58>; | ||
20 | ctrl-module = <&omap_control_usb>; | ||
21 | #phy-cells = <0>; | ||
22 | }; | ||
23 | |||
24 | OMAP USB3 PHY | ||
25 | |||
26 | Required properties: | ||
27 | - compatible: Should be "ti,omap-usb3" | ||
28 | - reg : Address and length of the register set for the device. | ||
29 | - reg-names: The names of the register addresses corresponding to the registers | ||
30 | filled in "reg". | ||
31 | - #phy-cells: determine the number of cells that should be given in the | ||
32 | phandle while referencing this phy. | ||
33 | |||
34 | Optional properties: | ||
35 | - ctrl-module : phandle of the control module used by PHY driver to power on | ||
36 | the PHY. | ||
37 | |||
38 | This is usually a subnode of ocp2scp to which it is connected. | ||
39 | |||
40 | usb3phy@4a084400 { | ||
41 | compatible = "ti,omap-usb3"; | ||
42 | reg = <0x4a084400 0x80>, | ||
43 | <0x4a084800 0x64>, | ||
44 | <0x4a084c00 0x40>; | ||
45 | reg-names = "phy_rx", "phy_tx", "pll_ctrl"; | ||
46 | ctrl-module = <&omap_control_usb>; | ||
47 | #phy-cells = <0>; | ||
48 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/platform-uhci.txt b/Documentation/devicetree/bindings/usb/usb-uhci.txt index a4fb0719d157..298133416c97 100644 --- a/Documentation/devicetree/bindings/usb/platform-uhci.txt +++ b/Documentation/devicetree/bindings/usb/usb-uhci.txt | |||
@@ -2,14 +2,14 @@ Generic Platform UHCI Controller | |||
2 | ----------------------------------------------------- | 2 | ----------------------------------------------------- |
3 | 3 | ||
4 | Required properties: | 4 | Required properties: |
5 | - compatible : "platform-uhci" | 5 | - compatible : "generic-uhci" (deprecated: "platform-uhci") |
6 | - reg : Should contain 1 register ranges(address and length) | 6 | - reg : Should contain 1 register ranges(address and length) |
7 | - interrupts : UHCI controller interrupt | 7 | - interrupts : UHCI controller interrupt |
8 | 8 | ||
9 | Example: | 9 | Example: |
10 | 10 | ||
11 | uhci@d8007b00 { | 11 | uhci@d8007b00 { |
12 | compatible = "platform-uhci"; | 12 | compatible = "generic-uhci"; |
13 | reg = <0xd8007b00 0x200>; | 13 | reg = <0xd8007b00 0x200>; |
14 | interrupts = <43>; | 14 | interrupts = <43>; |
15 | }; | 15 | }; |
diff --git a/Documentation/devicetree/bindings/usb/usb-xhci.txt b/Documentation/devicetree/bindings/usb/usb-xhci.txt index 5752df0e17a2..90f8f607d125 100644 --- a/Documentation/devicetree/bindings/usb/usb-xhci.txt +++ b/Documentation/devicetree/bindings/usb/usb-xhci.txt | |||
@@ -1,14 +1,14 @@ | |||
1 | USB xHCI controllers | 1 | USB xHCI controllers |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: should be "xhci-platform". | 4 | - compatible: should be "generic-xhci" (deprecated: "xhci-platform"). |
5 | - reg: should contain address and length of the standard XHCI | 5 | - reg: should contain address and length of the standard XHCI |
6 | register set for the device. | 6 | register set for the device. |
7 | - interrupts: one XHCI interrupt should be described here. | 7 | - interrupts: one XHCI interrupt should be described here. |
8 | 8 | ||
9 | Example: | 9 | Example: |
10 | usb@f0931000 { | 10 | usb@f0931000 { |
11 | compatible = "xhci-platform"; | 11 | compatible = "generic-xhci"; |
12 | reg = <0xf0931000 0x8c8>; | 12 | reg = <0xf0931000 0x8c8>; |
13 | interrupts = <0x0 0x4e 0x0>; | 13 | interrupts = <0x0 0x4e 0x0>; |
14 | }; | 14 | }; |
diff --git a/Documentation/devicetree/bindings/usb/via,vt8500-ehci.txt b/Documentation/devicetree/bindings/usb/via,vt8500-ehci.txt deleted file mode 100644 index 17b3ad1d97e7..000000000000 --- a/Documentation/devicetree/bindings/usb/via,vt8500-ehci.txt +++ /dev/null | |||
@@ -1,15 +0,0 @@ | |||
1 | VIA/Wondermedia VT8500 EHCI Controller | ||
2 | ----------------------------------------------------- | ||
3 | |||
4 | Required properties: | ||
5 | - compatible : "via,vt8500-ehci" | ||
6 | - reg : Should contain 1 register ranges(address and length) | ||
7 | - interrupts : ehci controller interrupt | ||
8 | |||
9 | Example: | ||
10 | |||
11 | ehci@d8007900 { | ||
12 | compatible = "via,vt8500-ehci"; | ||
13 | reg = <0xd8007900 0x200>; | ||
14 | interrupts = <43>; | ||
15 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/vt8500-ehci.txt b/Documentation/devicetree/bindings/usb/vt8500-ehci.txt deleted file mode 100644 index 5fb8fd6e250c..000000000000 --- a/Documentation/devicetree/bindings/usb/vt8500-ehci.txt +++ /dev/null | |||
@@ -1,12 +0,0 @@ | |||
1 | VIA VT8500 and Wondermedia WM8xxx SoC USB controllers. | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "via,vt8500-ehci" or "wm,prizm-ehci". | ||
5 | - reg: Address range of the ehci registers. size should be 0x200 | ||
6 | - interrupts: Should contain the ehci interrupt. | ||
7 | |||
8 | usb: ehci@D8007100 { | ||
9 | compatible = "wm,prizm-ehci", "usb-ehci"; | ||
10 | reg = <0xD8007100 0x200>; | ||
11 | interrupts = <1>; | ||
12 | }; | ||
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt index 40ce2df0e0e9..95465d57eb31 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.txt +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt | |||
@@ -3,6 +3,7 @@ Device tree binding vendor prefix registry. Keep list in alphabetical order. | |||
3 | This isn't an exhaustive list, but you should add new prefixes to it before | 3 | This isn't an exhaustive list, but you should add new prefixes to it before |
4 | using them to avoid name-space collisions. | 4 | using them to avoid name-space collisions. |
5 | 5 | ||
6 | abilis Abilis Systems | ||
6 | active-semi Active-Semi International Inc | 7 | active-semi Active-Semi International Inc |
7 | ad Avionic Design GmbH | 8 | ad Avionic Design GmbH |
8 | adi Analog Devices, Inc. | 9 | adi Analog Devices, Inc. |
@@ -11,14 +12,17 @@ ak Asahi Kasei Corp. | |||
11 | allwinner Allwinner Technology Co., Ltd. | 12 | allwinner Allwinner Technology Co., Ltd. |
12 | altr Altera Corp. | 13 | altr Altera Corp. |
13 | amcc Applied Micro Circuits Corporation (APM, formally AMCC) | 14 | amcc Applied Micro Circuits Corporation (APM, formally AMCC) |
15 | amd Advanced Micro Devices (AMD), Inc. | ||
14 | amstaos AMS-Taos Inc. | 16 | amstaos AMS-Taos Inc. |
15 | apm Applied Micro Circuits Corporation (APM) | 17 | apm Applied Micro Circuits Corporation (APM) |
16 | arm ARM Ltd. | 18 | arm ARM Ltd. |
19 | armadeus ARMadeus Systems SARL | ||
17 | atmel Atmel Corporation | 20 | atmel Atmel Corporation |
18 | auo AU Optronics Corporation | 21 | auo AU Optronics Corporation |
19 | avago Avago Technologies | 22 | avago Avago Technologies |
20 | bosch Bosch Sensortec GmbH | 23 | bosch Bosch Sensortec GmbH |
21 | brcm Broadcom Corporation | 24 | brcm Broadcom Corporation |
25 | calxeda Calxeda | ||
22 | capella Capella Microsystems, Inc | 26 | capella Capella Microsystems, Inc |
23 | cavium Cavium, Inc. | 27 | cavium Cavium, Inc. |
24 | cdns Cadence Design Systems Inc. | 28 | cdns Cadence Design Systems Inc. |
@@ -26,8 +30,10 @@ chrp Common Hardware Reference Platform | |||
26 | chunghwa Chunghwa Picture Tubes Ltd. | 30 | chunghwa Chunghwa Picture Tubes Ltd. |
27 | cirrus Cirrus Logic, Inc. | 31 | cirrus Cirrus Logic, Inc. |
28 | cortina Cortina Systems, Inc. | 32 | cortina Cortina Systems, Inc. |
33 | crystalfontz Crystalfontz America, Inc. | ||
29 | dallas Maxim Integrated Products (formerly Dallas Semiconductor) | 34 | dallas Maxim Integrated Products (formerly Dallas Semiconductor) |
30 | davicom DAVICOM Semiconductor, Inc. | 35 | davicom DAVICOM Semiconductor, Inc. |
36 | dlink D-Link Systems, Inc. | ||
31 | denx Denx Software Engineering | 37 | denx Denx Software Engineering |
32 | edt Emerging Display Technologies | 38 | edt Emerging Display Technologies |
33 | emmicro EM Microelectronic | 39 | emmicro EM Microelectronic |
@@ -37,7 +43,9 @@ est ESTeem Wireless Modems | |||
37 | fsl Freescale Semiconductor | 43 | fsl Freescale Semiconductor |
38 | GEFanuc GE Fanuc Intelligent Platforms Embedded Systems, Inc. | 44 | GEFanuc GE Fanuc Intelligent Platforms Embedded Systems, Inc. |
39 | gef GE Fanuc Intelligent Platforms Embedded Systems, Inc. | 45 | gef GE Fanuc Intelligent Platforms Embedded Systems, Inc. |
46 | globalscale Globalscale Technologies, Inc. | ||
40 | gmt Global Mixed-mode Technology, Inc. | 47 | gmt Global Mixed-mode Technology, Inc. |
48 | google Google, Inc. | ||
41 | gumstix Gumstix, Inc. | 49 | gumstix Gumstix, Inc. |
42 | haoyu Haoyu Microelectronic Co. Ltd. | 50 | haoyu Haoyu Microelectronic Co. Ltd. |
43 | hisilicon Hisilicon Limited. | 51 | hisilicon Hisilicon Limited. |
@@ -46,9 +54,12 @@ hp Hewlett Packard | |||
46 | ibm International Business Machines (IBM) | 54 | ibm International Business Machines (IBM) |
47 | idt Integrated Device Technologies, Inc. | 55 | idt Integrated Device Technologies, Inc. |
48 | img Imagination Technologies Ltd. | 56 | img Imagination Technologies Ltd. |
57 | intel Intel Corporation | ||
49 | intercontrol Inter Control Group | 58 | intercontrol Inter Control Group |
50 | isl Intersil | 59 | isl Intersil |
51 | karo Ka-Ro electronics GmbH | 60 | karo Ka-Ro electronics GmbH |
61 | lacie LaCie | ||
62 | lantiq Lantiq Semiconductor | ||
52 | lg LG Corporation | 63 | lg LG Corporation |
53 | linux Linux-specific binding | 64 | linux Linux-specific binding |
54 | lsi LSI Corp. (LSI Logic) | 65 | lsi LSI Corp. (LSI Logic) |
@@ -56,12 +67,16 @@ marvell Marvell Technology Group Ltd. | |||
56 | maxim Maxim Integrated Products | 67 | maxim Maxim Integrated Products |
57 | microchip Microchip Technology Inc. | 68 | microchip Microchip Technology Inc. |
58 | mosaixtech Mosaix Technologies, Inc. | 69 | mosaixtech Mosaix Technologies, Inc. |
70 | moxa Moxa | ||
59 | national National Semiconductor | 71 | national National Semiconductor |
60 | neonode Neonode Inc. | 72 | neonode Neonode Inc. |
73 | netgear NETGEAR | ||
61 | nintendo Nintendo | 74 | nintendo Nintendo |
75 | nokia Nokia | ||
62 | nvidia NVIDIA | 76 | nvidia NVIDIA |
63 | nxp NXP Semiconductors | 77 | nxp NXP Semiconductors |
64 | onnn ON Semiconductor Corp. | 78 | onnn ON Semiconductor Corp. |
79 | opencores OpenCores.org | ||
65 | panasonic Panasonic Corporation | 80 | panasonic Panasonic Corporation |
66 | phytec PHYTEC Messtechnik GmbH | 81 | phytec PHYTEC Messtechnik GmbH |
67 | picochip Picochip Ltd | 82 | picochip Picochip Ltd |
@@ -80,6 +95,7 @@ sil Silicon Image | |||
80 | silabs Silicon Laboratories | 95 | silabs Silicon Laboratories |
81 | simtek | 96 | simtek |
82 | sirf SiRF Technology, Inc. | 97 | sirf SiRF Technology, Inc. |
98 | smsc Standard Microsystems Corporation | ||
83 | snps Synopsys, Inc. | 99 | snps Synopsys, Inc. |
84 | spansion Spansion Inc. | 100 | spansion Spansion Inc. |
85 | st STMicroelectronics | 101 | st STMicroelectronics |
@@ -94,4 +110,5 @@ via VIA Technologies, Inc. | |||
94 | winbond Winbond Electronics corp. | 110 | winbond Winbond Electronics corp. |
95 | wlf Wolfson Microelectronics | 111 | wlf Wolfson Microelectronics |
96 | wm Wondermedia Technologies, Inc. | 112 | wm Wondermedia Technologies, Inc. |
113 | xes Extreme Engineering Solutions (X-ES) | ||
97 | xlnx Xilinx | 114 | xlnx Xilinx |
diff --git a/Documentation/devicetree/bindings/watchdog/of-xilinx-wdt.txt b/Documentation/devicetree/bindings/watchdog/of-xilinx-wdt.txt new file mode 100644 index 000000000000..6d63782a7378 --- /dev/null +++ b/Documentation/devicetree/bindings/watchdog/of-xilinx-wdt.txt | |||
@@ -0,0 +1,23 @@ | |||
1 | Xilinx AXI/PLB soft-core watchdog Device Tree Bindings | ||
2 | --------------------------------------------------------- | ||
3 | |||
4 | Required properties: | ||
5 | - compatible : Should be "xlnx,xps-timebase-wdt-1.00.a" or | ||
6 | "xlnx,xps-timebase-wdt-1.01.a". | ||
7 | - reg : Physical base address and size | ||
8 | |||
9 | Optional properties: | ||
10 | - clock-frequency : Frequency of clock in Hz | ||
11 | - xlnx,wdt-enable-once : 0 - Watchdog can be restarted | ||
12 | 1 - Watchdog can be enabled just once | ||
13 | - xlnx,wdt-interval : Watchdog timeout interval in 2^<val> clock cycles, | ||
14 | <val> is integer from 8 to 31. | ||
15 | |||
16 | Example: | ||
17 | axi-timebase-wdt@40100000 { | ||
18 | clock-frequency = <50000000>; | ||
19 | compatible = "xlnx,xps-timebase-wdt-1.00.a"; | ||
20 | reg = <0x40100000 0x10000>; | ||
21 | xlnx,wdt-enable-once = <0x0>; | ||
22 | xlnx,wdt-interval = <0x1b>; | ||
23 | } ; | ||
diff --git a/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt b/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt index e39cb266c8f4..b8f75c51453a 100644 --- a/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt +++ b/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt | |||
@@ -2,13 +2,13 @@ Allwinner SoCs Watchdog timer | |||
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | 4 | ||
5 | - compatible : should be "allwinner,<soc-family>-wdt", the currently supported | 5 | - compatible : should be either "allwinner,sun4i-a10-wdt" or |
6 | SoC families being sun4i and sun6i | 6 | "allwinner,sun6i-a31-wdt" |
7 | - reg : Specifies base physical address and size of the registers. | 7 | - reg : Specifies base physical address and size of the registers. |
8 | 8 | ||
9 | Example: | 9 | Example: |
10 | 10 | ||
11 | wdt: watchdog@01c20c90 { | 11 | wdt: watchdog@01c20c90 { |
12 | compatible = "allwinner,sun4i-wdt"; | 12 | compatible = "allwinner,sun4i-a10-wdt"; |
13 | reg = <0x01c20c90 0x10>; | 13 | reg = <0x01c20c90 0x10>; |
14 | }; | 14 | }; |
diff --git a/Documentation/fmc/fmc-write-eeprom.txt b/Documentation/fmc/fmc-write-eeprom.txt index 44a3bc678bf0..e0a9712156aa 100644 --- a/Documentation/fmc/fmc-write-eeprom.txt +++ b/Documentation/fmc/fmc-write-eeprom.txt | |||
@@ -9,7 +9,12 @@ Overwriting the EEPROM is not something you should do daily, and it is | |||
9 | expected to only happen during manufacturing. For this reason, the | 9 | expected to only happen during manufacturing. For this reason, the |
10 | module makes it unlikely for the random user to change a working EEPROM. | 10 | module makes it unlikely for the random user to change a working EEPROM. |
11 | 11 | ||
12 | The module takes the following measures: | 12 | However, since the EEPROM may include application-specific information |
13 | other than the identification, later versions of this packages added | ||
14 | write-support through sysfs. See *note Accessing the EEPROM::. | ||
15 | |||
16 | To avoid damaging the EEPROM content, the module takes the following | ||
17 | measures: | ||
13 | 18 | ||
14 | * It accepts a `file=' argument (within /lib/firmware) and if no | 19 | * It accepts a `file=' argument (within /lib/firmware) and if no |
15 | such argument is received, it doesn't write anything to EEPROM | 20 | such argument is received, it doesn't write anything to EEPROM |
@@ -70,56 +75,24 @@ first time. | |||
70 | [ 132.899872] fake-fmc: Product name: FmcDelay1ns4cha | 75 | [ 132.899872] fake-fmc: Product name: FmcDelay1ns4cha |
71 | 76 | ||
72 | 77 | ||
73 | Writing to the EEPROM | 78 | Accessing the EEPROM |
74 | ===================== | 79 | ===================== |
75 | 80 | ||
76 | Once you have created a binary file for your EEPROM, you can write it | 81 | The bus creates a sysfs binary file called eeprom for each mezzanine it |
77 | to the storage medium using the fmc-write-eeprom (See *note | 82 | knows about: |
78 | fmc-write-eeprom::, while relying on a carrier driver. The procedure | 83 | |
79 | here shown here uses the SPEC driver | 84 | spusa.root# cd /sys/bus/fmc/devices; ls -l */eeprom |
80 | (`http://www.ohwr.org/projects/spec-sw'). | 85 | -r--r--r-- 1 root root 8192 Feb 21 12:30 FmcAdc100m14b4cha-0800/eeprom |
81 | 86 | -r--r--r-- 1 root root 8192 Feb 21 12:30 FmcDelay1ns4cha-0200/eeprom | |
82 | The example assumes no driver is already loaded (actually, I unloaded | 87 | -r--r--r-- 1 root root 8192 Feb 21 12:30 FmcDio5cha-0400/eeprom |
83 | them by hand as everything loads automatically at boot time after you | 88 | |
84 | installed the modules), and shows kernel messages together with | 89 | Everybody can read the files and the superuser can also modify it, but |
85 | commands. Here the prompt is spusa.root# and two SPEC cards are plugged | 90 | the operation may on the carrier driver, if the carrier is unable to |
86 | in the system. | 91 | access the I2C bus. For example, the spec driver can access the bus |
87 | 92 | only with its golden gateware: after a mezzanine driver reprogrammed | |
88 | spusa.root# insmod fmc.ko | 93 | the FPGA with a custom circuit, the carrier is unable to access the |
89 | spusa.root# insmod spec.ko | 94 | EEPROM and returns ENOTSUPP. |
90 | [13972.382818] spec 0000:02:00.0: probe for device 0002:0000 | 95 | |
91 | [13972.392773] spec 0000:02:00.0: got file "fmc/spec-init.bin", 1484404 (0x16a674) bytes | 96 | An alternative way to write the EEPROM is the mezzanine driver |
92 | [13972.591388] spec 0000:02:00.0: FPGA programming successful | 97 | fmc-write-eeprom (See *note fmc-write-eeprom::), but the procedure is |
93 | [13972.883011] spec 0000:02:00.0: EEPROM has no FRU information | 98 | more complex. |
94 | [13972.888719] spec 0000:02:00.0: No device_id filled, using index | ||
95 | [13972.894676] spec 0000:02:00.0: No mezzanine_name found | ||
96 | [13972.899863] /home/rubini/wip/spec-sw/kernel/spec-gpio.c - spec_gpio_init | ||
97 | [13972.906578] spec 0000:04:00.0: probe for device 0004:0000 | ||
98 | [13972.916509] spec 0000:04:00.0: got file "fmc/spec-init.bin", 1484404 (0x16a674) bytes | ||
99 | [13973.115096] spec 0000:04:00.0: FPGA programming successful | ||
100 | [13973.401798] spec 0000:04:00.0: EEPROM has no FRU information | ||
101 | [13973.407474] spec 0000:04:00.0: No device_id filled, using index | ||
102 | [13973.413417] spec 0000:04:00.0: No mezzanine_name found | ||
103 | [13973.418600] /home/rubini/wip/spec-sw/kernel/spec-gpio.c - spec_gpio_init | ||
104 | spusa.root# ls /sys/bus/fmc/devices | ||
105 | fmc-0000 fmc-0001 | ||
106 | spusa.root# insmod fmc-write-eeprom.ko busid=0x0200 file=fdelay-eeprom.bin | ||
107 | [14103.966259] spec 0000:02:00.0: Matching an generic driver (no ID) | ||
108 | [14103.975519] spec 0000:02:00.0: programming 6155 bytes | ||
109 | [14126.373762] spec 0000:02:00.0: write_eeprom: success | ||
110 | [14126.378770] spec 0000:04:00.0: Matching an generic driver (no ID) | ||
111 | [14126.384903] spec 0000:04:00.0: fmc_write_eeprom: no filename given: not programming | ||
112 | [14126.392600] fmc_write_eeprom: probe of fmc-0001 failed with error -2 | ||
113 | |||
114 | Reading back the EEPROM | ||
115 | ======================= | ||
116 | |||
117 | In order to read back the binary content of the EEPROM of your | ||
118 | mezzanine device, the bus creates a read-only sysfs file called eeprom | ||
119 | for each mezzanine it knows about: | ||
120 | |||
121 | spusa.root# cd /sys/bus/fmc/devices; ls -l */eeprom | ||
122 | -r--r--r-- 1 root root 8192 Apr 9 16:53 FmcDelay1ns4cha-f001/eeprom | ||
123 | -r--r--r-- 1 root root 8192 Apr 9 17:19 fake-design-for-testing-f002/eeprom | ||
124 | -r--r--r-- 1 root root 8192 Apr 9 17:19 fake-design-for-testing-f003/eeprom | ||
125 | -r--r--r-- 1 root root 8192 Apr 9 17:19 fmc-f004/eeprom | ||
diff --git a/Documentation/hwmon/adc128d818 b/Documentation/hwmon/adc128d818 new file mode 100644 index 000000000000..39c95004dabc --- /dev/null +++ b/Documentation/hwmon/adc128d818 | |||
@@ -0,0 +1,47 @@ | |||
1 | Kernel driver adc128d818 | ||
2 | ======================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Texas Instruments ADC818D818 | ||
6 | Prefix: 'adc818d818' | ||
7 | Addresses scanned: I2C 0x1d, 0x1e, 0x1f, 0x2d, 0x2e, 0x2f | ||
8 | Datasheet: Publicly available at the TI website | ||
9 | http://www.ti.com/ | ||
10 | |||
11 | Author: Guenter Roeck | ||
12 | |||
13 | Description | ||
14 | ----------- | ||
15 | |||
16 | This driver implements support for the Texas Instruments ADC128D818. | ||
17 | It is described as 'ADC System Monitor with Temperature Sensor'. | ||
18 | |||
19 | The ADC128D818 implements one temperature sensor and seven voltage sensors. | ||
20 | |||
21 | Temperatures are measured in degrees Celsius. There is one set of limits. | ||
22 | When the HOT Temperature Limit is crossed, this will cause an alarm that will | ||
23 | be reasserted until the temperature drops below the HOT Hysteresis. | ||
24 | Measurements are guaranteed between -55 and +125 degrees. The temperature | ||
25 | measurement has a resolution of 0.5 degrees; the limits have a resolution | ||
26 | of 1 degree. | ||
27 | |||
28 | Voltage sensors (also known as IN sensors) report their values in volts. | ||
29 | An alarm is triggered if the voltage has crossed a programmable minimum | ||
30 | or maximum limit. Note that minimum in this case always means 'closest to | ||
31 | zero'; this is important for negative voltage measurements. All voltage | ||
32 | inputs can measure voltages between 0 and 2.55 volts, with a resolution | ||
33 | of 0.625 mV. | ||
34 | |||
35 | If an alarm triggers, it will remain triggered until the hardware register | ||
36 | is read at least once. This means that the cause for the alarm may | ||
37 | already have disappeared by the time the alarm is read. The driver | ||
38 | caches the alarm status for each sensor until it is at least reported | ||
39 | once, to ensure that alarms are reported to user space. | ||
40 | |||
41 | The ADC128D818 only updates its values approximately once per second; | ||
42 | reading it more often will do no harm, but will return 'old' values. | ||
43 | |||
44 | In addition to the scanned address list, the chip can also be configured for | ||
45 | addresses 0x35 to 0x37. Those addresses are not scanned. You have to instantiate | ||
46 | the driver explicitly if the chip is configured for any of those addresses in | ||
47 | your system. | ||
diff --git a/Documentation/hwmon/lm95245 b/Documentation/hwmon/lm95245 index cbd8aeab7124..77eaf2812d25 100644 --- a/Documentation/hwmon/lm95245 +++ b/Documentation/hwmon/lm95245 | |||
@@ -24,8 +24,12 @@ is given within a range of -127 to +127.875 degrees. Remote temperatures are | |||
24 | given within a range of -127 to +255 degrees. Resolution depends on | 24 | given within a range of -127 to +255 degrees. Resolution depends on |
25 | temperature input and range. | 25 | temperature input and range. |
26 | 26 | ||
27 | Each sensor has its own critical limit, but the hysteresis is common to all | 27 | Each sensor has its own critical limit. Additionally, there is a relative |
28 | two channels. | 28 | hysteresis value common to both critical limits. To make life easier to |
29 | user-space applications, two absolute values are exported, one for each | ||
30 | channel, but these values are of course linked. Only the local hysteresis | ||
31 | can be set from user-space, and the same delta applies to the remote | ||
32 | hysteresis. | ||
29 | 33 | ||
30 | The lm95245 driver can change its update interval to a fixed set of values. | 34 | The lm95245 driver can change its update interval to a fixed set of values. |
31 | It will round up to the next selectable interval. See the datasheet for exact | 35 | It will round up to the next selectable interval. See the datasheet for exact |
diff --git a/Documentation/hwmon/ltc2945 b/Documentation/hwmon/ltc2945 new file mode 100644 index 000000000000..f8d0f7f19adb --- /dev/null +++ b/Documentation/hwmon/ltc2945 | |||
@@ -0,0 +1,84 @@ | |||
1 | Kernel driver ltc2945 | ||
2 | ===================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Linear Technology LTC2945 | ||
6 | Prefix: 'ltc2945' | ||
7 | Addresses scanned: - | ||
8 | Datasheet: | ||
9 | http://cds.linear.com/docs/en/datasheet/2945fa.pdf | ||
10 | |||
11 | Author: Guenter Roeck <linux@roeck-us.net> | ||
12 | |||
13 | |||
14 | Description | ||
15 | ----------- | ||
16 | |||
17 | The LTC2945 is a rail-to-rail system monitor that measures current, voltage, | ||
18 | and power consumption. | ||
19 | |||
20 | |||
21 | Usage Notes | ||
22 | ----------- | ||
23 | |||
24 | This driver does not probe for LTC2945 devices, since there is no register | ||
25 | which can be safely used to identify the chip. You will have to instantiate | ||
26 | the devices explicitly. | ||
27 | |||
28 | Example: the following will load the driver for an LTC2945 at address 0x10 | ||
29 | on I2C bus #1: | ||
30 | $ modprobe ltc2945 | ||
31 | $ echo ltc2945 0x10 > /sys/bus/i2c/devices/i2c-1/new_device | ||
32 | |||
33 | |||
34 | Sysfs entries | ||
35 | ------------- | ||
36 | |||
37 | Voltage readings provided by this driver are reported as obtained from the ADC | ||
38 | registers. If a set of voltage divider resistors is installed, calculate the | ||
39 | real voltage by multiplying the reported value with (R1+R2)/R2, where R1 is the | ||
40 | value of the divider resistor against the measured voltage and R2 is the value | ||
41 | of the divider resistor against Ground. | ||
42 | |||
43 | Current reading provided by this driver is reported as obtained from the ADC | ||
44 | Current Sense register. The reported value assumes that a 1 mOhm sense resistor | ||
45 | is installed. If a different sense resistor is installed, calculate the real | ||
46 | current by dividing the reported value by the sense resistor value in mOhm. | ||
47 | |||
48 | in1_input VIN voltage (mV). Voltage is measured either at | ||
49 | SENSE+ or VDD pin depending on chip configuration. | ||
50 | in1_min Undervoltage threshold | ||
51 | in1_max Overvoltage threshold | ||
52 | in1_lowest Lowest measured voltage | ||
53 | in1_highest Highest measured voltage | ||
54 | in1_reset_history Write 1 to reset in1 history | ||
55 | in1_min_alarm Undervoltage alarm | ||
56 | in1_max_alarm Overvoltage alarm | ||
57 | |||
58 | in2_input ADIN voltage (mV) | ||
59 | in2_min Undervoltage threshold | ||
60 | in2_max Overvoltage threshold | ||
61 | in2_lowest Lowest measured voltage | ||
62 | in2_highest Highest measured voltage | ||
63 | in2_reset_history Write 1 to reset in2 history | ||
64 | in2_min_alarm Undervoltage alarm | ||
65 | in2_max_alarm Overvoltage alarm | ||
66 | |||
67 | curr1_input SENSE current (mA) | ||
68 | curr1_min Undercurrent threshold | ||
69 | curr1_max Overcurrent threshold | ||
70 | curr1_lowest Lowest measured current | ||
71 | curr1_highest Highest measured current | ||
72 | curr1_reset_history Write 1 to reset curr1 history | ||
73 | curr1_min_alarm Undercurrent alarm | ||
74 | curr1_max_alarm Overcurrent alarm | ||
75 | |||
76 | power1_input Power (in uW). Power is calculated based on SENSE+/VDD | ||
77 | voltage or ADIN voltage depending on chip configuration. | ||
78 | power1_min Low lower threshold | ||
79 | power1_max High power threshold | ||
80 | power1_input_lowest Historical minimum power use | ||
81 | power1_input_highest Historical maximum power use | ||
82 | power1_reset_history Write 1 to reset power1 history | ||
83 | power1_min_alarm Low power alarm | ||
84 | power1_max_alarm High power alarm | ||
diff --git a/Documentation/hwmon/ltc2978 b/Documentation/hwmon/ltc2978 index a0546fc42273..686c078bb0e0 100644 --- a/Documentation/hwmon/ltc2978 +++ b/Documentation/hwmon/ltc2978 | |||
@@ -23,6 +23,10 @@ Supported chips: | |||
23 | Prefix: 'ltc3883' | 23 | Prefix: 'ltc3883' |
24 | Addresses scanned: - | 24 | Addresses scanned: - |
25 | Datasheet: http://www.linear.com/product/ltc3883 | 25 | Datasheet: http://www.linear.com/product/ltc3883 |
26 | * Linear Technology LTM4676 | ||
27 | Prefix: 'ltm4676' | ||
28 | Addresses scanned: - | ||
29 | Datasheet: http://www.linear.com/product/ltm4676 | ||
26 | 30 | ||
27 | Author: Guenter Roeck <linux@roeck-us.net> | 31 | Author: Guenter Roeck <linux@roeck-us.net> |
28 | 32 | ||
@@ -33,7 +37,8 @@ Description | |||
33 | LTC2974 is a quad digital power supply manager. LTC2978 is an octal power supply | 37 | LTC2974 is a quad digital power supply manager. LTC2978 is an octal power supply |
34 | monitor. LTC2977 is a pin compatible replacement for LTC2978. LTC3880 is a dual | 38 | monitor. LTC2977 is a pin compatible replacement for LTC2978. LTC3880 is a dual |
35 | output poly-phase step-down DC/DC controller. LTC3883 is a single phase | 39 | output poly-phase step-down DC/DC controller. LTC3883 is a single phase |
36 | step-down DC/DC controller. | 40 | step-down DC/DC controller. LTM4676 is a dual 13A or single 26A uModule |
41 | regulator. | ||
37 | 42 | ||
38 | 43 | ||
39 | Usage Notes | 44 | Usage Notes |
@@ -75,7 +80,7 @@ in[N]_label "vout[1-8]". | |||
75 | LTC2974: N=2-5 | 80 | LTC2974: N=2-5 |
76 | LTC2977: N=2-9 | 81 | LTC2977: N=2-9 |
77 | LTC2978: N=2-9 | 82 | LTC2978: N=2-9 |
78 | LTC3880: N=2-3 | 83 | LTC3880, LTM4676: N=2-3 |
79 | LTC3883: N=2 | 84 | LTC3883: N=2 |
80 | in[N]_input Measured output voltage. | 85 | in[N]_input Measured output voltage. |
81 | in[N]_min Minimum output voltage. | 86 | in[N]_min Minimum output voltage. |
@@ -95,7 +100,7 @@ temp[N]_input Measured temperature. | |||
95 | and temp5 reports the chip temperature. | 100 | and temp5 reports the chip temperature. |
96 | On LTC2977 and LTC2978, only one temperature measurement | 101 | On LTC2977 and LTC2978, only one temperature measurement |
97 | is supported and reports the chip temperature. | 102 | is supported and reports the chip temperature. |
98 | On LTC3880, temp1 and temp2 report external | 103 | On LTC3880 and LTM4676, temp1 and temp2 report external |
99 | temperatures, and temp3 reports the chip temperature. | 104 | temperatures, and temp3 reports the chip temperature. |
100 | On LTC3883, temp1 reports an external temperature, | 105 | On LTC3883, temp1 reports an external temperature, |
101 | and temp2 reports the chip temperature. | 106 | and temp2 reports the chip temperature. |
@@ -123,11 +128,11 @@ power[N]_label "pout[1-4]". | |||
123 | LTC2974: N=1-4 | 128 | LTC2974: N=1-4 |
124 | LTC2977: Not supported | 129 | LTC2977: Not supported |
125 | LTC2978: Not supported | 130 | LTC2978: Not supported |
126 | LTC3880: N=1-2 | 131 | LTC3880, LTM4676: N=1-2 |
127 | LTC3883: N=2 | 132 | LTC3883: N=2 |
128 | power[N]_input Measured output power. | 133 | power[N]_input Measured output power. |
129 | 134 | ||
130 | curr1_label "iin". LTC3880 and LTC3883 only. | 135 | curr1_label "iin". LTC3880, LTC3883, and LTM4676 only. |
131 | curr1_input Measured input current. | 136 | curr1_input Measured input current. |
132 | curr1_max Maximum input current. | 137 | curr1_max Maximum input current. |
133 | curr1_max_alarm Input current high alarm. | 138 | curr1_max_alarm Input current high alarm. |
@@ -138,7 +143,7 @@ curr[N]_label "iout[1-4]". | |||
138 | LTC2974: N=1-4 | 143 | LTC2974: N=1-4 |
139 | LTC2977: not supported | 144 | LTC2977: not supported |
140 | LTC2978: not supported | 145 | LTC2978: not supported |
141 | LTC3880: N=2-3 | 146 | LTC3880, LTM4676: N=2-3 |
142 | LTC3883: N=2 | 147 | LTC3883: N=2 |
143 | curr[N]_input Measured output current. | 148 | curr[N]_input Measured output current. |
144 | curr[N]_max Maximum output current. | 149 | curr[N]_max Maximum output current. |
diff --git a/Documentation/hwmon/ltc4260 b/Documentation/hwmon/ltc4260 new file mode 100644 index 000000000000..c4ff4ad998b2 --- /dev/null +++ b/Documentation/hwmon/ltc4260 | |||
@@ -0,0 +1,56 @@ | |||
1 | Kernel driver ltc4260 | ||
2 | ===================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Linear Technology LTC4260 | ||
6 | Prefix: 'ltc4260' | ||
7 | Addresses scanned: - | ||
8 | Datasheet: | ||
9 | http://cds.linear.com/docs/en/datasheet/4260fc.pdf | ||
10 | |||
11 | Author: Guenter Roeck <linux@roeck-us.net> | ||
12 | |||
13 | |||
14 | Description | ||
15 | ----------- | ||
16 | |||
17 | The LTC4260 Hot Swap controller allows a board to be safely inserted | ||
18 | and removed from a live backplane. | ||
19 | |||
20 | |||
21 | Usage Notes | ||
22 | ----------- | ||
23 | |||
24 | This driver does not probe for LTC4260 devices, since there is no register | ||
25 | which can be safely used to identify the chip. You will have to instantiate | ||
26 | the devices explicitly. | ||
27 | |||
28 | Example: the following will load the driver for an LTC4260 at address 0x10 | ||
29 | on I2C bus #1: | ||
30 | $ modprobe ltc4260 | ||
31 | $ echo ltc4260 0x10 > /sys/bus/i2c/devices/i2c-1/new_device | ||
32 | |||
33 | |||
34 | Sysfs entries | ||
35 | ------------- | ||
36 | |||
37 | Voltage readings provided by this driver are reported as obtained from the ADC | ||
38 | registers. If a set of voltage divider resistors is installed, calculate the | ||
39 | real voltage by multiplying the reported value with (R1+R2)/R2, where R1 is the | ||
40 | value of the divider resistor against the measured voltage and R2 is the value | ||
41 | of the divider resistor against Ground. | ||
42 | |||
43 | Current reading provided by this driver is reported as obtained from the ADC | ||
44 | Current Sense register. The reported value assumes that a 1 mOhm sense resistor | ||
45 | is installed. If a different sense resistor is installed, calculate the real | ||
46 | current by dividing the reported value by the sense resistor value in mOhm. | ||
47 | |||
48 | in1_input SOURCE voltage (mV) | ||
49 | in1_min_alarm Undervoltage alarm | ||
50 | in1_max_alarm Overvoltage alarm | ||
51 | |||
52 | in2_input ADIN voltage (mV) | ||
53 | in2_alarm Power bad alarm | ||
54 | |||
55 | curr1_input SENSE current (mA) | ||
56 | curr1_alarm SENSE overcurrent alarm | ||
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 7116fda7077f..bc3478581f67 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -229,8 +229,24 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
229 | use by PCI | 229 | use by PCI |
230 | Format: <irq>,<irq>... | 230 | Format: <irq>,<irq>... |
231 | 231 | ||
232 | acpi_no_auto_serialize [HW,ACPI] | ||
233 | Disable auto-serialization of AML methods | ||
234 | AML control methods that contain the opcodes to create | ||
235 | named objects will be marked as "Serialized" by the | ||
236 | auto-serialization feature. | ||
237 | This feature is enabled by default. | ||
238 | This option allows to turn off the feature. | ||
239 | |||
232 | acpi_no_auto_ssdt [HW,ACPI] Disable automatic loading of SSDT | 240 | acpi_no_auto_ssdt [HW,ACPI] Disable automatic loading of SSDT |
233 | 241 | ||
242 | acpica_no_return_repair [HW, ACPI] | ||
243 | Disable AML predefined validation mechanism | ||
244 | This mechanism can repair the evaluation result to make | ||
245 | the return objects more ACPI specification compliant. | ||
246 | This option is useful for developers to identify the | ||
247 | root cause of an AML interpreter issue when the issue | ||
248 | has something to do with the repair mechanism. | ||
249 | |||
234 | acpi_os_name= [HW,ACPI] Tell ACPI BIOS the name of the OS | 250 | acpi_os_name= [HW,ACPI] Tell ACPI BIOS the name of the OS |
235 | Format: To spoof as Windows 98: ="Microsoft Windows" | 251 | Format: To spoof as Windows 98: ="Microsoft Windows" |
236 | 252 | ||
@@ -298,8 +314,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
298 | acpi_sci= [HW,ACPI] ACPI System Control Interrupt trigger mode | 314 | acpi_sci= [HW,ACPI] ACPI System Control Interrupt trigger mode |
299 | Format: { level | edge | high | low } | 315 | Format: { level | edge | high | low } |
300 | 316 | ||
301 | acpi_serialize [HW,ACPI] force serialization of AML methods | ||
302 | |||
303 | acpi_skip_timer_override [HW,ACPI] | 317 | acpi_skip_timer_override [HW,ACPI] |
304 | Recognize and ignore IRQ0/pin2 Interrupt Override. | 318 | Recognize and ignore IRQ0/pin2 Interrupt Override. |
305 | For broken nForce2 BIOS resulting in XT-PIC timer. | 319 | For broken nForce2 BIOS resulting in XT-PIC timer. |
@@ -1011,6 +1025,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1011 | parameter will force ia64_sal_cache_flush to call | 1025 | parameter will force ia64_sal_cache_flush to call |
1012 | ia64_pal_cache_flush instead of SAL_CACHE_FLUSH. | 1026 | ia64_pal_cache_flush instead of SAL_CACHE_FLUSH. |
1013 | 1027 | ||
1028 | forcepae [X86-32] | ||
1029 | Forcefully enable Physical Address Extension (PAE). | ||
1030 | Many Pentium M systems disable PAE but may have a | ||
1031 | functionally usable PAE implementation. | ||
1032 | Warning: use of this parameter will taint the kernel | ||
1033 | and may cause unknown problems. | ||
1034 | |||
1014 | ftrace=[tracer] | 1035 | ftrace=[tracer] |
1015 | [FTRACE] will set and start the specified tracer | 1036 | [FTRACE] will set and start the specified tracer |
1016 | as early as possible in order to facilitate early | 1037 | as early as possible in order to facilitate early |
@@ -2053,8 +2074,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2053 | IOAPICs that may be present in the system. | 2074 | IOAPICs that may be present in the system. |
2054 | 2075 | ||
2055 | nokaslr [X86] | 2076 | nokaslr [X86] |
2056 | Disable kernel base offset ASLR (Address Space | 2077 | Disable kernel and module base offset ASLR (Address |
2057 | Layout Randomization) if built into the kernel. | 2078 | Space Layout Randomization) if built into the kernel. |
2058 | 2079 | ||
2059 | noautogroup Disable scheduler automatic task group creation. | 2080 | noautogroup Disable scheduler automatic task group creation. |
2060 | 2081 | ||
@@ -3409,14 +3430,24 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
3409 | of CONFIG_HIGHPTE. | 3430 | of CONFIG_HIGHPTE. |
3410 | 3431 | ||
3411 | vdso= [X86,SH] | 3432 | vdso= [X86,SH] |
3412 | vdso=2: enable compat VDSO (default with COMPAT_VDSO) | 3433 | On X86_32, this is an alias for vdso32=. Otherwise: |
3413 | vdso=1: enable VDSO (default) | 3434 | |
3435 | vdso=1: enable VDSO (the default) | ||
3414 | vdso=0: disable VDSO mapping | 3436 | vdso=0: disable VDSO mapping |
3415 | 3437 | ||
3416 | vdso32= [X86] | 3438 | vdso32= [X86] Control the 32-bit vDSO |
3417 | vdso32=2: enable compat VDSO (default with COMPAT_VDSO) | 3439 | vdso32=1: enable 32-bit VDSO |
3418 | vdso32=1: enable 32-bit VDSO (default) | 3440 | vdso32=0 or vdso32=2: disable 32-bit VDSO |
3419 | vdso32=0: disable 32-bit VDSO mapping | 3441 | |
3442 | See the help text for CONFIG_COMPAT_VDSO for more | ||
3443 | details. If CONFIG_COMPAT_VDSO is set, the default is | ||
3444 | vdso32=0; otherwise, the default is vdso32=1. | ||
3445 | |||
3446 | For compatibility with older kernels, vdso32=2 is an | ||
3447 | alias for vdso32=0. | ||
3448 | |||
3449 | Try vdso32=0 if you encounter an error that says: | ||
3450 | dl_main: Assertion `(void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso' failed! | ||
3420 | 3451 | ||
3421 | vector= [IA-64,SMP] | 3452 | vector= [IA-64,SMP] |
3422 | vector=percpu: enable percpu vector domain | 3453 | vector=percpu: enable percpu vector domain |
diff --git a/Documentation/kernel-per-CPU-kthreads.txt b/Documentation/kernel-per-CPU-kthreads.txt index 827104fb9364..f3cd299fcc41 100644 --- a/Documentation/kernel-per-CPU-kthreads.txt +++ b/Documentation/kernel-per-CPU-kthreads.txt | |||
@@ -162,7 +162,18 @@ Purpose: Execute workqueue requests | |||
162 | To reduce its OS jitter, do any of the following: | 162 | To reduce its OS jitter, do any of the following: |
163 | 1. Run your workload at a real-time priority, which will allow | 163 | 1. Run your workload at a real-time priority, which will allow |
164 | preempting the kworker daemons. | 164 | preempting the kworker daemons. |
165 | 2. Do any of the following needed to avoid jitter that your | 165 | 2. A given workqueue can be made visible in the sysfs filesystem |
166 | by passing the WQ_SYSFS to that workqueue's alloc_workqueue(). | ||
167 | Such a workqueue can be confined to a given subset of the | ||
168 | CPUs using the /sys/devices/virtual/workqueue/*/cpumask sysfs | ||
169 | files. The set of WQ_SYSFS workqueues can be displayed using | ||
170 | "ls sys/devices/virtual/workqueue". That said, the workqueues | ||
171 | maintainer would like to caution people against indiscriminately | ||
172 | sprinkling WQ_SYSFS across all the workqueues. The reason for | ||
173 | caution is that it is easy to add WQ_SYSFS, but because sysfs is | ||
174 | part of the formal user/kernel API, it can be nearly impossible | ||
175 | to remove it, even if its addition was a mistake. | ||
176 | 3. Do any of the following needed to avoid jitter that your | ||
166 | application cannot tolerate: | 177 | application cannot tolerate: |
167 | a. Build your kernel with CONFIG_SLUB=y rather than | 178 | a. Build your kernel with CONFIG_SLUB=y rather than |
168 | CONFIG_SLAB=y, thus avoiding the slab allocator's periodic | 179 | CONFIG_SLAB=y, thus avoiding the slab allocator's periodic |
diff --git a/Documentation/memory-barriers.txt b/Documentation/memory-barriers.txt index ddd2e0d1febc..556f951f8626 100644 --- a/Documentation/memory-barriers.txt +++ b/Documentation/memory-barriers.txt | |||
@@ -608,26 +608,30 @@ as follows: | |||
608 | b = p; /* BUG: Compiler can reorder!!! */ | 608 | b = p; /* BUG: Compiler can reorder!!! */ |
609 | do_something(); | 609 | do_something(); |
610 | 610 | ||
611 | The solution is again ACCESS_ONCE(), which preserves the ordering between | 611 | The solution is again ACCESS_ONCE() and barrier(), which preserves the |
612 | the load from variable 'a' and the store to variable 'b': | 612 | ordering between the load from variable 'a' and the store to variable 'b': |
613 | 613 | ||
614 | q = ACCESS_ONCE(a); | 614 | q = ACCESS_ONCE(a); |
615 | if (q) { | 615 | if (q) { |
616 | barrier(); | ||
616 | ACCESS_ONCE(b) = p; | 617 | ACCESS_ONCE(b) = p; |
617 | do_something(); | 618 | do_something(); |
618 | } else { | 619 | } else { |
620 | barrier(); | ||
619 | ACCESS_ONCE(b) = p; | 621 | ACCESS_ONCE(b) = p; |
620 | do_something_else(); | 622 | do_something_else(); |
621 | } | 623 | } |
622 | 624 | ||
623 | You could also use barrier() to prevent the compiler from moving | 625 | The initial ACCESS_ONCE() is required to prevent the compiler from |
624 | the stores to variable 'b', but barrier() would not prevent the | 626 | proving the value of 'a', and the pair of barrier() invocations are |
625 | compiler from proving to itself that a==1 always, so ACCESS_ONCE() | 627 | required to prevent the compiler from pulling the two identical stores |
626 | is also needed. | 628 | to 'b' out from the legs of the "if" statement. |
627 | 629 | ||
628 | It is important to note that control dependencies absolutely require a | 630 | It is important to note that control dependencies absolutely require a |
629 | a conditional. For example, the following "optimized" version of | 631 | a conditional. For example, the following "optimized" version of |
630 | the above example breaks ordering: | 632 | the above example breaks ordering, which is why the barrier() invocations |
633 | are absolutely required if you have identical stores in both legs of | ||
634 | the "if" statement: | ||
631 | 635 | ||
632 | q = ACCESS_ONCE(a); | 636 | q = ACCESS_ONCE(a); |
633 | ACCESS_ONCE(b) = p; /* BUG: No ordering vs. load from a!!! */ | 637 | ACCESS_ONCE(b) = p; /* BUG: No ordering vs. load from a!!! */ |
@@ -643,9 +647,11 @@ It is of course legal for the prior load to be part of the conditional, | |||
643 | for example, as follows: | 647 | for example, as follows: |
644 | 648 | ||
645 | if (ACCESS_ONCE(a) > 0) { | 649 | if (ACCESS_ONCE(a) > 0) { |
650 | barrier(); | ||
646 | ACCESS_ONCE(b) = q / 2; | 651 | ACCESS_ONCE(b) = q / 2; |
647 | do_something(); | 652 | do_something(); |
648 | } else { | 653 | } else { |
654 | barrier(); | ||
649 | ACCESS_ONCE(b) = q / 3; | 655 | ACCESS_ONCE(b) = q / 3; |
650 | do_something_else(); | 656 | do_something_else(); |
651 | } | 657 | } |
@@ -659,9 +665,11 @@ the needed conditional. For example: | |||
659 | 665 | ||
660 | q = ACCESS_ONCE(a); | 666 | q = ACCESS_ONCE(a); |
661 | if (q % MAX) { | 667 | if (q % MAX) { |
668 | barrier(); | ||
662 | ACCESS_ONCE(b) = p; | 669 | ACCESS_ONCE(b) = p; |
663 | do_something(); | 670 | do_something(); |
664 | } else { | 671 | } else { |
672 | barrier(); | ||
665 | ACCESS_ONCE(b) = p; | 673 | ACCESS_ONCE(b) = p; |
666 | do_something_else(); | 674 | do_something_else(); |
667 | } | 675 | } |
@@ -723,8 +731,13 @@ In summary: | |||
723 | use smb_rmb(), smp_wmb(), or, in the case of prior stores and | 731 | use smb_rmb(), smp_wmb(), or, in the case of prior stores and |
724 | later loads, smp_mb(). | 732 | later loads, smp_mb(). |
725 | 733 | ||
734 | (*) If both legs of the "if" statement begin with identical stores | ||
735 | to the same variable, a barrier() statement is required at the | ||
736 | beginning of each leg of the "if" statement. | ||
737 | |||
726 | (*) Control dependencies require at least one run-time conditional | 738 | (*) Control dependencies require at least one run-time conditional |
727 | between the prior load and the subsequent store. If the compiler | 739 | between the prior load and the subsequent store, and this |
740 | conditional must involve the prior load. If the compiler | ||
728 | is able to optimize the conditional away, it will have also | 741 | is able to optimize the conditional away, it will have also |
729 | optimized away the ordering. Careful use of ACCESS_ONCE() can | 742 | optimized away the ordering. Careful use of ACCESS_ONCE() can |
730 | help to preserve the needed conditional. | 743 | help to preserve the needed conditional. |
@@ -1249,6 +1262,23 @@ The ACCESS_ONCE() function can prevent any number of optimizations that, | |||
1249 | while perfectly safe in single-threaded code, can be fatal in concurrent | 1262 | while perfectly safe in single-threaded code, can be fatal in concurrent |
1250 | code. Here are some examples of these sorts of optimizations: | 1263 | code. Here are some examples of these sorts of optimizations: |
1251 | 1264 | ||
1265 | (*) The compiler is within its rights to reorder loads and stores | ||
1266 | to the same variable, and in some cases, the CPU is within its | ||
1267 | rights to reorder loads to the same variable. This means that | ||
1268 | the following code: | ||
1269 | |||
1270 | a[0] = x; | ||
1271 | a[1] = x; | ||
1272 | |||
1273 | Might result in an older value of x stored in a[1] than in a[0]. | ||
1274 | Prevent both the compiler and the CPU from doing this as follows: | ||
1275 | |||
1276 | a[0] = ACCESS_ONCE(x); | ||
1277 | a[1] = ACCESS_ONCE(x); | ||
1278 | |||
1279 | In short, ACCESS_ONCE() provides cache coherence for accesses from | ||
1280 | multiple CPUs to a single variable. | ||
1281 | |||
1252 | (*) The compiler is within its rights to merge successive loads from | 1282 | (*) The compiler is within its rights to merge successive loads from |
1253 | the same variable. Such merging can cause the compiler to "optimize" | 1283 | the same variable. Such merging can cause the compiler to "optimize" |
1254 | the following code: | 1284 | the following code: |
@@ -1644,12 +1674,12 @@ for each construct. These operations all imply certain barriers: | |||
1644 | Memory operations issued after the ACQUIRE will be completed after the | 1674 | Memory operations issued after the ACQUIRE will be completed after the |
1645 | ACQUIRE operation has completed. | 1675 | ACQUIRE operation has completed. |
1646 | 1676 | ||
1647 | Memory operations issued before the ACQUIRE may be completed after the | 1677 | Memory operations issued before the ACQUIRE may be completed after |
1648 | ACQUIRE operation has completed. An smp_mb__before_spinlock(), combined | 1678 | the ACQUIRE operation has completed. An smp_mb__before_spinlock(), |
1649 | with a following ACQUIRE, orders prior loads against subsequent stores and | 1679 | combined with a following ACQUIRE, orders prior loads against |
1650 | stores and prior stores against subsequent stores. Note that this is | 1680 | subsequent loads and stores and also orders prior stores against |
1651 | weaker than smp_mb()! The smp_mb__before_spinlock() primitive is free on | 1681 | subsequent stores. Note that this is weaker than smp_mb()! The |
1652 | many architectures. | 1682 | smp_mb__before_spinlock() primitive is free on many architectures. |
1653 | 1683 | ||
1654 | (2) RELEASE operation implication: | 1684 | (2) RELEASE operation implication: |
1655 | 1685 | ||
@@ -1694,24 +1724,21 @@ may occur as: | |||
1694 | 1724 | ||
1695 | ACQUIRE M, STORE *B, STORE *A, RELEASE M | 1725 | ACQUIRE M, STORE *B, STORE *A, RELEASE M |
1696 | 1726 | ||
1697 | This same reordering can of course occur if the lock's ACQUIRE and RELEASE are | 1727 | When the ACQUIRE and RELEASE are a lock acquisition and release, |
1698 | to the same lock variable, but only from the perspective of another CPU not | 1728 | respectively, this same reordering can occur if the lock's ACQUIRE and |
1699 | holding that lock. | 1729 | RELEASE are to the same lock variable, but only from the perspective of |
1700 | 1730 | another CPU not holding that lock. In short, a ACQUIRE followed by an | |
1701 | In short, a RELEASE followed by an ACQUIRE may -not- be assumed to be a full | 1731 | RELEASE may -not- be assumed to be a full memory barrier. |
1702 | memory barrier because it is possible for a preceding RELEASE to pass a | 1732 | |
1703 | later ACQUIRE from the viewpoint of the CPU, but not from the viewpoint | 1733 | Similarly, the reverse case of a RELEASE followed by an ACQUIRE does not |
1704 | of the compiler. Note that deadlocks cannot be introduced by this | 1734 | imply a full memory barrier. If it is necessary for a RELEASE-ACQUIRE |
1705 | interchange because if such a deadlock threatened, the RELEASE would | 1735 | pair to produce a full barrier, the ACQUIRE can be followed by an |
1706 | simply complete. | 1736 | smp_mb__after_unlock_lock() invocation. This will produce a full barrier |
1707 | 1737 | if either (a) the RELEASE and the ACQUIRE are executed by the same | |
1708 | If it is necessary for a RELEASE-ACQUIRE pair to produce a full barrier, the | 1738 | CPU or task, or (b) the RELEASE and ACQUIRE act on the same variable. |
1709 | ACQUIRE can be followed by an smp_mb__after_unlock_lock() invocation. This | 1739 | The smp_mb__after_unlock_lock() primitive is free on many architectures. |
1710 | will produce a full barrier if either (a) the RELEASE and the ACQUIRE are | 1740 | Without smp_mb__after_unlock_lock(), the CPU's execution of the critical |
1711 | executed by the same CPU or task, or (b) the RELEASE and ACQUIRE act on the | 1741 | sections corresponding to the RELEASE and the ACQUIRE can cross, so that: |
1712 | same variable. The smp_mb__after_unlock_lock() primitive is free on many | ||
1713 | architectures. Without smp_mb__after_unlock_lock(), the critical sections | ||
1714 | corresponding to the RELEASE and the ACQUIRE can cross: | ||
1715 | 1742 | ||
1716 | *A = a; | 1743 | *A = a; |
1717 | RELEASE M | 1744 | RELEASE M |
@@ -1722,7 +1749,36 @@ could occur as: | |||
1722 | 1749 | ||
1723 | ACQUIRE N, STORE *B, STORE *A, RELEASE M | 1750 | ACQUIRE N, STORE *B, STORE *A, RELEASE M |
1724 | 1751 | ||
1725 | With smp_mb__after_unlock_lock(), they cannot, so that: | 1752 | It might appear that this reordering could introduce a deadlock. |
1753 | However, this cannot happen because if such a deadlock threatened, | ||
1754 | the RELEASE would simply complete, thereby avoiding the deadlock. | ||
1755 | |||
1756 | Why does this work? | ||
1757 | |||
1758 | One key point is that we are only talking about the CPU doing | ||
1759 | the reordering, not the compiler. If the compiler (or, for | ||
1760 | that matter, the developer) switched the operations, deadlock | ||
1761 | -could- occur. | ||
1762 | |||
1763 | But suppose the CPU reordered the operations. In this case, | ||
1764 | the unlock precedes the lock in the assembly code. The CPU | ||
1765 | simply elected to try executing the later lock operation first. | ||
1766 | If there is a deadlock, this lock operation will simply spin (or | ||
1767 | try to sleep, but more on that later). The CPU will eventually | ||
1768 | execute the unlock operation (which preceded the lock operation | ||
1769 | in the assembly code), which will unravel the potential deadlock, | ||
1770 | allowing the lock operation to succeed. | ||
1771 | |||
1772 | But what if the lock is a sleeplock? In that case, the code will | ||
1773 | try to enter the scheduler, where it will eventually encounter | ||
1774 | a memory barrier, which will force the earlier unlock operation | ||
1775 | to complete, again unraveling the deadlock. There might be | ||
1776 | a sleep-unlock race, but the locking primitive needs to resolve | ||
1777 | such races properly in any case. | ||
1778 | |||
1779 | With smp_mb__after_unlock_lock(), the two critical sections cannot overlap. | ||
1780 | For example, with the following code, the store to *A will always be | ||
1781 | seen by other CPUs before the store to *B: | ||
1726 | 1782 | ||
1727 | *A = a; | 1783 | *A = a; |
1728 | RELEASE M | 1784 | RELEASE M |
@@ -1730,13 +1786,18 @@ With smp_mb__after_unlock_lock(), they cannot, so that: | |||
1730 | smp_mb__after_unlock_lock(); | 1786 | smp_mb__after_unlock_lock(); |
1731 | *B = b; | 1787 | *B = b; |
1732 | 1788 | ||
1733 | will always occur as either of the following: | 1789 | The operations will always occur in one of the following orders: |
1734 | 1790 | ||
1735 | STORE *A, RELEASE, ACQUIRE, STORE *B | 1791 | STORE *A, RELEASE, ACQUIRE, smp_mb__after_unlock_lock(), STORE *B |
1736 | STORE *A, ACQUIRE, RELEASE, STORE *B | 1792 | STORE *A, ACQUIRE, RELEASE, smp_mb__after_unlock_lock(), STORE *B |
1793 | ACQUIRE, STORE *A, RELEASE, smp_mb__after_unlock_lock(), STORE *B | ||
1737 | 1794 | ||
1738 | If the RELEASE and ACQUIRE were instead both operating on the same lock | 1795 | If the RELEASE and ACQUIRE were instead both operating on the same lock |
1739 | variable, only the first of these two alternatives can occur. | 1796 | variable, only the first of these alternatives can occur. In addition, |
1797 | the more strongly ordered systems may rule out some of the above orders. | ||
1798 | But in any case, as noted earlier, the smp_mb__after_unlock_lock() | ||
1799 | ensures that the store to *A will always be seen as happening before | ||
1800 | the store to *B. | ||
1740 | 1801 | ||
1741 | Locks and semaphores may not provide any guarantee of ordering on UP compiled | 1802 | Locks and semaphores may not provide any guarantee of ordering on UP compiled |
1742 | systems, and so cannot be counted on in such a situation to actually achieve | 1803 | systems, and so cannot be counted on in such a situation to actually achieve |
@@ -2757,7 +2818,7 @@ in that order, but, without intervention, the sequence may have almost any | |||
2757 | combination of elements combined or discarded, provided the program's view of | 2818 | combination of elements combined or discarded, provided the program's view of |
2758 | the world remains consistent. Note that ACCESS_ONCE() is -not- optional | 2819 | the world remains consistent. Note that ACCESS_ONCE() is -not- optional |
2759 | in the above example, as there are architectures where a given CPU might | 2820 | in the above example, as there are architectures where a given CPU might |
2760 | interchange successive loads to the same location. On such architectures, | 2821 | reorder successive loads to the same location. On such architectures, |
2761 | ACCESS_ONCE() does whatever is necessary to prevent this, for example, on | 2822 | ACCESS_ONCE() does whatever is necessary to prevent this, for example, on |
2762 | Itanium the volatile casts used by ACCESS_ONCE() cause GCC to emit the | 2823 | Itanium the volatile casts used by ACCESS_ONCE() cause GCC to emit the |
2763 | special ld.acq and st.rel instructions that prevent such reordering. | 2824 | special ld.acq and st.rel instructions that prevent such reordering. |
diff --git a/Documentation/networking/3c505.txt b/Documentation/networking/3c505.txt deleted file mode 100644 index 72f38b13101d..000000000000 --- a/Documentation/networking/3c505.txt +++ /dev/null | |||
@@ -1,45 +0,0 @@ | |||
1 | The 3Com Etherlink Plus (3c505) driver. | ||
2 | |||
3 | This driver now uses DMA. There is currently no support for PIO operation. | ||
4 | The default DMA channel is 6; this is _not_ autoprobed, so you must | ||
5 | make sure you configure it correctly. If loading the driver as a | ||
6 | module, you can do this with "modprobe 3c505 dma=n". If the driver is | ||
7 | linked statically into the kernel, you must either use an "ether=" | ||
8 | statement on the command line, or change the definition of ELP_DMA in 3c505.h. | ||
9 | |||
10 | The driver will warn you if it has to fall back on the compiled in | ||
11 | default DMA channel. | ||
12 | |||
13 | If no base address is given at boot time, the driver will autoprobe | ||
14 | ports 0x300, 0x280 and 0x310 (in that order). If no IRQ is given, the driver | ||
15 | will try to probe for it. | ||
16 | |||
17 | The driver can be used as a loadable module. | ||
18 | |||
19 | Theoretically, one instance of the driver can now run multiple cards, | ||
20 | in the standard way (when loading a module, say "modprobe 3c505 | ||
21 | io=0x300,0x340 irq=10,11 dma=6,7" or whatever). I have not tested | ||
22 | this, though. | ||
23 | |||
24 | The driver may now support revision 2 hardware; the dependency on | ||
25 | being able to read the host control register has been removed. This | ||
26 | is also untested, since I don't have a suitable card. | ||
27 | |||
28 | Known problems: | ||
29 | I still see "DMA upload timed out" messages from time to time. These | ||
30 | seem to be fairly non-fatal though. | ||
31 | The card is old and slow. | ||
32 | |||
33 | To do: | ||
34 | Improve probe/setup code | ||
35 | Test multicast and promiscuous operation | ||
36 | |||
37 | Authors: | ||
38 | The driver is mainly written by Craig Southeren, email | ||
39 | <craigs@ineluki.apana.org.au>. | ||
40 | Parts of the driver (adapting the driver to 1.1.4+ kernels, | ||
41 | IRQ/address detection, some changes) and this README by | ||
42 | Juha Laiho <jlaiho@ichaos.nullnet.fi>. | ||
43 | DMA mode, more fixes, etc, by Philip Blundell <pjb27@cam.ac.uk> | ||
44 | Multicard support, Software configurable DMA, etc., by | ||
45 | Christopher Collins <ccollins@pcug.org.au> | ||
diff --git a/Documentation/networking/can.txt b/Documentation/networking/can.txt index f3089d423515..0cbe6ec22d6f 100644 --- a/Documentation/networking/can.txt +++ b/Documentation/networking/can.txt | |||
@@ -554,12 +554,6 @@ solution for a couple of reasons: | |||
554 | not specified in the struct can_frame and therefore it is only valid in | 554 | not specified in the struct can_frame and therefore it is only valid in |
555 | CANFD_MTU sized CAN FD frames. | 555 | CANFD_MTU sized CAN FD frames. |
556 | 556 | ||
557 | As long as the payload length is <=8 the received CAN frames from CAN FD | ||
558 | capable CAN devices can be received and read by legacy sockets too. When | ||
559 | user-generated CAN FD frames have a payload length <=8 these can be send | ||
560 | by legacy CAN network interfaces too. Sending CAN FD frames with payload | ||
561 | length > 8 to a legacy CAN network interface returns an -EMSGSIZE error. | ||
562 | |||
563 | Implementation hint for new CAN applications: | 557 | Implementation hint for new CAN applications: |
564 | 558 | ||
565 | To build a CAN FD aware application use struct canfd_frame as basic CAN | 559 | To build a CAN FD aware application use struct canfd_frame as basic CAN |
diff --git a/Documentation/networking/netlink_mmap.txt b/Documentation/networking/netlink_mmap.txt index b26122973525..c6af4bac5aa8 100644 --- a/Documentation/networking/netlink_mmap.txt +++ b/Documentation/networking/netlink_mmap.txt | |||
@@ -226,9 +226,9 @@ Ring setup: | |||
226 | void *rx_ring, *tx_ring; | 226 | void *rx_ring, *tx_ring; |
227 | 227 | ||
228 | /* Configure ring parameters */ | 228 | /* Configure ring parameters */ |
229 | if (setsockopt(fd, NETLINK_RX_RING, &req, sizeof(req)) < 0) | 229 | if (setsockopt(fd, SOL_NETLINK, NETLINK_RX_RING, &req, sizeof(req)) < 0) |
230 | exit(1); | 230 | exit(1); |
231 | if (setsockopt(fd, NETLINK_TX_RING, &req, sizeof(req)) < 0) | 231 | if (setsockopt(fd, SOL_NETLINK, NETLINK_TX_RING, &req, sizeof(req)) < 0) |
232 | exit(1) | 232 | exit(1) |
233 | 233 | ||
234 | /* Calculate size of each individual ring */ | 234 | /* Calculate size of each individual ring */ |
diff --git a/Documentation/networking/packet_mmap.txt b/Documentation/networking/packet_mmap.txt index 1404674c0a02..6fea79efb4cb 100644 --- a/Documentation/networking/packet_mmap.txt +++ b/Documentation/networking/packet_mmap.txt | |||
@@ -453,7 +453,7 @@ TP_STATUS_COPY : This flag indicates that the frame (and associated | |||
453 | enabled previously with setsockopt() and | 453 | enabled previously with setsockopt() and |
454 | the PACKET_COPY_THRESH option. | 454 | the PACKET_COPY_THRESH option. |
455 | 455 | ||
456 | The number of frames than can be buffered to | 456 | The number of frames that can be buffered to |
457 | be read with recvfrom is limited like a normal socket. | 457 | be read with recvfrom is limited like a normal socket. |
458 | See the SO_RCVBUF option in the socket (7) man page. | 458 | See the SO_RCVBUF option in the socket (7) man page. |
459 | 459 | ||
diff --git a/Documentation/networking/timestamping.txt b/Documentation/networking/timestamping.txt index 661d3c316a17..048c92b487f6 100644 --- a/Documentation/networking/timestamping.txt +++ b/Documentation/networking/timestamping.txt | |||
@@ -21,26 +21,38 @@ has such a feature). | |||
21 | 21 | ||
22 | SO_TIMESTAMPING: | 22 | SO_TIMESTAMPING: |
23 | 23 | ||
24 | Instructs the socket layer which kind of information is wanted. The | 24 | Instructs the socket layer which kind of information should be collected |
25 | parameter is an integer with some of the following bits set. Setting | 25 | and/or reported. The parameter is an integer with some of the following |
26 | other bits is an error and doesn't change the current state. | 26 | bits set. Setting other bits is an error and doesn't change the current |
27 | 27 | state. | |
28 | SOF_TIMESTAMPING_TX_HARDWARE: try to obtain send time stamp in hardware | 28 | |
29 | SOF_TIMESTAMPING_TX_SOFTWARE: if SOF_TIMESTAMPING_TX_HARDWARE is off or | 29 | Four of the bits are requests to the stack to try to generate |
30 | fails, then do it in software | 30 | timestamps. Any combination of them is valid. |
31 | SOF_TIMESTAMPING_RX_HARDWARE: return the original, unmodified time stamp | 31 | |
32 | as generated by the hardware | 32 | SOF_TIMESTAMPING_TX_HARDWARE: try to obtain send time stamps in hardware |
33 | SOF_TIMESTAMPING_RX_SOFTWARE: if SOF_TIMESTAMPING_RX_HARDWARE is off or | 33 | SOF_TIMESTAMPING_TX_SOFTWARE: try to obtain send time stamps in software |
34 | fails, then do it in software | 34 | SOF_TIMESTAMPING_RX_HARDWARE: try to obtain receive time stamps in hardware |
35 | SOF_TIMESTAMPING_RAW_HARDWARE: return original raw hardware time stamp | 35 | SOF_TIMESTAMPING_RX_SOFTWARE: try to obtain receive time stamps in software |
36 | SOF_TIMESTAMPING_SYS_HARDWARE: return hardware time stamp transformed to | 36 | |
37 | the system time base | 37 | The other three bits control which timestamps will be reported in a |
38 | SOF_TIMESTAMPING_SOFTWARE: return system time stamp generated in | 38 | generated control message. If none of these bits are set or if none of |
39 | software | 39 | the set bits correspond to data that is available, then the control |
40 | 40 | message will not be generated: | |
41 | SOF_TIMESTAMPING_TX/RX determine how time stamps are generated. | 41 | |
42 | SOF_TIMESTAMPING_RAW/SYS determine how they are reported in the | 42 | SOF_TIMESTAMPING_SOFTWARE: report systime if available |
43 | following control message: | 43 | SOF_TIMESTAMPING_SYS_HARDWARE: report hwtimetrans if available |
44 | SOF_TIMESTAMPING_RAW_HARDWARE: report hwtimeraw if available | ||
45 | |||
46 | It is worth noting that timestamps may be collected for reasons other | ||
47 | than being requested by a particular socket with | ||
48 | SOF_TIMESTAMPING_[TR]X_(HARD|SOFT)WARE. For example, most drivers that | ||
49 | can generate hardware receive timestamps ignore | ||
50 | SOF_TIMESTAMPING_RX_HARDWARE. It is still a good idea to set that flag | ||
51 | in case future drivers pay attention. | ||
52 | |||
53 | If timestamps are reported, they will appear in a control message with | ||
54 | cmsg_level==SOL_SOCKET, cmsg_type==SO_TIMESTAMPING, and a payload like | ||
55 | this: | ||
44 | 56 | ||
45 | struct scm_timestamping { | 57 | struct scm_timestamping { |
46 | struct timespec systime; | 58 | struct timespec systime; |
diff --git a/Documentation/phy/samsung-usb2.txt b/Documentation/phy/samsung-usb2.txt new file mode 100644 index 000000000000..ed12d437189d --- /dev/null +++ b/Documentation/phy/samsung-usb2.txt | |||
@@ -0,0 +1,135 @@ | |||
1 | .------------------------------------------------------------------------------+ | ||
2 | | Samsung USB 2.0 PHY adaptation layer | | ||
3 | +-----------------------------------------------------------------------------+' | ||
4 | |||
5 | | 1. Description | ||
6 | +---------------- | ||
7 | |||
8 | The architecture of the USB 2.0 PHY module in Samsung SoCs is similar | ||
9 | among many SoCs. In spite of the similarities it proved difficult to | ||
10 | create a one driver that would fit all these PHY controllers. Often | ||
11 | the differences were minor and were found in particular bits of the | ||
12 | registers of the PHY. In some rare cases the order of register writes or | ||
13 | the PHY powering up process had to be altered. This adaptation layer is | ||
14 | a compromise between having separate drivers and having a single driver | ||
15 | with added support for many special cases. | ||
16 | |||
17 | | 2. Files description | ||
18 | +---------------------- | ||
19 | |||
20 | - phy-samsung-usb2.c | ||
21 | This is the main file of the adaptation layer. This file contains | ||
22 | the probe function and provides two callbacks to the Generic PHY | ||
23 | Framework. This two callbacks are used to power on and power off the | ||
24 | phy. They carry out the common work that has to be done on all version | ||
25 | of the PHY module. Depending on which SoC was chosen they execute SoC | ||
26 | specific callbacks. The specific SoC version is selected by choosing | ||
27 | the appropriate compatible string. In addition, this file contains | ||
28 | struct of_device_id definitions for particular SoCs. | ||
29 | |||
30 | - phy-samsung-usb2.h | ||
31 | This is the include file. It declares the structures used by this | ||
32 | driver. In addition it should contain extern declarations for | ||
33 | structures that describe particular SoCs. | ||
34 | |||
35 | | 3. Supporting SoCs | ||
36 | +-------------------- | ||
37 | |||
38 | To support a new SoC a new file should be added to the drivers/phy | ||
39 | directory. Each SoC's configuration is stored in an instance of the | ||
40 | struct samsung_usb2_phy_config. | ||
41 | |||
42 | struct samsung_usb2_phy_config { | ||
43 | const struct samsung_usb2_common_phy *phys; | ||
44 | int (*rate_to_clk)(unsigned long, u32 *); | ||
45 | unsigned int num_phys; | ||
46 | bool has_mode_switch; | ||
47 | }; | ||
48 | |||
49 | The num_phys is the number of phys handled by the driver. *phys is an | ||
50 | array that contains the configuration for each phy. The has_mode_switch | ||
51 | property is a boolean flag that determines whether the SoC has USB host | ||
52 | and device on a single pair of pins. If so, a special register has to | ||
53 | be modified to change the internal routing of these pins between a USB | ||
54 | device or host module. | ||
55 | |||
56 | For example the configuration for Exynos 4210 is following: | ||
57 | |||
58 | const struct samsung_usb2_phy_config exynos4210_usb2_phy_config = { | ||
59 | .has_mode_switch = 0, | ||
60 | .num_phys = EXYNOS4210_NUM_PHYS, | ||
61 | .phys = exynos4210_phys, | ||
62 | .rate_to_clk = exynos4210_rate_to_clk, | ||
63 | } | ||
64 | |||
65 | - int (*rate_to_clk)(unsigned long, u32 *) | ||
66 | The rate_to_clk callback is to convert the rate of the clock | ||
67 | used as the reference clock for the PHY module to the value | ||
68 | that should be written in the hardware register. | ||
69 | |||
70 | The exynos4210_phys configuration array is as follows: | ||
71 | |||
72 | static const struct samsung_usb2_common_phy exynos4210_phys[] = { | ||
73 | { | ||
74 | .label = "device", | ||
75 | .id = EXYNOS4210_DEVICE, | ||
76 | .power_on = exynos4210_power_on, | ||
77 | .power_off = exynos4210_power_off, | ||
78 | }, | ||
79 | { | ||
80 | .label = "host", | ||
81 | .id = EXYNOS4210_HOST, | ||
82 | .power_on = exynos4210_power_on, | ||
83 | .power_off = exynos4210_power_off, | ||
84 | }, | ||
85 | { | ||
86 | .label = "hsic0", | ||
87 | .id = EXYNOS4210_HSIC0, | ||
88 | .power_on = exynos4210_power_on, | ||
89 | .power_off = exynos4210_power_off, | ||
90 | }, | ||
91 | { | ||
92 | .label = "hsic1", | ||
93 | .id = EXYNOS4210_HSIC1, | ||
94 | .power_on = exynos4210_power_on, | ||
95 | .power_off = exynos4210_power_off, | ||
96 | }, | ||
97 | {}, | ||
98 | }; | ||
99 | |||
100 | - int (*power_on)(struct samsung_usb2_phy_instance *); | ||
101 | - int (*power_off)(struct samsung_usb2_phy_instance *); | ||
102 | These two callbacks are used to power on and power off the phy | ||
103 | by modifying appropriate registers. | ||
104 | |||
105 | Final change to the driver is adding appropriate compatible value to the | ||
106 | phy-samsung-usb2.c file. In case of Exynos 4210 the following lines were | ||
107 | added to the struct of_device_id samsung_usb2_phy_of_match[] array: | ||
108 | |||
109 | #ifdef CONFIG_PHY_EXYNOS4210_USB2 | ||
110 | { | ||
111 | .compatible = "samsung,exynos4210-usb2-phy", | ||
112 | .data = &exynos4210_usb2_phy_config, | ||
113 | }, | ||
114 | #endif | ||
115 | |||
116 | To add further flexibility to the driver the Kconfig file enables to | ||
117 | include support for selected SoCs in the compiled driver. The Kconfig | ||
118 | entry for Exynos 4210 is following: | ||
119 | |||
120 | config PHY_EXYNOS4210_USB2 | ||
121 | bool "Support for Exynos 4210" | ||
122 | depends on PHY_SAMSUNG_USB2 | ||
123 | depends on CPU_EXYNOS4210 | ||
124 | help | ||
125 | Enable USB PHY support for Exynos 4210. This option requires that | ||
126 | Samsung USB 2.0 PHY driver is enabled and means that support for this | ||
127 | particular SoC is compiled in the driver. In case of Exynos 4210 four | ||
128 | phys are available - device, host, HSCI0 and HSCI1. | ||
129 | |||
130 | The newly created file that supports the new SoC has to be also added to the | ||
131 | Makefile. In case of Exynos 4210 the added line is following: | ||
132 | |||
133 | obj-$(CONFIG_PHY_EXYNOS4210_USB2) += phy-exynos4210-usb2.o | ||
134 | |||
135 | After completing these steps the support for the new SoC should be ready. | ||
diff --git a/Documentation/power/pm_qos_interface.txt b/Documentation/power/pm_qos_interface.txt index 483632087788..a5da5c7e7128 100644 --- a/Documentation/power/pm_qos_interface.txt +++ b/Documentation/power/pm_qos_interface.txt | |||
@@ -88,17 +88,19 @@ node. | |||
88 | 88 | ||
89 | 2. PM QoS per-device latency and flags framework | 89 | 2. PM QoS per-device latency and flags framework |
90 | 90 | ||
91 | For each device, there are two lists of PM QoS requests. One is maintained | 91 | For each device, there are three lists of PM QoS requests. Two of them are |
92 | along with the aggregated target of latency value and the other is for PM QoS | 92 | maintained along with the aggregated targets of resume latency and active |
93 | flags. Values are updated in response to changes of the request list. | 93 | state latency tolerance (in microseconds) and the third one is for PM QoS flags. |
94 | Values are updated in response to changes of the request list. | ||
94 | 95 | ||
95 | Target latency value is simply the minimum of the request values held in the | 96 | The target values of resume latency and active state latency tolerance are |
96 | parameter list elements. The PM QoS flags aggregate value is a gather (bitwise | 97 | simply the minimum of the request values held in the parameter list elements. |
97 | OR) of all list elements' values. Two device PM QoS flags are defined currently: | 98 | The PM QoS flags aggregate value is a gather (bitwise OR) of all list elements' |
98 | PM_QOS_FLAG_NO_POWER_OFF and PM_QOS_FLAG_REMOTE_WAKEUP. | 99 | values. Two device PM QoS flags are defined currently: PM_QOS_FLAG_NO_POWER_OFF |
100 | and PM_QOS_FLAG_REMOTE_WAKEUP. | ||
99 | 101 | ||
100 | Note: the aggregated target value is implemented as an atomic variable so that | 102 | Note: The aggregated target values are implemented in such a way that reading |
101 | reading the aggregated value does not require any locking mechanism. | 103 | the aggregated value does not require any locking mechanism. |
102 | 104 | ||
103 | 105 | ||
104 | From kernel mode the use of this interface is the following: | 106 | From kernel mode the use of this interface is the following: |
@@ -132,19 +134,21 @@ The meaning of the return values is as follows: | |||
132 | PM_QOS_FLAGS_UNDEFINED: The device's PM QoS structure has not been | 134 | PM_QOS_FLAGS_UNDEFINED: The device's PM QoS structure has not been |
133 | initialized or the list of requests is empty. | 135 | initialized or the list of requests is empty. |
134 | 136 | ||
135 | int dev_pm_qos_add_ancestor_request(dev, handle, value) | 137 | int dev_pm_qos_add_ancestor_request(dev, handle, type, value) |
136 | Add a PM QoS request for the first direct ancestor of the given device whose | 138 | Add a PM QoS request for the first direct ancestor of the given device whose |
137 | power.ignore_children flag is unset. | 139 | power.ignore_children flag is unset (for DEV_PM_QOS_RESUME_LATENCY requests) |
140 | or whose power.set_latency_tolerance callback pointer is not NULL (for | ||
141 | DEV_PM_QOS_LATENCY_TOLERANCE requests). | ||
138 | 142 | ||
139 | int dev_pm_qos_expose_latency_limit(device, value) | 143 | int dev_pm_qos_expose_latency_limit(device, value) |
140 | Add a request to the device's PM QoS list of latency constraints and create | 144 | Add a request to the device's PM QoS list of resume latency constraints and |
141 | a sysfs attribute pm_qos_resume_latency_us under the device's power directory | 145 | create a sysfs attribute pm_qos_resume_latency_us under the device's power |
142 | allowing user space to manipulate that request. | 146 | directory allowing user space to manipulate that request. |
143 | 147 | ||
144 | void dev_pm_qos_hide_latency_limit(device) | 148 | void dev_pm_qos_hide_latency_limit(device) |
145 | Drop the request added by dev_pm_qos_expose_latency_limit() from the device's | 149 | Drop the request added by dev_pm_qos_expose_latency_limit() from the device's |
146 | PM QoS list of latency constraints and remove sysfs attribute pm_qos_resume_latency_us | 150 | PM QoS list of resume latency constraints and remove sysfs attribute |
147 | from the device's power directory. | 151 | pm_qos_resume_latency_us from the device's power directory. |
148 | 152 | ||
149 | int dev_pm_qos_expose_flags(device, value) | 153 | int dev_pm_qos_expose_flags(device, value) |
150 | Add a request to the device's PM QoS list of flags and create sysfs attributes | 154 | Add a request to the device's PM QoS list of flags and create sysfs attributes |
@@ -163,7 +167,7 @@ a per-device notification tree and a global notification tree. | |||
163 | int dev_pm_qos_add_notifier(device, notifier): | 167 | int dev_pm_qos_add_notifier(device, notifier): |
164 | Adds a notification callback function for the device. | 168 | Adds a notification callback function for the device. |
165 | The callback is called when the aggregated value of the device constraints list | 169 | The callback is called when the aggregated value of the device constraints list |
166 | is changed. | 170 | is changed (for resume latency device PM QoS only). |
167 | 171 | ||
168 | int dev_pm_qos_remove_notifier(device, notifier): | 172 | int dev_pm_qos_remove_notifier(device, notifier): |
169 | Removes the notification callback function for the device. | 173 | Removes the notification callback function for the device. |
@@ -171,14 +175,48 @@ Removes the notification callback function for the device. | |||
171 | int dev_pm_qos_add_global_notifier(notifier): | 175 | int dev_pm_qos_add_global_notifier(notifier): |
172 | Adds a notification callback function in the global notification tree of the | 176 | Adds a notification callback function in the global notification tree of the |
173 | framework. | 177 | framework. |
174 | The callback is called when the aggregated value for any device is changed. | 178 | The callback is called when the aggregated value for any device is changed |
179 | (for resume latency device PM QoS only). | ||
175 | 180 | ||
176 | int dev_pm_qos_remove_global_notifier(notifier): | 181 | int dev_pm_qos_remove_global_notifier(notifier): |
177 | Removes the notification callback function from the global notification tree | 182 | Removes the notification callback function from the global notification tree |
178 | of the framework. | 183 | of the framework. |
179 | 184 | ||
180 | 185 | ||
181 | From user mode: | 186 | Active state latency tolerance |
182 | No API for user space access to the per-device latency constraints is provided | 187 | |
183 | yet - still under discussion. | 188 | This device PM QoS type is used to support systems in which hardware may switch |
184 | 189 | to energy-saving operation modes on the fly. In those systems, if the operation | |
190 | mode chosen by the hardware attempts to save energy in an overly aggressive way, | ||
191 | it may cause excess latencies to be visible to software, causing it to miss | ||
192 | certain protocol requirements or target frame or sample rates etc. | ||
193 | |||
194 | If there is a latency tolerance control mechanism for a given device available | ||
195 | to software, the .set_latency_tolerance callback in that device's dev_pm_info | ||
196 | structure should be populated. The routine pointed to by it is should implement | ||
197 | whatever is necessary to transfer the effective requirement value to the | ||
198 | hardware. | ||
199 | |||
200 | Whenever the effective latency tolerance changes for the device, its | ||
201 | .set_latency_tolerance() callback will be executed and the effective value will | ||
202 | be passed to it. If that value is negative, which means that the list of | ||
203 | latency tolerance requirements for the device is empty, the callback is expected | ||
204 | to switch the underlying hardware latency tolerance control mechanism to an | ||
205 | autonomous mode if available. If that value is PM_QOS_LATENCY_ANY, in turn, and | ||
206 | the hardware supports a special "no requirement" setting, the callback is | ||
207 | expected to use it. That allows software to prevent the hardware from | ||
208 | automatically updating the device's latency tolerance in response to its power | ||
209 | state changes (e.g. during transitions from D3cold to D0), which generally may | ||
210 | be done in the autonomous latency tolerance control mode. | ||
211 | |||
212 | If .set_latency_tolerance() is present for the device, sysfs attribute | ||
213 | pm_qos_latency_tolerance_us will be present in the devivce's power directory. | ||
214 | Then, user space can use that attribute to specify its latency tolerance | ||
215 | requirement for the device, if any. Writing "any" to it means "no requirement, | ||
216 | but do not let the hardware control latency tolerance" and writing "auto" to it | ||
217 | allows the hardware to be switched to the autonomous mode if there are no other | ||
218 | requirements from the kernel side in the device's list. | ||
219 | |||
220 | Kernel code can use the functions described above along with the | ||
221 | DEV_PM_QOS_LATENCY_TOLERANCE device PM QoS type to add, remove and update | ||
222 | latency tolerance requirements for devices. | ||
diff --git a/Documentation/power/runtime_pm.txt b/Documentation/power/runtime_pm.txt index b6ce00b2be9a..5f96daf8566a 100644 --- a/Documentation/power/runtime_pm.txt +++ b/Documentation/power/runtime_pm.txt | |||
@@ -232,7 +232,7 @@ defined in include/linux/pm.h: | |||
232 | equal to zero); the initial value of it is 1 (i.e. runtime PM is | 232 | equal to zero); the initial value of it is 1 (i.e. runtime PM is |
233 | initially disabled for all devices) | 233 | initially disabled for all devices) |
234 | 234 | ||
235 | unsigned int runtime_error; | 235 | int runtime_error; |
236 | - if set, there was a fatal error (one of the callbacks returned error code | 236 | - if set, there was a fatal error (one of the callbacks returned error code |
237 | as described in Section 2), so the helper funtions will not work until | 237 | as described in Section 2), so the helper funtions will not work until |
238 | this flag is cleared; this is the error code returned by the failing | 238 | this flag is cleared; this is the error code returned by the failing |
@@ -401,11 +401,11 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h: | |||
401 | int pm_runtime_disable(struct device *dev); | 401 | int pm_runtime_disable(struct device *dev); |
402 | - increment the device's 'power.disable_depth' field (if the value of that | 402 | - increment the device's 'power.disable_depth' field (if the value of that |
403 | field was previously zero, this prevents subsystem-level runtime PM | 403 | field was previously zero, this prevents subsystem-level runtime PM |
404 | callbacks from being run for the device), make sure that all of the pending | 404 | callbacks from being run for the device), make sure that all of the |
405 | runtime PM operations on the device are either completed or canceled; | 405 | pending runtime PM operations on the device are either completed or |
406 | returns 1 if there was a resume request pending and it was necessary to | 406 | canceled; returns 1 if there was a resume request pending and it was |
407 | execute the subsystem-level resume callback for the device to satisfy that | 407 | necessary to execute the subsystem-level resume callback for the device |
408 | request, otherwise 0 is returned | 408 | to satisfy that request, otherwise 0 is returned |
409 | 409 | ||
410 | int pm_runtime_barrier(struct device *dev); | 410 | int pm_runtime_barrier(struct device *dev); |
411 | - check if there's a resume request pending for the device and resume it | 411 | - check if there's a resume request pending for the device and resume it |
@@ -667,11 +667,11 @@ driver/base/power/generic_ops.c: | |||
667 | 667 | ||
668 | int pm_generic_runtime_suspend(struct device *dev); | 668 | int pm_generic_runtime_suspend(struct device *dev); |
669 | - invoke the ->runtime_suspend() callback provided by the driver of this | 669 | - invoke the ->runtime_suspend() callback provided by the driver of this |
670 | device and return its result, or return -EINVAL if not defined | 670 | device and return its result, or return 0 if not defined |
671 | 671 | ||
672 | int pm_generic_runtime_resume(struct device *dev); | 672 | int pm_generic_runtime_resume(struct device *dev); |
673 | - invoke the ->runtime_resume() callback provided by the driver of this | 673 | - invoke the ->runtime_resume() callback provided by the driver of this |
674 | device and return its result, or return -EINVAL if not defined | 674 | device and return its result, or return 0 if not defined |
675 | 675 | ||
676 | int pm_generic_suspend(struct device *dev); | 676 | int pm_generic_suspend(struct device *dev); |
677 | - if the device has not been suspended at run time, invoke the ->suspend() | 677 | - if the device has not been suspended at run time, invoke the ->suspend() |
@@ -727,15 +727,12 @@ driver/base/power/generic_ops.c: | |||
727 | int pm_generic_restore_noirq(struct device *dev); | 727 | int pm_generic_restore_noirq(struct device *dev); |
728 | - invoke the ->restore_noirq() callback provided by the device's driver | 728 | - invoke the ->restore_noirq() callback provided by the device's driver |
729 | 729 | ||
730 | These functions can be assigned to the ->runtime_idle(), ->runtime_suspend(), | 730 | These functions are the defaults used by the PM core, if a subsystem doesn't |
731 | provide its own callbacks for ->runtime_idle(), ->runtime_suspend(), | ||
731 | ->runtime_resume(), ->suspend(), ->suspend_noirq(), ->resume(), | 732 | ->runtime_resume(), ->suspend(), ->suspend_noirq(), ->resume(), |
732 | ->resume_noirq(), ->freeze(), ->freeze_noirq(), ->thaw(), ->thaw_noirq(), | 733 | ->resume_noirq(), ->freeze(), ->freeze_noirq(), ->thaw(), ->thaw_noirq(), |
733 | ->poweroff(), ->poweroff_noirq(), ->restore(), ->restore_noirq() callback | 734 | ->poweroff(), ->poweroff_noirq(), ->restore(), ->restore_noirq() in the |
734 | pointers in the subsystem-level dev_pm_ops structures. | 735 | subsystem-level dev_pm_ops structure. |
735 | |||
736 | If a subsystem wishes to use all of them at the same time, it can simply assign | ||
737 | the GENERIC_SUBSYS_PM_OPS macro, defined in include/linux/pm.h, to its | ||
738 | dev_pm_ops structure pointer. | ||
739 | 736 | ||
740 | Device drivers that wish to use the same function as a system suspend, freeze, | 737 | Device drivers that wish to use the same function as a system suspend, freeze, |
741 | poweroff and runtime suspend callback, and similarly for system resume, thaw, | 738 | poweroff and runtime suspend callback, and similarly for system resume, thaw, |
@@ -873,7 +870,7 @@ Here is a schematic pseudo-code example: | |||
873 | foo->is_suspended = 0; | 870 | foo->is_suspended = 0; |
874 | pm_runtime_mark_last_busy(&foo->dev); | 871 | pm_runtime_mark_last_busy(&foo->dev); |
875 | if (foo->num_pending_requests > 0) | 872 | if (foo->num_pending_requests > 0) |
876 | foo_process_requests(foo); | 873 | foo_process_next_request(foo); |
877 | unlock(&foo->private_lock); | 874 | unlock(&foo->private_lock); |
878 | return 0; | 875 | return 0; |
879 | } | 876 | } |
diff --git a/Documentation/scsi/ChangeLog.megaraid_sas b/Documentation/scsi/ChangeLog.megaraid_sas index 6edaa65b0818..91ba58ef02d7 100644 --- a/Documentation/scsi/ChangeLog.megaraid_sas +++ b/Documentation/scsi/ChangeLog.megaraid_sas | |||
@@ -1,3 +1,16 @@ | |||
1 | Release Date : Mon. Mar 10, 2014 17:00:00 PST 2014 - | ||
2 | (emaild-id:megaraidlinux@lsi.com) | ||
3 | Adam Radford | ||
4 | Kashyap Desai | ||
5 | Sumit Saxena | ||
6 | Current Version : 06.803.01.00-rc1 | ||
7 | Old Version : 06.700.06.00-rc1 | ||
8 | 1. Load correct raid context timeout value for multipathing & clustering. | ||
9 | 2. Fix megasas_ioc_init_fusion to use local stack variable. | ||
10 | 3. Return leaked MPT frames to MPT command pool. | ||
11 | 4. Add Dell PowerEdge VRTX SR-IOV VF device support. | ||
12 | 5. Version and Changelog update. | ||
13 | ------------------------------------------------------------------------------- | ||
1 | Release Date : Sat. Aug 31, 2013 17:00:00 PST 2013 - | 14 | Release Date : Sat. Aug 31, 2013 17:00:00 PST 2013 - |
2 | (emaild-id:megaraidlinux@lsi.com) | 15 | (emaild-id:megaraidlinux@lsi.com) |
3 | Adam Radford | 16 | Adam Radford |
diff --git a/Documentation/sgi-visws.txt b/Documentation/sgi-visws.txt deleted file mode 100644 index 7ff0811ca2ba..000000000000 --- a/Documentation/sgi-visws.txt +++ /dev/null | |||
@@ -1,13 +0,0 @@ | |||
1 | |||
2 | The SGI Visual Workstations (models 320 and 540) are based around | ||
3 | the Cobalt, Lithium, and Arsenic ASICs. The Cobalt ASIC is the | ||
4 | main system ASIC which interfaces the 1-4 IA32 cpus, the memory | ||
5 | system, and the I/O system in the Lithium ASIC. The Cobalt ASIC | ||
6 | also contains the 3D gfx rendering engine which renders to main | ||
7 | system memory -- part of which is used as the frame buffer which | ||
8 | is DMA'ed to a video connector using the Arsenic ASIC. A PIIX4 | ||
9 | chip and NS87307 are used to provide legacy device support (IDE, | ||
10 | serial, floppy, and parallel). | ||
11 | |||
12 | The Visual Workstation chipset largely conforms to the PC architecture | ||
13 | with some notable exceptions such as interrupt handling. | ||
diff --git a/Documentation/sound/oss/vwsnd b/Documentation/sound/oss/vwsnd deleted file mode 100644 index 4c6cbdb3c548..000000000000 --- a/Documentation/sound/oss/vwsnd +++ /dev/null | |||
@@ -1,293 +0,0 @@ | |||
1 | vwsnd - Sound driver for the Silicon Graphics 320 and 540 Visual | ||
2 | Workstations' onboard audio. | ||
3 | |||
4 | Copyright 1999 Silicon Graphics, Inc. All rights reserved. | ||
5 | |||
6 | |||
7 | At the time of this writing, March 1999, there are two models of | ||
8 | Visual Workstation, the 320 and the 540. This document only describes | ||
9 | those models. Future Visual Workstation models may have different | ||
10 | sound capabilities, and this driver will probably not work on those | ||
11 | boxes. | ||
12 | |||
13 | The Visual Workstation has an Analog Devices AD1843 "SoundComm" audio | ||
14 | codec chip. The AD1843 is accessed through the Cobalt I/O ASIC, also | ||
15 | known as Lithium. This driver programs both chips. | ||
16 | |||
17 | ============================================================================== | ||
18 | QUICK CONFIGURATION | ||
19 | |||
20 | # insmod soundcore | ||
21 | # insmod vwsnd | ||
22 | |||
23 | ============================================================================== | ||
24 | I/O CONNECTIONS | ||
25 | |||
26 | On the Visual Workstation, only three of the AD1843 inputs are hooked | ||
27 | up. The analog line in jacks are connected to the AD1843's AUX1 | ||
28 | input. The CD audio lines are connected to the AD1843's AUX2 input. | ||
29 | The microphone jack is connected to the AD1843's MIC input. The mic | ||
30 | jack is mono, but the signal is delivered to both the left and right | ||
31 | MIC inputs. You can record in stereo from the mic input, but you will | ||
32 | get the same signal on both channels (within the limits of A/D | ||
33 | accuracy). Full scale on the Line input is +/- 2.0 V. Full scale on | ||
34 | the MIC input is 20 dB less, or +/- 0.2 V. | ||
35 | |||
36 | The AD1843's LOUT1 outputs are connected to the Line Out jacks. The | ||
37 | AD1843's HPOUT outputs are connected to the speaker/headphone jack. | ||
38 | LOUT2 is not connected. Line out's maximum level is +/- 2.0 V peak to | ||
39 | peak. The speaker/headphone out's maximum is +/- 4.0 V peak to peak. | ||
40 | |||
41 | The AD1843's PCM input channel and one of its output channels (DAC1) | ||
42 | are connected to Lithium. The other output channel (DAC2) is not | ||
43 | connected. | ||
44 | |||
45 | ============================================================================== | ||
46 | CAPABILITIES | ||
47 | |||
48 | The AD1843 has PCM input and output (Pulse Code Modulation, also known | ||
49 | as wavetable). PCM input and output can be mono or stereo in any of | ||
50 | four formats. The formats are 16 bit signed and 8 bit unsigned, | ||
51 | u-Law, and A-Law format. Any sample rate from 4 KHz to 49 KHz is | ||
52 | available, in 1 Hz increments. | ||
53 | |||
54 | The AD1843 includes an analog mixer that can mix all three input | ||
55 | signals (line, mic and CD) into the analog outputs. The mixer has a | ||
56 | separate gain control and mute switch for each input. | ||
57 | |||
58 | There are two outputs, line out and speaker/headphone out. They | ||
59 | always produce the same signal, and the speaker always has 3 dB more | ||
60 | gain than the line out. The speaker/headphone output can be muted, | ||
61 | but this driver does not export that function. | ||
62 | |||
63 | The hardware can sync audio to the video clock, but this driver does | ||
64 | not have a way to specify syncing to video. | ||
65 | |||
66 | ============================================================================== | ||
67 | PROGRAMMING | ||
68 | |||
69 | This section explains the API supported by the driver. Also see the | ||
70 | Open Sound Programming Guide at http://www.opensound.com/pguide/ . | ||
71 | This section assumes familiarity with that document. | ||
72 | |||
73 | The driver has two interfaces, an I/O interface and a mixer interface. | ||
74 | There is no MIDI or sequencer capability. | ||
75 | |||
76 | ============================================================================== | ||
77 | PROGRAMMING PCM I/O | ||
78 | |||
79 | The I/O interface is usually accessed as /dev/audio or /dev/dsp. | ||
80 | Using the standard Open Sound System (OSS) ioctl calls, the sample | ||
81 | rate, number of channels, and sample format may be set within the | ||
82 | limitations described above. The driver supports triggering. It also | ||
83 | supports getting the input and output pointers with one-sample | ||
84 | accuracy. | ||
85 | |||
86 | The SNDCTL_DSP_GETCAP ioctl returns these capabilities. | ||
87 | |||
88 | DSP_CAP_DUPLEX - driver supports full duplex. | ||
89 | |||
90 | DSP_CAP_TRIGGER - driver supports triggering. | ||
91 | |||
92 | DSP_CAP_REALTIME - values returned by SNDCTL_DSP_GETIPTR | ||
93 | and SNDCTL_DSP_GETOPTR are accurate to a few samples. | ||
94 | |||
95 | Memory mapping (mmap) is not implemented. | ||
96 | |||
97 | The driver permits subdivided fragment sizes from 64 to 4096 bytes. | ||
98 | The number of fragments can be anything from 3 fragments to however | ||
99 | many fragments fit into 124 kilobytes. It is up to the user to | ||
100 | determine how few/small fragments can be used without introducing | ||
101 | glitches with a given workload. Linux is not realtime, so we can't | ||
102 | promise anything. (sigh...) | ||
103 | |||
104 | When this driver is switched into or out of mu-Law or A-Law mode on | ||
105 | output, it may produce an audible click. This is unavoidable. To | ||
106 | prevent clicking, use signed 16-bit mode instead, and convert from | ||
107 | mu-Law or A-Law format in software. | ||
108 | |||
109 | ============================================================================== | ||
110 | PROGRAMMING THE MIXER INTERFACE | ||
111 | |||
112 | The mixer interface is usually accessed as /dev/mixer. It is accessed | ||
113 | through ioctls. The mixer allows the application to control gain or | ||
114 | mute several audio signal paths, and also allows selection of the | ||
115 | recording source. | ||
116 | |||
117 | Each of the constants described here can be read using the | ||
118 | MIXER_READ(SOUND_MIXER_xxx) ioctl. Those that are not read-only can | ||
119 | also be written using the MIXER_WRITE(SOUND_MIXER_xxx) ioctl. In most | ||
120 | cases, <sys/soundcard.h> defines constants SOUND_MIXER_READ_xxx and | ||
121 | SOUND_MIXER_WRITE_xxx which work just as well. | ||
122 | |||
123 | SOUND_MIXER_CAPS Read-only | ||
124 | |||
125 | This is a mask of optional driver capabilities that are implemented. | ||
126 | This driver's only capability is SOUND_CAP_EXCL_INPUT, which means | ||
127 | that only one recording source can be active at a time. | ||
128 | |||
129 | SOUND_MIXER_DEVMASK Read-only | ||
130 | |||
131 | This is a mask of the sound channels. This driver's channels are PCM, | ||
132 | LINE, MIC, CD, and RECLEV. | ||
133 | |||
134 | SOUND_MIXER_STEREODEVS Read-only | ||
135 | |||
136 | This is a mask of which sound channels are capable of stereo. All | ||
137 | channels are capable of stereo. (But see caveat on MIC input in I/O | ||
138 | CONNECTIONS section above). | ||
139 | |||
140 | SOUND_MIXER_OUTMASK Read-only | ||
141 | |||
142 | This is a mask of channels that route inputs through to outputs. | ||
143 | Those are LINE, MIC, and CD. | ||
144 | |||
145 | SOUND_MIXER_RECMASK Read-only | ||
146 | |||
147 | This is a mask of channels that can be recording sources. Those are | ||
148 | PCM, LINE, MIC, CD. | ||
149 | |||
150 | SOUND_MIXER_PCM Default: 0x5757 (0 dB) | ||
151 | |||
152 | This is the gain control for PCM output. The left and right channel | ||
153 | gain are controlled independently. This gain control has 64 levels, | ||
154 | which range from -82.5 dB to +12.0 dB in 1.5 dB steps. Those 64 | ||
155 | levels are mapped onto 100 levels at the ioctl, see below. | ||
156 | |||
157 | SOUND_MIXER_LINE Default: 0x4a4a (0 dB) | ||
158 | |||
159 | This is the gain control for mixing the Line In source into the | ||
160 | outputs. The left and right channel gain are controlled | ||
161 | independently. This gain control has 32 levels, which range from | ||
162 | -34.5 dB to +12.0 dB in 1.5 dB steps. Those 32 levels are mapped onto | ||
163 | 100 levels at the ioctl, see below. | ||
164 | |||
165 | SOUND_MIXER_MIC Default: 0x4a4a (0 dB) | ||
166 | |||
167 | This is the gain control for mixing the MIC source into the outputs. | ||
168 | The left and right channel gain are controlled independently. This | ||
169 | gain control has 32 levels, which range from -34.5 dB to +12.0 dB in | ||
170 | 1.5 dB steps. Those 32 levels are mapped onto 100 levels at the | ||
171 | ioctl, see below. | ||
172 | |||
173 | SOUND_MIXER_CD Default: 0x4a4a (0 dB) | ||
174 | |||
175 | This is the gain control for mixing the CD audio source into the | ||
176 | outputs. The left and right channel gain are controlled | ||
177 | independently. This gain control has 32 levels, which range from | ||
178 | -34.5 dB to +12.0 dB in 1.5 dB steps. Those 32 levels are mapped onto | ||
179 | 100 levels at the ioctl, see below. | ||
180 | |||
181 | SOUND_MIXER_RECLEV Default: 0 (0 dB) | ||
182 | |||
183 | This is the gain control for PCM input (RECording LEVel). The left | ||
184 | and right channel gain are controlled independently. This gain | ||
185 | control has 16 levels, which range from 0 dB to +22.5 dB in 1.5 dB | ||
186 | steps. Those 16 levels are mapped onto 100 levels at the ioctl, see | ||
187 | below. | ||
188 | |||
189 | SOUND_MIXER_RECSRC Default: SOUND_MASK_LINE | ||
190 | |||
191 | This is a mask of currently selected PCM input sources (RECording | ||
192 | SouRCes). Because the AD1843 can only have a single recording source | ||
193 | at a time, only one bit at a time can be set in this mask. The | ||
194 | allowable values are SOUND_MASK_PCM, SOUND_MASK_LINE, SOUND_MASK_MIC, | ||
195 | or SOUND_MASK_CD. Selecting SOUND_MASK_PCM sets up internal | ||
196 | resampling which is useful for loopback testing and for hardware | ||
197 | sample rate conversion. But software sample rate conversion is | ||
198 | probably faster, so I don't know how useful that is. | ||
199 | |||
200 | SOUND_MIXER_OUTSRC DEFAULT: SOUND_MASK_LINE|SOUND_MASK_MIC|SOUND_MASK_CD | ||
201 | |||
202 | This is a mask of sources that are currently passed through to the | ||
203 | outputs. Those sources whose bits are not set are muted. | ||
204 | |||
205 | ============================================================================== | ||
206 | GAIN CONTROL | ||
207 | |||
208 | There are five gain controls listed above. Each has 16, 32, or 64 | ||
209 | steps. Each control has 1.5 dB of gain per step. Each control is | ||
210 | stereo. | ||
211 | |||
212 | The OSS defines the argument to a channel gain ioctl as having two | ||
213 | components, left and right, each of which ranges from 0 to 100. The | ||
214 | two components are packed into the same word, with the left side gain | ||
215 | in the least significant byte, and the right side gain in the second | ||
216 | least significant byte. In C, we would say this. | ||
217 | |||
218 | #include <assert.h> | ||
219 | |||
220 | ... | ||
221 | |||
222 | assert(leftgain >= 0 && leftgain <= 100); | ||
223 | assert(rightgain >= 0 && rightgain <= 100); | ||
224 | arg = leftgain | rightgain << 8; | ||
225 | |||
226 | So each OSS gain control has 101 steps. But the hardware has 16, 32, | ||
227 | or 64 steps. The hardware steps are spread across the 101 OSS steps | ||
228 | nearly evenly. The conversion formulas are like this, given N equals | ||
229 | 16, 32, or 64. | ||
230 | |||
231 | int round = N/2 - 1; | ||
232 | OSS_gain_steps = (hw_gain_steps * 100 + round) / (N - 1); | ||
233 | hw_gain_steps = (OSS_gain_steps * (N - 1) + round) / 100; | ||
234 | |||
235 | Here is a snippet of C code that will return the left and right gain | ||
236 | of any channel in dB. Pass it one of the predefined gain_desc_t | ||
237 | structures to access any of the five channels' gains. | ||
238 | |||
239 | typedef struct gain_desc { | ||
240 | float min_gain; | ||
241 | float gain_step; | ||
242 | int nbits; | ||
243 | int chan; | ||
244 | } gain_desc_t; | ||
245 | |||
246 | const gain_desc_t gain_pcm = { -82.5, 1.5, 6, SOUND_MIXER_PCM }; | ||
247 | const gain_desc_t gain_line = { -34.5, 1.5, 5, SOUND_MIXER_LINE }; | ||
248 | const gain_desc_t gain_mic = { -34.5, 1.5, 5, SOUND_MIXER_MIC }; | ||
249 | const gain_desc_t gain_cd = { -34.5, 1.5, 5, SOUND_MIXER_CD }; | ||
250 | const gain_desc_t gain_reclev = { 0.0, 1.5, 4, SOUND_MIXER_RECLEV }; | ||
251 | |||
252 | int get_gain_dB(int fd, const gain_desc_t *gp, | ||
253 | float *left, float *right) | ||
254 | { | ||
255 | int word; | ||
256 | int lg, rg; | ||
257 | int mask = (1 << gp->nbits) - 1; | ||
258 | |||
259 | if (ioctl(fd, MIXER_READ(gp->chan), &word) != 0) | ||
260 | return -1; /* fail */ | ||
261 | lg = word & 0xFF; | ||
262 | rg = word >> 8 & 0xFF; | ||
263 | lg = (lg * mask + mask / 2) / 100; | ||
264 | rg = (rg * mask + mask / 2) / 100; | ||
265 | *left = gp->min_gain + gp->gain_step * lg; | ||
266 | *right = gp->min_gain + gp->gain_step * rg; | ||
267 | return 0; | ||
268 | } | ||
269 | |||
270 | And here is the corresponding routine to set a channel's gain in dB. | ||
271 | |||
272 | int set_gain_dB(int fd, const gain_desc_t *gp, float left, float right) | ||
273 | { | ||
274 | float max_gain = | ||
275 | gp->min_gain + (1 << gp->nbits) * gp->gain_step; | ||
276 | float round = gp->gain_step / 2; | ||
277 | int mask = (1 << gp->nbits) - 1; | ||
278 | int word; | ||
279 | int lg, rg; | ||
280 | |||
281 | if (left < gp->min_gain || right < gp->min_gain) | ||
282 | return EINVAL; | ||
283 | lg = (left - gp->min_gain + round) / gp->gain_step; | ||
284 | rg = (right - gp->min_gain + round) / gp->gain_step; | ||
285 | if (lg >= (1 << gp->nbits) || rg >= (1 << gp->nbits)) | ||
286 | return EINVAL; | ||
287 | lg = (100 * lg + mask / 2) / mask; | ||
288 | rg = (100 * rg + mask / 2) / mask; | ||
289 | word = lg | rg << 8; | ||
290 | |||
291 | return ioctl(fd, MIXER_WRITE(gp->chan), &word); | ||
292 | } | ||
293 | |||
diff --git a/Documentation/spi/spidev b/Documentation/spi/spidev index ed2da5e5b28a..3d14035b1766 100644 --- a/Documentation/spi/spidev +++ b/Documentation/spi/spidev | |||
@@ -85,6 +85,12 @@ settings for data transfer parameters: | |||
85 | SPI_MODE_0..SPI_MODE_3; or if you prefer you can combine SPI_CPOL | 85 | SPI_MODE_0..SPI_MODE_3; or if you prefer you can combine SPI_CPOL |
86 | (clock polarity, idle high iff this is set) or SPI_CPHA (clock phase, | 86 | (clock polarity, idle high iff this is set) or SPI_CPHA (clock phase, |
87 | sample on trailing edge iff this is set) flags. | 87 | sample on trailing edge iff this is set) flags. |
88 | Note that this request is limited to SPI mode flags that fit in a | ||
89 | single byte. | ||
90 | |||
91 | SPI_IOC_RD_MODE32, SPI_IOC_WR_MODE32 ... pass a pointer to a uin32_t | ||
92 | which will return (RD) or assign (WR) the full SPI transfer mode, | ||
93 | not limited to the bits that fit in one byte. | ||
88 | 94 | ||
89 | SPI_IOC_RD_LSB_FIRST, SPI_IOC_WR_LSB_FIRST ... pass a pointer to a byte | 95 | SPI_IOC_RD_LSB_FIRST, SPI_IOC_WR_LSB_FIRST ... pass a pointer to a byte |
90 | which will return (RD) or assign (WR) the bit justification used to | 96 | which will return (RD) or assign (WR) the bit justification used to |
diff --git a/Documentation/spi/spidev_fdx.c b/Documentation/spi/spidev_fdx.c index 36ec0774ca0b..0ea3e51292fc 100644 --- a/Documentation/spi/spidev_fdx.c +++ b/Documentation/spi/spidev_fdx.c | |||
@@ -78,10 +78,10 @@ static void do_msg(int fd, int len) | |||
78 | 78 | ||
79 | static void dumpstat(const char *name, int fd) | 79 | static void dumpstat(const char *name, int fd) |
80 | { | 80 | { |
81 | __u8 mode, lsb, bits; | 81 | __u8 lsb, bits; |
82 | __u32 speed; | 82 | __u32 mode, speed; |
83 | 83 | ||
84 | if (ioctl(fd, SPI_IOC_RD_MODE, &mode) < 0) { | 84 | if (ioctl(fd, SPI_IOC_RD_MODE32, &mode) < 0) { |
85 | perror("SPI rd_mode"); | 85 | perror("SPI rd_mode"); |
86 | return; | 86 | return; |
87 | } | 87 | } |
@@ -98,7 +98,7 @@ static void dumpstat(const char *name, int fd) | |||
98 | return; | 98 | return; |
99 | } | 99 | } |
100 | 100 | ||
101 | printf("%s: spi mode %d, %d bits %sper word, %d Hz max\n", | 101 | printf("%s: spi mode 0x%x, %d bits %sper word, %d Hz max\n", |
102 | name, mode, bits, lsb ? "(lsb first) " : "", speed); | 102 | name, mode, bits, lsb ? "(lsb first) " : "", speed); |
103 | } | 103 | } |
104 | 104 | ||
diff --git a/Documentation/spi/spidev_test.c b/Documentation/spi/spidev_test.c index 16feda901469..3a2f9d59edab 100644 --- a/Documentation/spi/spidev_test.c +++ b/Documentation/spi/spidev_test.c | |||
@@ -30,7 +30,7 @@ static void pabort(const char *s) | |||
30 | } | 30 | } |
31 | 31 | ||
32 | static const char *device = "/dev/spidev1.1"; | 32 | static const char *device = "/dev/spidev1.1"; |
33 | static uint8_t mode; | 33 | static uint32_t mode; |
34 | static uint8_t bits = 8; | 34 | static uint8_t bits = 8; |
35 | static uint32_t speed = 500000; | 35 | static uint32_t speed = 500000; |
36 | static uint16_t delay; | 36 | static uint16_t delay; |
@@ -57,6 +57,21 @@ static void transfer(int fd) | |||
57 | .bits_per_word = bits, | 57 | .bits_per_word = bits, |
58 | }; | 58 | }; |
59 | 59 | ||
60 | if (mode & SPI_TX_QUAD) | ||
61 | tr.tx_nbits = 4; | ||
62 | else if (mode & SPI_TX_DUAL) | ||
63 | tr.tx_nbits = 2; | ||
64 | if (mode & SPI_RX_QUAD) | ||
65 | tr.rx_nbits = 4; | ||
66 | else if (mode & SPI_RX_DUAL) | ||
67 | tr.rx_nbits = 2; | ||
68 | if (!(mode & SPI_LOOP)) { | ||
69 | if (mode & (SPI_TX_QUAD | SPI_TX_DUAL)) | ||
70 | tr.rx_buf = 0; | ||
71 | else if (mode & (SPI_RX_QUAD | SPI_RX_DUAL)) | ||
72 | tr.tx_buf = 0; | ||
73 | } | ||
74 | |||
60 | ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr); | 75 | ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr); |
61 | if (ret < 1) | 76 | if (ret < 1) |
62 | pabort("can't send spi message"); | 77 | pabort("can't send spi message"); |
@@ -81,7 +96,11 @@ static void print_usage(const char *prog) | |||
81 | " -O --cpol clock polarity\n" | 96 | " -O --cpol clock polarity\n" |
82 | " -L --lsb least significant bit first\n" | 97 | " -L --lsb least significant bit first\n" |
83 | " -C --cs-high chip select active high\n" | 98 | " -C --cs-high chip select active high\n" |
84 | " -3 --3wire SI/SO signals shared\n"); | 99 | " -3 --3wire SI/SO signals shared\n" |
100 | " -N --no-cs no chip select\n" | ||
101 | " -R --ready slave pulls low to pause\n" | ||
102 | " -2 --dual dual transfer\n" | ||
103 | " -4 --quad quad transfer\n"); | ||
85 | exit(1); | 104 | exit(1); |
86 | } | 105 | } |
87 | 106 | ||
@@ -101,11 +120,13 @@ static void parse_opts(int argc, char *argv[]) | |||
101 | { "3wire", 0, 0, '3' }, | 120 | { "3wire", 0, 0, '3' }, |
102 | { "no-cs", 0, 0, 'N' }, | 121 | { "no-cs", 0, 0, 'N' }, |
103 | { "ready", 0, 0, 'R' }, | 122 | { "ready", 0, 0, 'R' }, |
123 | { "dual", 0, 0, '2' }, | ||
124 | { "quad", 0, 0, '4' }, | ||
104 | { NULL, 0, 0, 0 }, | 125 | { NULL, 0, 0, 0 }, |
105 | }; | 126 | }; |
106 | int c; | 127 | int c; |
107 | 128 | ||
108 | c = getopt_long(argc, argv, "D:s:d:b:lHOLC3NR", lopts, NULL); | 129 | c = getopt_long(argc, argv, "D:s:d:b:lHOLC3NR24", lopts, NULL); |
109 | 130 | ||
110 | if (c == -1) | 131 | if (c == -1) |
111 | break; | 132 | break; |
@@ -147,11 +168,23 @@ static void parse_opts(int argc, char *argv[]) | |||
147 | case 'R': | 168 | case 'R': |
148 | mode |= SPI_READY; | 169 | mode |= SPI_READY; |
149 | break; | 170 | break; |
171 | case '2': | ||
172 | mode |= SPI_TX_DUAL; | ||
173 | break; | ||
174 | case '4': | ||
175 | mode |= SPI_TX_QUAD; | ||
176 | break; | ||
150 | default: | 177 | default: |
151 | print_usage(argv[0]); | 178 | print_usage(argv[0]); |
152 | break; | 179 | break; |
153 | } | 180 | } |
154 | } | 181 | } |
182 | if (mode & SPI_LOOP) { | ||
183 | if (mode & SPI_TX_DUAL) | ||
184 | mode |= SPI_RX_DUAL; | ||
185 | if (mode & SPI_TX_QUAD) | ||
186 | mode |= SPI_RX_QUAD; | ||
187 | } | ||
155 | } | 188 | } |
156 | 189 | ||
157 | int main(int argc, char *argv[]) | 190 | int main(int argc, char *argv[]) |
@@ -168,11 +201,11 @@ int main(int argc, char *argv[]) | |||
168 | /* | 201 | /* |
169 | * spi mode | 202 | * spi mode |
170 | */ | 203 | */ |
171 | ret = ioctl(fd, SPI_IOC_WR_MODE, &mode); | 204 | ret = ioctl(fd, SPI_IOC_WR_MODE32, &mode); |
172 | if (ret == -1) | 205 | if (ret == -1) |
173 | pabort("can't set spi mode"); | 206 | pabort("can't set spi mode"); |
174 | 207 | ||
175 | ret = ioctl(fd, SPI_IOC_RD_MODE, &mode); | 208 | ret = ioctl(fd, SPI_IOC_RD_MODE32, &mode); |
176 | if (ret == -1) | 209 | if (ret == -1) |
177 | pabort("can't get spi mode"); | 210 | pabort("can't get spi mode"); |
178 | 211 | ||
@@ -198,7 +231,7 @@ int main(int argc, char *argv[]) | |||
198 | if (ret == -1) | 231 | if (ret == -1) |
199 | pabort("can't get max speed hz"); | 232 | pabort("can't get max speed hz"); |
200 | 233 | ||
201 | printf("spi mode: %d\n", mode); | 234 | printf("spi mode: 0x%x\n", mode); |
202 | printf("bits per word: %d\n", bits); | 235 | printf("bits per word: %d\n", bits); |
203 | printf("max speed: %d Hz (%d KHz)\n", speed, speed/1000); | 236 | printf("max speed: %d Hz (%d KHz)\n", speed, speed/1000); |
204 | 237 | ||
diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt index e55124e7c40c..ec8be46bf48d 100644 --- a/Documentation/sysctl/kernel.txt +++ b/Documentation/sysctl/kernel.txt | |||
@@ -320,10 +320,11 @@ This file shows up if CONFIG_DETECT_HUNG_TASK is enabled. | |||
320 | 320 | ||
321 | ============================================================== | 321 | ============================================================== |
322 | 322 | ||
323 | hung_task_warning: | 323 | hung_task_warnings: |
324 | 324 | ||
325 | The maximum number of warnings to report. During a check interval | 325 | The maximum number of warnings to report. During a check interval |
326 | When this value is reached, no more the warnings will be reported. | 326 | if a hung task is detected, this value is decreased by 1. |
327 | When this value reaches 0, no more warnings will be reported. | ||
327 | This file shows up if CONFIG_DETECT_HUNG_TASK is enabled. | 328 | This file shows up if CONFIG_DETECT_HUNG_TASK is enabled. |
328 | 329 | ||
329 | -1: report an infinite number of warnings. | 330 | -1: report an infinite number of warnings. |
@@ -441,8 +442,7 @@ feature should be disabled. Otherwise, if the system overhead from the | |||
441 | feature is too high then the rate the kernel samples for NUMA hinting | 442 | feature is too high then the rate the kernel samples for NUMA hinting |
442 | faults may be controlled by the numa_balancing_scan_period_min_ms, | 443 | faults may be controlled by the numa_balancing_scan_period_min_ms, |
443 | numa_balancing_scan_delay_ms, numa_balancing_scan_period_max_ms, | 444 | numa_balancing_scan_delay_ms, numa_balancing_scan_period_max_ms, |
444 | numa_balancing_scan_size_mb, numa_balancing_settle_count sysctls and | 445 | numa_balancing_scan_size_mb, and numa_balancing_settle_count sysctls. |
445 | numa_balancing_migrate_deferred. | ||
446 | 446 | ||
447 | ============================================================== | 447 | ============================================================== |
448 | 448 | ||
@@ -483,13 +483,6 @@ rate for each task. | |||
483 | numa_balancing_scan_size_mb is how many megabytes worth of pages are | 483 | numa_balancing_scan_size_mb is how many megabytes worth of pages are |
484 | scanned for a given scan. | 484 | scanned for a given scan. |
485 | 485 | ||
486 | numa_balancing_migrate_deferred is how many page migrations get skipped | ||
487 | unconditionally, after a page migration is skipped because a page is shared | ||
488 | with other tasks. This reduces page migration overhead, and determines | ||
489 | how much stronger the "move task near its memory" policy scheduler becomes, | ||
490 | versus the "move memory near its task" memory management policy, for workloads | ||
491 | with shared memory. | ||
492 | |||
493 | ============================================================== | 486 | ============================================================== |
494 | 487 | ||
495 | osrelease, ostype & version: | 488 | osrelease, ostype & version: |
diff --git a/Documentation/trace/events-power.txt b/Documentation/trace/events-power.txt index 3bd33b8dc7c4..21d514ced212 100644 --- a/Documentation/trace/events-power.txt +++ b/Documentation/trace/events-power.txt | |||
@@ -92,5 +92,5 @@ dev_pm_qos_remove_request "device=%s type=%s new_value=%d" | |||
92 | 92 | ||
93 | The first parameter gives the device name which tries to add/update/remove | 93 | The first parameter gives the device name which tries to add/update/remove |
94 | QoS requests. | 94 | QoS requests. |
95 | The second parameter gives the request type (e.g. "DEV_PM_QOS_LATENCY"). | 95 | The second parameter gives the request type (e.g. "DEV_PM_QOS_RESUME_LATENCY"). |
96 | The third parameter is value to be added/updated/removed. | 96 | The third parameter is value to be added/updated/removed. |
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt index dce3d05b4823..a9380ba54c8e 100644 --- a/Documentation/virtual/kvm/api.txt +++ b/Documentation/virtual/kvm/api.txt | |||
@@ -586,8 +586,8 @@ struct kvm_fpu { | |||
586 | 586 | ||
587 | 4.24 KVM_CREATE_IRQCHIP | 587 | 4.24 KVM_CREATE_IRQCHIP |
588 | 588 | ||
589 | Capability: KVM_CAP_IRQCHIP | 589 | Capability: KVM_CAP_IRQCHIP, KVM_CAP_S390_IRQCHIP (s390) |
590 | Architectures: x86, ia64, ARM, arm64 | 590 | Architectures: x86, ia64, ARM, arm64, s390 |
591 | Type: vm ioctl | 591 | Type: vm ioctl |
592 | Parameters: none | 592 | Parameters: none |
593 | Returns: 0 on success, -1 on error | 593 | Returns: 0 on success, -1 on error |
@@ -596,7 +596,10 @@ Creates an interrupt controller model in the kernel. On x86, creates a virtual | |||
596 | ioapic, a virtual PIC (two PICs, nested), and sets up future vcpus to have a | 596 | ioapic, a virtual PIC (two PICs, nested), and sets up future vcpus to have a |
597 | local APIC. IRQ routing for GSIs 0-15 is set to both PIC and IOAPIC; GSI 16-23 | 597 | local APIC. IRQ routing for GSIs 0-15 is set to both PIC and IOAPIC; GSI 16-23 |
598 | only go to the IOAPIC. On ia64, a IOSAPIC is created. On ARM/arm64, a GIC is | 598 | only go to the IOAPIC. On ia64, a IOSAPIC is created. On ARM/arm64, a GIC is |
599 | created. | 599 | created. On s390, a dummy irq routing table is created. |
600 | |||
601 | Note that on s390 the KVM_CAP_S390_IRQCHIP vm capability needs to be enabled | ||
602 | before KVM_CREATE_IRQCHIP can be used. | ||
600 | 603 | ||
601 | 604 | ||
602 | 4.25 KVM_IRQ_LINE | 605 | 4.25 KVM_IRQ_LINE |
@@ -612,6 +615,20 @@ On some architectures it is required that an interrupt controller model has | |||
612 | been previously created with KVM_CREATE_IRQCHIP. Note that edge-triggered | 615 | been previously created with KVM_CREATE_IRQCHIP. Note that edge-triggered |
613 | interrupts require the level to be set to 1 and then back to 0. | 616 | interrupts require the level to be set to 1 and then back to 0. |
614 | 617 | ||
618 | On real hardware, interrupt pins can be active-low or active-high. This | ||
619 | does not matter for the level field of struct kvm_irq_level: 1 always | ||
620 | means active (asserted), 0 means inactive (deasserted). | ||
621 | |||
622 | x86 allows the operating system to program the interrupt polarity | ||
623 | (active-low/active-high) for level-triggered interrupts, and KVM used | ||
624 | to consider the polarity. However, due to bitrot in the handling of | ||
625 | active-low interrupts, the above convention is now valid on x86 too. | ||
626 | This is signaled by KVM_CAP_X86_IOAPIC_POLARITY_IGNORED. Userspace | ||
627 | should not present interrupts to the guest as active-low unless this | ||
628 | capability is present (or unless it is not using the in-kernel irqchip, | ||
629 | of course). | ||
630 | |||
631 | |||
615 | ARM/arm64 can signal an interrupt either at the CPU level, or at the | 632 | ARM/arm64 can signal an interrupt either at the CPU level, or at the |
616 | in-kernel irqchip (GIC), and for in-kernel irqchip can tell the GIC to | 633 | in-kernel irqchip (GIC), and for in-kernel irqchip can tell the GIC to |
617 | use PPIs designated for specific cpus. The irq field is interpreted | 634 | use PPIs designated for specific cpus. The irq field is interpreted |
@@ -628,7 +645,7 @@ The irq_type field has the following values: | |||
628 | 645 | ||
629 | (The irq_id field thus corresponds nicely to the IRQ ID in the ARM GIC specs) | 646 | (The irq_id field thus corresponds nicely to the IRQ ID in the ARM GIC specs) |
630 | 647 | ||
631 | In both cases, level is used to raise/lower the line. | 648 | In both cases, level is used to assert/deassert the line. |
632 | 649 | ||
633 | struct kvm_irq_level { | 650 | struct kvm_irq_level { |
634 | union { | 651 | union { |
@@ -918,9 +935,9 @@ documentation when it pops into existence). | |||
918 | 935 | ||
919 | 4.37 KVM_ENABLE_CAP | 936 | 4.37 KVM_ENABLE_CAP |
920 | 937 | ||
921 | Capability: KVM_CAP_ENABLE_CAP | 938 | Capability: KVM_CAP_ENABLE_CAP, KVM_CAP_ENABLE_CAP_VM |
922 | Architectures: ppc, s390 | 939 | Architectures: ppc, s390 |
923 | Type: vcpu ioctl | 940 | Type: vcpu ioctl, vm ioctl (with KVM_CAP_ENABLE_CAP_VM) |
924 | Parameters: struct kvm_enable_cap (in) | 941 | Parameters: struct kvm_enable_cap (in) |
925 | Returns: 0 on success; -1 on error | 942 | Returns: 0 on success; -1 on error |
926 | 943 | ||
@@ -951,6 +968,8 @@ function properly, this is the place to put them. | |||
951 | __u8 pad[64]; | 968 | __u8 pad[64]; |
952 | }; | 969 | }; |
953 | 970 | ||
971 | The vcpu ioctl should be used for vcpu-specific capabilities, the vm ioctl | ||
972 | for vm-wide capabilities. | ||
954 | 973 | ||
955 | 4.38 KVM_GET_MP_STATE | 974 | 4.38 KVM_GET_MP_STATE |
956 | 975 | ||
@@ -1320,7 +1339,7 @@ KVM_ASSIGN_DEV_IRQ. Partial deassignment of host or guest IRQ is allowed. | |||
1320 | 4.52 KVM_SET_GSI_ROUTING | 1339 | 4.52 KVM_SET_GSI_ROUTING |
1321 | 1340 | ||
1322 | Capability: KVM_CAP_IRQ_ROUTING | 1341 | Capability: KVM_CAP_IRQ_ROUTING |
1323 | Architectures: x86 ia64 | 1342 | Architectures: x86 ia64 s390 |
1324 | Type: vm ioctl | 1343 | Type: vm ioctl |
1325 | Parameters: struct kvm_irq_routing (in) | 1344 | Parameters: struct kvm_irq_routing (in) |
1326 | Returns: 0 on success, -1 on error | 1345 | Returns: 0 on success, -1 on error |
@@ -1343,6 +1362,7 @@ struct kvm_irq_routing_entry { | |||
1343 | union { | 1362 | union { |
1344 | struct kvm_irq_routing_irqchip irqchip; | 1363 | struct kvm_irq_routing_irqchip irqchip; |
1345 | struct kvm_irq_routing_msi msi; | 1364 | struct kvm_irq_routing_msi msi; |
1365 | struct kvm_irq_routing_s390_adapter adapter; | ||
1346 | __u32 pad[8]; | 1366 | __u32 pad[8]; |
1347 | } u; | 1367 | } u; |
1348 | }; | 1368 | }; |
@@ -1350,6 +1370,7 @@ struct kvm_irq_routing_entry { | |||
1350 | /* gsi routing entry types */ | 1370 | /* gsi routing entry types */ |
1351 | #define KVM_IRQ_ROUTING_IRQCHIP 1 | 1371 | #define KVM_IRQ_ROUTING_IRQCHIP 1 |
1352 | #define KVM_IRQ_ROUTING_MSI 2 | 1372 | #define KVM_IRQ_ROUTING_MSI 2 |
1373 | #define KVM_IRQ_ROUTING_S390_ADAPTER 3 | ||
1353 | 1374 | ||
1354 | No flags are specified so far, the corresponding field must be set to zero. | 1375 | No flags are specified so far, the corresponding field must be set to zero. |
1355 | 1376 | ||
@@ -1365,6 +1386,14 @@ struct kvm_irq_routing_msi { | |||
1365 | __u32 pad; | 1386 | __u32 pad; |
1366 | }; | 1387 | }; |
1367 | 1388 | ||
1389 | struct kvm_irq_routing_s390_adapter { | ||
1390 | __u64 ind_addr; | ||
1391 | __u64 summary_addr; | ||
1392 | __u64 ind_offset; | ||
1393 | __u32 summary_offset; | ||
1394 | __u32 adapter_id; | ||
1395 | }; | ||
1396 | |||
1368 | 1397 | ||
1369 | 4.53 KVM_ASSIGN_SET_MSIX_NR | 1398 | 4.53 KVM_ASSIGN_SET_MSIX_NR |
1370 | 1399 | ||
@@ -2566,6 +2595,10 @@ executed a memory-mapped I/O instruction which could not be satisfied | |||
2566 | by kvm. The 'data' member contains the written data if 'is_write' is | 2595 | by kvm. The 'data' member contains the written data if 'is_write' is |
2567 | true, and should be filled by application code otherwise. | 2596 | true, and should be filled by application code otherwise. |
2568 | 2597 | ||
2598 | The 'data' member contains, in its first 'len' bytes, the value as it would | ||
2599 | appear if the VCPU performed a load or store of the appropriate width directly | ||
2600 | to the byte array. | ||
2601 | |||
2569 | NOTE: For KVM_EXIT_IO, KVM_EXIT_MMIO, KVM_EXIT_OSI, KVM_EXIT_DCR, | 2602 | NOTE: For KVM_EXIT_IO, KVM_EXIT_MMIO, KVM_EXIT_OSI, KVM_EXIT_DCR, |
2570 | KVM_EXIT_PAPR and KVM_EXIT_EPR the corresponding | 2603 | KVM_EXIT_PAPR and KVM_EXIT_EPR the corresponding |
2571 | operations are complete (and guest state is consistent) only after userspace | 2604 | operations are complete (and guest state is consistent) only after userspace |
diff --git a/Documentation/virtual/kvm/devices/s390_flic.txt b/Documentation/virtual/kvm/devices/s390_flic.txt new file mode 100644 index 000000000000..4ceef53164b0 --- /dev/null +++ b/Documentation/virtual/kvm/devices/s390_flic.txt | |||
@@ -0,0 +1,91 @@ | |||
1 | FLIC (floating interrupt controller) | ||
2 | ==================================== | ||
3 | |||
4 | FLIC handles floating (non per-cpu) interrupts, i.e. I/O, service and some | ||
5 | machine check interruptions. All interrupts are stored in a per-vm list of | ||
6 | pending interrupts. FLIC performs operations on this list. | ||
7 | |||
8 | Only one FLIC instance may be instantiated. | ||
9 | |||
10 | FLIC provides support to | ||
11 | - add interrupts (KVM_DEV_FLIC_ENQUEUE) | ||
12 | - inspect currently pending interrupts (KVM_FLIC_GET_ALL_IRQS) | ||
13 | - purge all pending floating interrupts (KVM_DEV_FLIC_CLEAR_IRQS) | ||
14 | - enable/disable for the guest transparent async page faults | ||
15 | - register and modify adapter interrupt sources (KVM_DEV_FLIC_ADAPTER_*) | ||
16 | |||
17 | Groups: | ||
18 | KVM_DEV_FLIC_ENQUEUE | ||
19 | Passes a buffer and length into the kernel which are then injected into | ||
20 | the list of pending interrupts. | ||
21 | attr->addr contains the pointer to the buffer and attr->attr contains | ||
22 | the length of the buffer. | ||
23 | The format of the data structure kvm_s390_irq as it is copied from userspace | ||
24 | is defined in usr/include/linux/kvm.h. | ||
25 | |||
26 | KVM_DEV_FLIC_GET_ALL_IRQS | ||
27 | Copies all floating interrupts into a buffer provided by userspace. | ||
28 | When the buffer is too small it returns -ENOMEM, which is the indication | ||
29 | for userspace to try again with a bigger buffer. | ||
30 | All interrupts remain pending, i.e. are not deleted from the list of | ||
31 | currently pending interrupts. | ||
32 | attr->addr contains the userspace address of the buffer into which all | ||
33 | interrupt data will be copied. | ||
34 | attr->attr contains the size of the buffer in bytes. | ||
35 | |||
36 | KVM_DEV_FLIC_CLEAR_IRQS | ||
37 | Simply deletes all elements from the list of currently pending floating | ||
38 | interrupts. No interrupts are injected into the guest. | ||
39 | |||
40 | KVM_DEV_FLIC_APF_ENABLE | ||
41 | Enables async page faults for the guest. So in case of a major page fault | ||
42 | the host is allowed to handle this async and continues the guest. | ||
43 | |||
44 | KVM_DEV_FLIC_APF_DISABLE_WAIT | ||
45 | Disables async page faults for the guest and waits until already pending | ||
46 | async page faults are done. This is necessary to trigger a completion interrupt | ||
47 | for every init interrupt before migrating the interrupt list. | ||
48 | |||
49 | KVM_DEV_FLIC_ADAPTER_REGISTER | ||
50 | Register an I/O adapter interrupt source. Takes a kvm_s390_io_adapter | ||
51 | describing the adapter to register: | ||
52 | |||
53 | struct kvm_s390_io_adapter { | ||
54 | __u32 id; | ||
55 | __u8 isc; | ||
56 | __u8 maskable; | ||
57 | __u8 swap; | ||
58 | __u8 pad; | ||
59 | }; | ||
60 | |||
61 | id contains the unique id for the adapter, isc the I/O interruption subclass | ||
62 | to use, maskable whether this adapter may be masked (interrupts turned off) | ||
63 | and swap whether the indicators need to be byte swapped. | ||
64 | |||
65 | |||
66 | KVM_DEV_FLIC_ADAPTER_MODIFY | ||
67 | Modifies attributes of an existing I/O adapter interrupt source. Takes | ||
68 | a kvm_s390_io_adapter_req specifiying the adapter and the operation: | ||
69 | |||
70 | struct kvm_s390_io_adapter_req { | ||
71 | __u32 id; | ||
72 | __u8 type; | ||
73 | __u8 mask; | ||
74 | __u16 pad0; | ||
75 | __u64 addr; | ||
76 | }; | ||
77 | |||
78 | id specifies the adapter and type the operation. The supported operations | ||
79 | are: | ||
80 | |||
81 | KVM_S390_IO_ADAPTER_MASK | ||
82 | mask or unmask the adapter, as specified in mask | ||
83 | |||
84 | KVM_S390_IO_ADAPTER_MAP | ||
85 | perform a gmap translation for the guest address provided in addr, | ||
86 | pin a userspace page for the translated address and add it to the | ||
87 | list of mappings | ||
88 | |||
89 | KVM_S390_IO_ADAPTER_UNMAP | ||
90 | release a userspace page for the translated address specified in addr | ||
91 | from the list of mappings | ||
diff --git a/Documentation/w1/masters/ds2490 b/Documentation/w1/masters/ds2490 index 28176def3d6f..3e091151dd80 100644 --- a/Documentation/w1/masters/ds2490 +++ b/Documentation/w1/masters/ds2490 | |||
@@ -21,8 +21,6 @@ Notes and limitations. | |||
21 | - The weak pullup current is a minimum of 0.9mA and maximum of 6.0mA. | 21 | - The weak pullup current is a minimum of 0.9mA and maximum of 6.0mA. |
22 | - The 5V strong pullup is supported with a minimum of 5.9mA and a | 22 | - The 5V strong pullup is supported with a minimum of 5.9mA and a |
23 | maximum of 30.4 mA. (From DS2490.pdf) | 23 | maximum of 30.4 mA. (From DS2490.pdf) |
24 | - While the ds2490 supports a hardware search the code doesn't take | ||
25 | advantage of it (in tested case it only returned first device). | ||
26 | - The hardware will detect when devices are attached to the bus on the | 24 | - The hardware will detect when devices are attached to the bus on the |
27 | next bus (reset?) operation, however only a message is printed as | 25 | next bus (reset?) operation, however only a message is printed as |
28 | the core w1 code doesn't make use of the information. Connecting | 26 | the core w1 code doesn't make use of the information. Connecting |
diff --git a/Documentation/w1/w1.netlink b/Documentation/w1/w1.netlink index f59a31965d50..927a52cc0519 100644 --- a/Documentation/w1/w1.netlink +++ b/Documentation/w1/w1.netlink | |||
@@ -5,8 +5,8 @@ Message types. | |||
5 | ============= | 5 | ============= |
6 | 6 | ||
7 | There are three types of messages between w1 core and userspace: | 7 | There are three types of messages between w1 core and userspace: |
8 | 1. Events. They are generated each time new master or slave device | 8 | 1. Events. They are generated each time a new master or slave device |
9 | found either due to automatic or requested search. | 9 | is found either due to automatic or requested search. |
10 | 2. Userspace commands. | 10 | 2. Userspace commands. |
11 | 3. Replies to userspace commands. | 11 | 3. Replies to userspace commands. |
12 | 12 | ||
@@ -131,7 +131,7 @@ of the w1_netlink_cmd structure and cn_msg.len will be equal to the sum | |||
131 | of the sizeof(struct w1_netlink_msg) and sizeof(struct w1_netlink_cmd). | 131 | of the sizeof(struct w1_netlink_msg) and sizeof(struct w1_netlink_cmd). |
132 | If reply is generated for master or root command (which do not have | 132 | If reply is generated for master or root command (which do not have |
133 | w1_netlink_cmd attached), reply will contain only cn_msg and w1_netlink_msg | 133 | w1_netlink_cmd attached), reply will contain only cn_msg and w1_netlink_msg |
134 | structires. | 134 | structures. |
135 | 135 | ||
136 | w1_netlink_msg.status field will carry positive error value | 136 | w1_netlink_msg.status field will carry positive error value |
137 | (EINVAL for example) or zero in case of success. | 137 | (EINVAL for example) or zero in case of success. |
@@ -160,7 +160,7 @@ procedure is started to select given device. | |||
160 | Then all requested in w1_netlink_msg operations are performed one by one. | 160 | Then all requested in w1_netlink_msg operations are performed one by one. |
161 | If command requires reply (like read command) it is sent on command completion. | 161 | If command requires reply (like read command) it is sent on command completion. |
162 | 162 | ||
163 | When all commands (w1_netlink_cmd) are processed muster device is unlocked | 163 | When all commands (w1_netlink_cmd) are processed master device is unlocked |
164 | and next w1_netlink_msg header processing started. | 164 | and next w1_netlink_msg header processing started. |
165 | 165 | ||
166 | 166 | ||
diff --git a/Documentation/watchdog/watchdog-parameters.txt b/Documentation/watchdog/watchdog-parameters.txt index f9492fed4104..692791cc674c 100644 --- a/Documentation/watchdog/watchdog-parameters.txt +++ b/Documentation/watchdog/watchdog-parameters.txt | |||
@@ -150,6 +150,8 @@ nowayout: Disable watchdog shutdown on close | |||
150 | ------------------------------------------------- | 150 | ------------------------------------------------- |
151 | it87_wdt: | 151 | it87_wdt: |
152 | nogameport: Forbid the activation of game port, default=0 | 152 | nogameport: Forbid the activation of game port, default=0 |
153 | nocir: Forbid the use of CIR (workaround for some buggy setups); set to 1 if | ||
154 | system resets despite watchdog daemon running, default=0 | ||
153 | exclusive: Watchdog exclusive device open, default=1 | 155 | exclusive: Watchdog exclusive device open, default=1 |
154 | timeout: Watchdog timeout in seconds, default=60 | 156 | timeout: Watchdog timeout in seconds, default=60 |
155 | testmode: Watchdog test mode (1 = no reboot), default=0 | 157 | testmode: Watchdog test mode (1 = no reboot), default=0 |
@@ -325,6 +327,11 @@ soft_noboot: Softdog action, set to 1 to ignore reboots, 0 to reboot | |||
325 | stmp3xxx_wdt: | 327 | stmp3xxx_wdt: |
326 | heartbeat: Watchdog heartbeat period in seconds from 1 to 4194304, default 19 | 328 | heartbeat: Watchdog heartbeat period in seconds from 1 to 4194304, default 19 |
327 | ------------------------------------------------- | 329 | ------------------------------------------------- |
330 | tegra_wdt: | ||
331 | heartbeat: Watchdog heartbeats in seconds. (default = 120) | ||
332 | nowayout: Watchdog cannot be stopped once started | ||
333 | (default=kernel config parameter) | ||
334 | ------------------------------------------------- | ||
328 | ts72xx_wdt: | 335 | ts72xx_wdt: |
329 | timeout: Watchdog timeout in seconds. (1 <= timeout <= 8, default=8) | 336 | timeout: Watchdog timeout in seconds. (1 <= timeout <= 8, default=8) |
330 | nowayout: Disable watchdog shutdown on close | 337 | nowayout: Disable watchdog shutdown on close |
diff --git a/Documentation/x86/boot.txt b/Documentation/x86/boot.txt index cb81741d3b0b..a75e3adaa39d 100644 --- a/Documentation/x86/boot.txt +++ b/Documentation/x86/boot.txt | |||
@@ -182,7 +182,7 @@ Offset Proto Name Meaning | |||
182 | 0226/1 2.02+(3 ext_loader_ver Extended boot loader version | 182 | 0226/1 2.02+(3 ext_loader_ver Extended boot loader version |
183 | 0227/1 2.02+(3 ext_loader_type Extended boot loader ID | 183 | 0227/1 2.02+(3 ext_loader_type Extended boot loader ID |
184 | 0228/4 2.02+ cmd_line_ptr 32-bit pointer to the kernel command line | 184 | 0228/4 2.02+ cmd_line_ptr 32-bit pointer to the kernel command line |
185 | 022C/4 2.03+ ramdisk_max Highest legal initrd address | 185 | 022C/4 2.03+ initrd_addr_max Highest legal initrd address |
186 | 0230/4 2.05+ kernel_alignment Physical addr alignment required for kernel | 186 | 0230/4 2.05+ kernel_alignment Physical addr alignment required for kernel |
187 | 0234/1 2.05+ relocatable_kernel Whether kernel is relocatable or not | 187 | 0234/1 2.05+ relocatable_kernel Whether kernel is relocatable or not |
188 | 0235/1 2.10+ min_alignment Minimum alignment, as a power of two | 188 | 0235/1 2.10+ min_alignment Minimum alignment, as a power of two |
@@ -534,7 +534,7 @@ Protocol: 2.02+ | |||
534 | zero, the kernel will assume that your boot loader does not support | 534 | zero, the kernel will assume that your boot loader does not support |
535 | the 2.02+ protocol. | 535 | the 2.02+ protocol. |
536 | 536 | ||
537 | Field name: ramdisk_max | 537 | Field name: initrd_addr_max |
538 | Type: read | 538 | Type: read |
539 | Offset/size: 0x22c/4 | 539 | Offset/size: 0x22c/4 |
540 | Protocol: 2.03+ | 540 | Protocol: 2.03+ |