Blame view

include/linux/acpi.h 36.1 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  /*
   * acpi.h - ACPI Interface
   *
   * Copyright (C) 2001 Paul Diefenbaugh <paul.s.diefenbaugh@intel.com>
   *
   * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License as published by
   * the Free Software Foundation; either version 2 of the License, or
   * (at your option) any later version.
   *
   * This program is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
   *
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
18
19
20
21
22
   * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   */
  
  #ifndef _LINUX_ACPI_H
  #define _LINUX_ACPI_H
5133375bb   Rafael J. Wysocki   ACPI / PM: Fix bu...
23
  #include <linux/errno.h>
443dea72d   Thomas Renninger   ACPI: Export acpi...
24
  #include <linux/ioport.h>	/* for struct resource */
90e978206   Jiang Liu   resources: Move s...
25
  #include <linux/resource_ext.h>
cf761af9e   Mika Westerberg   ACPI: Provide gen...
26
  #include <linux/device.h>
b31384fa5   Rafael J. Wysocki   Driver core: Unif...
27
  #include <linux/property.h>
bcbc2265f   Christoph Hellwig   acpi: always incl...
28
  #include <linux/uuid.h>
3f5948fa2   David Mosberger   [PATCH] Include <...
29

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
30
31
32
  #ifndef _LINUX
  #define _LINUX
  #endif
633adaba4   Lv Zheng   ACPICA: Linux: Al...
33
34
35
  #include <acpi/acpi.h>
  
  #ifdef	CONFIG_ACPI
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
36
37
  
  #include <linux/list.h>
29b71a1ca   Thomas Renninger   ACPI: autoload mo...
38
  #include <linux/mod_devicetable.h>
45fef5b88   Bjørn Mork   ACPI: add dynamic...
39
  #include <linux/dynamic_debug.h>
836d08301   Lv Zheng   ACPI / debugger: ...
40
41
  #include <linux/module.h>
  #include <linux/mutex.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
42

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
43
44
  #include <acpi/acpi_bus.h>
  #include <acpi/acpi_drivers.h>
762834e8b   Yasunori Goto   [PATCH] Unify pxm...
45
  #include <acpi/acpi_numa.h>
27d50c827   Lv Zheng   ACPI / i915: Fix ...
46
  #include <acpi/acpi_io.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
47
  #include <asm/acpi.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
48

7b1998116   Rafael J. Wysocki   ACPI / driver cor...
49
50
51
52
  static inline acpi_handle acpi_device_handle(struct acpi_device *adev)
  {
  	return adev ? adev->handle : NULL;
  }
3a7a2ab83   Rafael J. Wysocki   ACPI / property: ...
53
  #define ACPI_COMPANION(dev)		to_acpi_device_node((dev)->fwnode)
97badf873   Rafael J. Wysocki   device property: ...
54
55
  #define ACPI_COMPANION_SET(dev, adev)	set_primary_fwnode(dev, (adev) ? \
  	acpi_fwnode_handle(adev) : NULL)
7b1998116   Rafael J. Wysocki   ACPI / driver cor...
56
  #define ACPI_HANDLE(dev)		acpi_device_handle(ACPI_COMPANION(dev))
027b25b26   Lorenzo Pieralisi   ACPI: Add FWNODE_...
57
58
59
60
61
62
63
  static inline struct fwnode_handle *acpi_alloc_fwnode_static(void)
  {
  	struct fwnode_handle *fwnode;
  
  	fwnode = kzalloc(sizeof(struct fwnode_handle), GFP_KERNEL);
  	if (!fwnode)
  		return NULL;
db3e50f32   Sakari Ailus   device property: ...
64
  	fwnode->ops = &acpi_static_fwnode_ops;
027b25b26   Lorenzo Pieralisi   ACPI: Add FWNODE_...
65
66
67
68
69
70
  
  	return fwnode;
  }
  
  static inline void acpi_free_fwnode_static(struct fwnode_handle *fwnode)
  {
db3e50f32   Sakari Ailus   device property: ...
71
  	if (WARN_ON(!is_acpi_static_node(fwnode)))
027b25b26   Lorenzo Pieralisi   ACPI: Add FWNODE_...
72
73
74
75
  		return;
  
  	kfree(fwnode);
  }
26095a01d   Suthikulpanit, Suravee   ACPI / scan: Add ...
76
77
78
79
80
81
82
83
84
85
86
87
  /**
   * ACPI_DEVICE_CLASS - macro used to describe an ACPI device with
   * the PCI-defined class-code information
   *
   * @_cls : the class, subclass, prog-if triple for this device
   * @_msk : the class mask for this device
   *
   * This macro is used to create a struct acpi_device_id that matches a
   * specific PCI class. The .id and .driver_data fields will be left
   * initialized with the default value.
   */
  #define ACPI_DEVICE_CLASS(_cls, _msk)	.cls = (_cls), .cls_msk = (_msk),
ca5b74d26   Rafael J. Wysocki   ACPI: Introduce h...
88
89
  static inline bool has_acpi_companion(struct device *dev)
  {
3a7a2ab83   Rafael J. Wysocki   ACPI / property: ...
90
  	return is_acpi_device_node(dev->fwnode);
ca5b74d26   Rafael J. Wysocki   ACPI: Introduce h...
91
  }
9c5ad36d9   Rafael J. Wysocki   ACPI / bind: Rede...
92
93
94
95
96
  static inline void acpi_preset_companion(struct device *dev,
  					 struct acpi_device *parent, u64 addr)
  {
  	ACPI_COMPANION_SET(dev, acpi_find_child_device(parent, addr, NULL));
  }
45c42a7f5   Jarkko Nikula   ACPI: Provide acp...
97
98
99
100
  static inline const char *acpi_dev_name(struct acpi_device *adev)
  {
  	return dev_name(&adev->dev);
  }
daae45caf   Lukas Wunner   ACPI / bus: Make ...
101
  struct device *acpi_get_first_physical_node(struct acpi_device *adev);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
102
103
104
105
  enum acpi_irq_model_id {
  	ACPI_IRQ_MODEL_PIC = 0,
  	ACPI_IRQ_MODEL_IOAPIC,
  	ACPI_IRQ_MODEL_IOSAPIC,
3948ec940   John Keller   ACPI: Altix: ACPI...
106
  	ACPI_IRQ_MODEL_PLATFORM,
fbe61ec71   Hanjun Guo   ARM64 / ACPI: Int...
107
  	ACPI_IRQ_MODEL_GIC,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
108
109
110
111
  	ACPI_IRQ_MODEL_COUNT
  };
  
  extern enum acpi_irq_model_id	acpi_irq_model;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
112
113
114
115
116
117
118
119
  enum acpi_interrupt_id {
  	ACPI_INTERRUPT_PMI	= 1,
  	ACPI_INTERRUPT_INIT,
  	ACPI_INTERRUPT_CPEI,
  	ACPI_INTERRUPT_COUNT
  };
  
  #define	ACPI_SPACE_MEM		0
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
120
121
122
123
124
125
126
  enum acpi_address_range_id {
  	ACPI_ADDRESS_RANGE_MEMORY = 1,
  	ACPI_ADDRESS_RANGE_RESERVED = 2,
  	ACPI_ADDRESS_RANGE_ACPI = 3,
  	ACPI_ADDRESS_RANGE_NVS	= 4,
  	ACPI_ADDRESS_RANGE_COUNT
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
127

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
128
  /* Table Handlers */
b43e1065c   Lv Zheng   ACPICA: Cleanup t...
129
  typedef int (*acpi_tbl_table_handler)(struct acpi_table_header *table);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
130

b43e1065c   Lv Zheng   ACPICA: Cleanup t...
131
132
  typedef int (*acpi_tbl_entry_handler)(struct acpi_subtable_header *header,
  				      const unsigned long end);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
133

836d08301   Lv Zheng   ACPI / debugger: ...
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
  /* Debugger support */
  
  struct acpi_debugger_ops {
  	int (*create_thread)(acpi_osd_exec_callback function, void *context);
  	ssize_t (*write_log)(const char *msg);
  	ssize_t (*read_cmd)(char *buffer, size_t length);
  	int (*wait_command_ready)(bool single_step, char *buffer, size_t length);
  	int (*notify_command_complete)(void);
  };
  
  struct acpi_debugger {
  	const struct acpi_debugger_ops *ops;
  	struct module *owner;
  	struct mutex lock;
  };
  
  #ifdef CONFIG_ACPI_DEBUGGER
  int __init acpi_debugger_init(void);
  int acpi_register_debugger(struct module *owner,
  			   const struct acpi_debugger_ops *ops);
  void acpi_unregister_debugger(const struct acpi_debugger_ops *ops);
  int acpi_debugger_create_thread(acpi_osd_exec_callback function, void *context);
  ssize_t acpi_debugger_write_log(const char *msg);
  ssize_t acpi_debugger_read_cmd(char *buffer, size_t buffer_length);
  int acpi_debugger_wait_command_ready(void);
  int acpi_debugger_notify_command_complete(void);
  #else
  static inline int acpi_debugger_init(void)
  {
  	return -ENODEV;
  }
  
  static inline int acpi_register_debugger(struct module *owner,
  					 const struct acpi_debugger_ops *ops)
  {
  	return -ENODEV;
  }
  
  static inline void acpi_unregister_debugger(const struct acpi_debugger_ops *ops)
  {
  }
  
  static inline int acpi_debugger_create_thread(acpi_osd_exec_callback function,
  					      void *context)
  {
  	return -ENODEV;
  }
  
  static inline int acpi_debugger_write_log(const char *msg)
  {
  	return -ENODEV;
  }
  
  static inline int acpi_debugger_read_cmd(char *buffer, u32 buffer_length)
  {
  	return -ENODEV;
  }
  
  static inline int acpi_debugger_wait_command_ready(void)
  {
  	return -ENODEV;
  }
  
  static inline int acpi_debugger_notify_command_complete(void)
  {
  	return -ENODEV;
  }
  #endif
328281b1c   Hanjun Guo   ACPI: Move BAD_MA...
202
203
204
  #define BAD_MADT_ENTRY(entry, end) (					    \
  		(!entry) || (unsigned long)entry + sizeof(*entry) > end ||  \
  		((struct acpi_subtable_header *)entry)->length < sizeof(*entry))
9b3fedde2   Lukasz Anaczkowski   ACPI / tables: Ad...
205
206
207
208
209
  struct acpi_subtable_proc {
  	int id;
  	acpi_tbl_entry_handler handler;
  	int count;
  };
6c9a58e84   Andy Shevchenko   ACPI / boot: Corr...
210
211
  void __iomem *__acpi_map_table(unsigned long phys, unsigned long size);
  void __acpi_unmap_table(void __iomem *map, unsigned long size);
cbf9bd603   Yinghai Lu   acpi: get boot_cp...
212
  int early_acpi_boot_init(void);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
213
  int acpi_boot_init (void);
8558e3943   Len Brown   x86, ACPI: delete...
214
  void acpi_boot_table_init (void);
3c999f142   Yinghai Lu   x86: check comman...
215
  int acpi_mps_check (void);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
216
217
218
  int acpi_numa_init (void);
  
  int acpi_table_init (void);
b43e1065c   Lv Zheng   ACPICA: Cleanup t...
219
  int acpi_table_parse(char *id, acpi_tbl_table_handler handler);
6eb87fed5   Len Brown   ACPI: acpi_table_...
220
  int __init acpi_table_parse_entries(char *id, unsigned long table_size,
9b3fedde2   Lukasz Anaczkowski   ACPI / tables: Ad...
221
222
223
  			      int entry_id,
  			      acpi_tbl_entry_handler handler,
  			      unsigned int max_entries);
9b3fedde2   Lukasz Anaczkowski   ACPI / tables: Ad...
224
225
226
  int __init acpi_table_parse_entries_array(char *id, unsigned long table_size,
  			      struct acpi_subtable_proc *proc, int proc_num,
  			      unsigned int max_entries);
b43e1065c   Lv Zheng   ACPICA: Cleanup t...
227
228
229
  int acpi_table_parse_madt(enum acpi_madt_type id,
  			  acpi_tbl_entry_handler handler,
  			  unsigned int max_entries);
ceb6c4683   Alexey Starikovskiy   ACPICA: Remove du...
230
  int acpi_parse_mcfg (struct acpi_table_header *header);
5f3b1a8b6   Alexey Starikovskiy   ACPICA: Remove du...
231
  void acpi_table_print_madt_entry (struct acpi_subtable_header *madt);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
232

4bac6fa73   Hanjun Guo   ACPI / NUMA: Enab...
233
  /* the following numa functions are architecture-dependent */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
234
  void acpi_numa_slit_init (struct acpi_table_slit *slit);
4bac6fa73   Hanjun Guo   ACPI / NUMA: Enab...
235
236
  
  #if defined(CONFIG_X86) || defined(CONFIG_IA64)
15a58ed12   Alexey Starikovskiy   ACPICA: Remove du...
237
  void acpi_numa_processor_affinity_init (struct acpi_srat_cpu_affinity *pa);
4bac6fa73   Hanjun Guo   ACPI / NUMA: Enab...
238
239
240
241
  #else
  static inline void
  acpi_numa_processor_affinity_init(struct acpi_srat_cpu_affinity *pa) { }
  #endif
7237d3de7   Suresh Siddha   x86, ACPI: add su...
242
  void acpi_numa_x2apic_affinity_init(struct acpi_srat_x2apic_cpu_affinity *pa);
4bac6fa73   Hanjun Guo   ACPI / NUMA: Enab...
243
244
245
246
247
248
249
  
  #ifdef CONFIG_ARM64
  void acpi_numa_gicc_affinity_init(struct acpi_srat_gicc_affinity *pa);
  #else
  static inline void
  acpi_numa_gicc_affinity_init(struct acpi_srat_gicc_affinity *pa) { }
  #endif
095adbb64   Thomas Renninger   ACPI: Only count ...
250
  int acpi_numa_memory_affinity_init (struct acpi_srat_mem_affinity *ma);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
251

828aef376   Catalin Marinas   ACPI / processor:...
252
253
254
255
  #ifndef PHYS_CPUID_INVALID
  typedef u32 phys_cpuid_t;
  #define PHYS_CPUID_INVALID (phys_cpuid_t)(-1)
  #endif
25956b661   Hanjun Guo   ACPI / processor:...
256
257
258
259
  static inline bool invalid_logical_cpuid(u32 cpuid)
  {
  	return (int)cpuid < 0;
  }
ddcc18f5b   Hanjun Guo   ACPI / processor:...
260
261
262
263
  static inline bool invalid_phys_cpuid(phys_cpuid_t phys_id)
  {
  	return phys_id == PHYS_CPUID_INVALID;
  }
fd74da217   Dou Liyang   acpi: Validate pr...
264
  /* Validate the processor object's proc_id */
a77d6cd96   Dou Liyang   acpi/processor: C...
265
  bool acpi_duplicate_processor_id(int proc_id);
fd74da217   Dou Liyang   acpi: Validate pr...
266

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
267
268
  #ifdef CONFIG_ACPI_HOTPLUG_CPU
  /* Arch dependent functions for cpu hotplug support */
febf24074   Vitaly Kuznetsov   x86/ACPI: keep x8...
269
270
  int acpi_map_cpu(acpi_handle handle, phys_cpuid_t physid, u32 acpi_id,
  		 int *pcpu);
d02dc27db   Hanjun Guo   ACPI / processor:...
271
  int acpi_unmap_cpu(int cpu);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
272
  #endif /* CONFIG_ACPI_HOTPLUG_CPU */
ecf5636dc   Yinghai Lu   ACPI: Add interfa...
273
274
275
  #ifdef CONFIG_ACPI_HOTPLUG_IOAPIC
  int acpi_get_ioapic_id(acpi_handle handle, u32 gsi_base, u64 *phys_addr);
  #endif
b1bb248a5   Kenji Kaneshige   [PATCH] ACPI base...
276
277
  int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base);
  int acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base);
e89900c9a   Jiang Liu   x86, irq: Introdu...
278
  int acpi_ioapic_registered(acpi_handle handle, u32 gsi_base);
5229e87d5   Len Brown   ACPI: create /sys...
279
  void acpi_irq_stats_init(void);
5229e87d5   Len Brown   ACPI: create /sys...
280
  extern u32 acpi_irq_handled;
88bea188b   Len Brown   ACPI: add /sys/fi...
281
  extern u32 acpi_irq_not_handled;
49e4b8433   Chen Yu   ACPI: Use correct...
282
  extern unsigned int acpi_sci_irq;
137371819   Chen Yu   ACPI / PM: Introd...
283
  extern bool acpi_no_s5;
49e4b8433   Chen Yu   ACPI: Use correct...
284
285
286
287
288
  #define INVALID_ACPI_IRQ	((unsigned)-1)
  static inline bool acpi_sci_irq_valid(void)
  {
  	return acpi_sci_irq != INVALID_ACPI_IRQ;
  }
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
289

c255d844d   Pavel Machek   [PATCH] suspend-t...
290
  extern int sbf_port;
77afcf78a   Pavel Machek   PM: Integrate bee...
291
  extern unsigned long acpi_realmode_flags;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
292

a2f809b08   Yinghai Lu   irq: change ACPI ...
293
  int acpi_register_gsi (struct device *dev, u32 gsi, int triggering, int polarity);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
294
  int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
2c2df8418   Eric W. Biederman   x86, acpi/irq: In...
295
  int acpi_isa_irq_to_gsi (unsigned isa_irq, u32 *gsi);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
296

2bc6eba4a   Marc Zyngier   acpi/gsi: Add acp...
297
298
  void acpi_set_irq_model(enum acpi_irq_model_id model,
  			struct fwnode_handle *fwnode);
61fd47e0c   Shaohua Li   ACPI: fix two IRQ...
299
  #ifdef CONFIG_X86_IO_APIC
9a0a91bb5   Eric W. Biederman   x86, acpi/irq: Te...
300
  extern int acpi_get_override_irq(u32 gsi, int *trigger, int *polarity);
61fd47e0c   Shaohua Li   ACPI: fix two IRQ...
301
  #else
9a0a91bb5   Eric W. Biederman   x86, acpi/irq: Te...
302
  #define acpi_get_override_irq(gsi, trigger, polarity) (-1)
61fd47e0c   Shaohua Li   ACPI: fix two IRQ...
303
  #endif
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
304
305
306
307
308
  /*
   * This function undoes the effect of one call to acpi_register_gsi().
   * If this matches the last registration, any IRQ resources for gsi
   * are freed.
   */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
309
  void acpi_unregister_gsi (u32 gsi);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
310

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
311
312
313
  struct pci_dev;
  
  int acpi_pci_irq_enable (struct pci_dev *dev);
c9c3e457d   David Shaohua Li   [ACPI] PNPACPI vs...
314
  void acpi_penalize_isa_irq(int irq, int active);
5ebc76035   Jiang Liu   ACPI, PCI, irq: D...
315
  bool acpi_isa_irq_available(int irq);
f1caa61df   Sinan Kaya   ACPI/PCI: pci_lin...
316
  void acpi_penalize_sci_irq(int irq, int trigger, int polarity);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
317
  void acpi_pci_irq_disable (struct pci_dev *dev);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
318

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
319
320
  extern int ec_read(u8 addr, u8 *val);
  extern int ec_write(u8 addr, u8 val);
d7a76e4cb   Lennart Poettering   ACPI: consolidate...
321
322
  extern int ec_transaction(u8 command,
                            const u8 *wdata, unsigned wdata_len,
1cb7b1e0d   Thomas Renninger   ACPI EC: remove d...
323
                            u8 *rdata, unsigned rdata_len);
3e2abc5a3   Seth Forshee   ACPI: EC: Add ec_...
324
  extern acpi_handle ec_get_handle(void);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
325

eec15edbb   Zhang Rui   ACPI / PNP: use d...
326
  extern bool acpi_is_pnp_device(struct acpi_device *);
bff431e49   Carlos Corbacho   ACPI: WMI: Add AC...
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
  #if defined(CONFIG_ACPI_WMI) || defined(CONFIG_ACPI_WMI_MODULE)
  
  typedef void (*wmi_notify_handler) (u32 value, void *context);
  
  extern acpi_status wmi_evaluate_method(const char *guid, u8 instance,
  					u32 method_id,
  					const struct acpi_buffer *in,
  					struct acpi_buffer *out);
  extern acpi_status wmi_query_block(const char *guid, u8 instance,
  					struct acpi_buffer *out);
  extern acpi_status wmi_set_block(const char *guid, u8 instance,
  					const struct acpi_buffer *in);
  extern acpi_status wmi_install_notify_handler(const char *guid,
  					wmi_notify_handler handler, void *data);
  extern acpi_status wmi_remove_notify_handler(const char *guid);
  extern acpi_status wmi_get_event_data(u32 event, struct acpi_buffer *out);
  extern bool wmi_has_guid(const char *guid);
  
  #endif	/* CONFIG_ACPI_WMI */
c3d6de698   Thomas Renninger   ACPI video: if no...
346
347
348
349
350
351
352
353
354
355
356
357
  #define ACPI_VIDEO_OUTPUT_SWITCHING			0x0001
  #define ACPI_VIDEO_DEVICE_POSTING			0x0002
  #define ACPI_VIDEO_ROM_AVAILABLE			0x0004
  #define ACPI_VIDEO_BACKLIGHT				0x0008
  #define ACPI_VIDEO_BACKLIGHT_FORCE_VENDOR		0x0010
  #define ACPI_VIDEO_BACKLIGHT_FORCE_VIDEO		0x0020
  #define ACPI_VIDEO_OUTPUT_SWITCHING_FORCE_VENDOR	0x0040
  #define ACPI_VIDEO_OUTPUT_SWITCHING_FORCE_VIDEO		0x0080
  #define ACPI_VIDEO_BACKLIGHT_DMI_VENDOR			0x0100
  #define ACPI_VIDEO_BACKLIGHT_DMI_VIDEO			0x0200
  #define ACPI_VIDEO_OUTPUT_SWITCHING_DMI_VENDOR		0x0400
  #define ACPI_VIDEO_OUTPUT_SWITCHING_DMI_VIDEO		0x0800
14ca7a47d   Hans de Goede   acpi-video-detect...
358
  extern char acpi_video_backlight_string[];
d4e1a692e   Toshi Kani   ACPI: Remove acpi...
359
  extern long acpi_is_video_device(acpi_handle handle);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
360
  extern int acpi_blacklisted(void);
d90aa92c0   Lin Ming   acpi: fix _OSI st...
361
  extern void acpi_osi_setup(char *str);
a87878baf   Hans de Goede   acpi-video-detect...
362
  extern bool acpi_osi_is_win8(void);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
363

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
364
  #ifdef CONFIG_ACPI_NUMA
99759869f   Toshi Kani   acpi: Add acpi_ma...
365
  int acpi_map_pxm_to_online_node(int pxm);
486c79b50   Bjorn Helgaas   ACPI / numa: Fix ...
366
  int acpi_get_node(acpi_handle handle);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
367
  #else
99759869f   Toshi Kani   acpi: Add acpi_ma...
368
369
370
371
  static inline int acpi_map_pxm_to_online_node(int pxm)
  {
  	return 0;
  }
486c79b50   Bjorn Helgaas   ACPI / numa: Fix ...
372
  static inline int acpi_get_node(acpi_handle handle)
1e3590e2e   Yasunori Goto   [PATCH] pgdat all...
373
374
375
  {
  	return 0;
  }
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
376
  #endif
1e3590e2e   Yasunori Goto   [PATCH] pgdat all...
377
  extern int acpi_paddr_to_node(u64 start_addr, u64 size);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
378
379
  
  extern int pnpacpi_disabled;
3484d7981   David Rientjes   x86_64: fake pxm-...
380
  #define PXM_INVAL	(-1)
3484d7981   David Rientjes   x86_64: fake pxm-...
381

046d9ce68   Rafael J. Wysocki   ACPI: Move device...
382
383
384
  bool acpi_dev_resource_memory(struct acpi_resource *ares, struct resource *res);
  bool acpi_dev_resource_io(struct acpi_resource *ares, struct resource *res);
  bool acpi_dev_resource_address_space(struct acpi_resource *ares,
a49170b55   Jiang Liu   ACPI: Return tran...
385
  				     struct resource_win *win);
046d9ce68   Rafael J. Wysocki   ACPI: Move device...
386
  bool acpi_dev_resource_ext_address_space(struct acpi_resource *ares,
a49170b55   Jiang Liu   ACPI: Return tran...
387
  					 struct resource_win *win);
046d9ce68   Rafael J. Wysocki   ACPI: Move device...
388
  unsigned long acpi_dev_irq_flags(u8 triggering, u8 polarity, u8 shareable);
55a93417c   Christophe RICARD   ACPI: Rename acpi...
389
  unsigned int acpi_dev_get_irq_type(int triggering, int polarity);
046d9ce68   Rafael J. Wysocki   ACPI: Move device...
390
391
  bool acpi_dev_resource_interrupt(struct acpi_resource *ares, int index,
  				 struct resource *res);
8e345c991   Rafael J. Wysocki   ACPI: Centralized...
392
393
394
395
  void acpi_dev_free_resource_list(struct list_head *list);
  int acpi_dev_get_resources(struct acpi_device *adev, struct list_head *list,
  			   int (*preproc)(struct acpi_resource *, void *),
  			   void *preproc_data);
c04ac679c   Lorenzo Pieralisi   ACPI: Introduce D...
396
397
  int acpi_dev_get_dma_resources(struct acpi_device *adev,
  			       struct list_head *list);
62d1141ff   Jiang Liu   ACPI: Introduce h...
398
399
400
401
402
403
404
405
  int acpi_dev_filter_resource_type(struct acpi_resource *ares,
  				  unsigned long types);
  
  static inline int acpi_dev_filter_resource_type_cb(struct acpi_resource *ares,
  						   void *arg)
  {
  	return acpi_dev_filter_resource_type(ares, (unsigned long)arg);
  }
8e345c991   Rafael J. Wysocki   ACPI: Centralized...
406

00710984e   Bjorn Helgaas   ACPI: Add acpi_re...
407
  struct acpi_device *acpi_resource_consumer(struct resource *res);
876fba43c   Jean Delvare   ACPI: add const t...
408
  int acpi_check_resource_conflict(const struct resource *res);
443dea72d   Thomas Renninger   ACPI: Export acpi...
409

df92e6959   Thomas Renninger   ACPI: track opreg...
410
411
  int acpi_check_region(resource_size_t start, resource_size_t n,
  		      const char *name);
df92e6959   Thomas Renninger   ACPI: track opreg...
412

f2e9a3855   Heikki Krogerus   acpi: Add helper ...
413
414
  acpi_status acpi_release_memory(acpi_handle handle, struct resource *res,
  				u32 level);
70dd6beac   Jean Delvare   hwmon: (asus_atk0...
415
  int acpi_resources_are_enforced(void);
9743fdea9   Yuanhan Liu   ACPI: move acpi_n...
416
  #ifdef CONFIG_HIBERNATION
bdfe6b7c6   Shaohua Li   pm: acpi hibernat...
417
  void __init acpi_no_s4_hw_signature(void);
9743fdea9   Yuanhan Liu   ACPI: move acpi_n...
418
419
420
  #endif
  
  #ifdef CONFIG_PM_SLEEP
d8f3de0d2   Rafael J. Wysocki   Suspend-related p...
421
  void __init acpi_old_suspend_ordering(void);
72ad5d77f   Rafael J. Wysocki   ACPI / Sleep: All...
422
  void __init acpi_nvs_nosave(void);
1bad2f19f   Kristen Carlson Accardi   ACPI / Sleep: add...
423
  void __init acpi_nvs_nosave_s3(void);
d8f3de0d2   Rafael J. Wysocki   Suspend-related p...
424
  #endif /* CONFIG_PM_SLEEP */
9f5404d8e   Kenji Kaneshige   PCI/ACPI: rename ...
425

70023de88   Shaohua Li   ACPI: Add a gener...
426
  struct acpi_osc_context {
c86784736   Bjorn Helgaas   ACPI: Tidy acpi_r...
427
  	char *uuid_str;			/* UUID string */
70023de88   Shaohua Li   ACPI: Add a gener...
428
  	int rev;
c86784736   Bjorn Helgaas   ACPI: Tidy acpi_r...
429
430
  	struct acpi_buffer cap;		/* list of DWORD capabilities */
  	struct acpi_buffer ret;		/* free by caller if success */
70023de88   Shaohua Li   ACPI: Add a gener...
431
  };
70023de88   Shaohua Li   ACPI: Add a gener...
432
  acpi_status acpi_run_osc(acpi_handle handle, struct acpi_osc_context *context);
b938a229c   Bjorn Helgaas   ACPI: Rename OSC_...
433
434
435
436
  /* Indexes into _OSC Capabilities Buffer (DWORDs 2 & 3 are device-specific) */
  #define OSC_QUERY_DWORD				0	/* DWORD 1 */
  #define OSC_SUPPORT_DWORD			1	/* DWORD 2 */
  #define OSC_CONTROL_DWORD			2	/* DWORD 3 */
9f5404d8e   Kenji Kaneshige   PCI/ACPI: rename ...
437

dedf1e4df   Bjorn Helgaas   ACPI: Write _OSC ...
438
439
440
441
442
443
  /* _OSC Capabilities DWORD 1: Query/Control and Error Returns (generic) */
  #define OSC_QUERY_ENABLE			0x00000001  /* input */
  #define OSC_REQUEST_ERROR			0x00000002  /* return */
  #define OSC_INVALID_UUID_ERROR			0x00000004  /* return */
  #define OSC_INVALID_REVISION_ERROR		0x00000008  /* return */
  #define OSC_CAPABILITIES_MASK_ERROR		0x00000010  /* return */
9f5404d8e   Kenji Kaneshige   PCI/ACPI: rename ...
444

dedf1e4df   Bjorn Helgaas   ACPI: Write _OSC ...
445
446
447
448
449
450
451
  /* Platform-Wide Capabilities _OSC: Capabilities DWORD 2: Support Field */
  #define OSC_SB_PAD_SUPPORT			0x00000001
  #define OSC_SB_PPC_OST_SUPPORT			0x00000002
  #define OSC_SB_PR3_SUPPORT			0x00000004
  #define OSC_SB_HOTPLUG_OST_SUPPORT		0x00000008
  #define OSC_SB_APEI_SUPPORT			0x00000010
  #define OSC_SB_CPC_SUPPORT			0x00000020
a36a7fecf   Sudeep Holla   ACPI / processor_...
452
453
454
  #define OSC_SB_CPCV2_SUPPORT			0x00000040
  #define OSC_SB_PCLPI_SUPPORT			0x00000080
  #define OSC_SB_OSLPI_SUPPORT			0x00000100
8b533a0ee   Srinivas Pandruvada   acpi/bus: Set _OS...
455
  #define OSC_SB_CPC_DIVERSE_HIGH_SUPPORT		0x00001000
3563ff964   Shaohua Li   ACPI: Add platfor...
456

eccddd32c   Huang Ying   ACPI, APEI, Add A...
457
  extern bool osc_sb_apei_support_acked;
a36a7fecf   Sudeep Holla   ACPI / processor_...
458
  extern bool osc_pc_lpi_support_confirmed;
eccddd32c   Huang Ying   ACPI, APEI, Add A...
459

dedf1e4df   Bjorn Helgaas   ACPI: Write _OSC ...
460
  /* PCI Host Bridge _OSC: Capabilities DWORD 2: Support Field */
7dab9ef4f   Bjorn Helgaas   PCI/ACPI: Name _O...
461
462
463
  #define OSC_PCI_EXT_CONFIG_SUPPORT		0x00000001
  #define OSC_PCI_ASPM_SUPPORT			0x00000002
  #define OSC_PCI_CLOCK_PM_SUPPORT		0x00000004
dedf1e4df   Bjorn Helgaas   ACPI: Write _OSC ...
464
  #define OSC_PCI_SEGMENT_GROUPS_SUPPORT		0x00000008
7dab9ef4f   Bjorn Helgaas   PCI/ACPI: Name _O...
465
  #define OSC_PCI_MSI_SUPPORT			0x00000010
dedf1e4df   Bjorn Helgaas   ACPI: Write _OSC ...
466
467
468
469
  #define OSC_PCI_SUPPORT_MASKS			0x0000001f
  
  /* PCI Host Bridge _OSC: Capabilities DWORD 3: Control Field */
  #define OSC_PCI_EXPRESS_NATIVE_HP_CONTROL	0x00000001
7dab9ef4f   Bjorn Helgaas   PCI/ACPI: Name _O...
470
  #define OSC_PCI_SHPC_NATIVE_HP_CONTROL		0x00000002
dedf1e4df   Bjorn Helgaas   ACPI: Write _OSC ...
471
472
  #define OSC_PCI_EXPRESS_PME_CONTROL		0x00000004
  #define OSC_PCI_EXPRESS_AER_CONTROL		0x00000008
7dab9ef4f   Bjorn Helgaas   PCI/ACPI: Name _O...
473
  #define OSC_PCI_EXPRESS_CAPABILITY_CONTROL	0x00000010
335b15097   Bjorn Helgaas   ACPI: Write OSC_P...
474
  #define OSC_PCI_CONTROL_MASKS			0x0000001f
d90116ea3   Rafael J. Wysocki   PCI/ACPI: Make ac...
475

5d98e61d3   Lan Tianyu   I2C/ACPI: Add i2c...
476
477
478
479
480
481
482
483
484
485
  #define ACPI_GSB_ACCESS_ATTRIB_QUICK		0x00000002
  #define ACPI_GSB_ACCESS_ATTRIB_SEND_RCV         0x00000004
  #define ACPI_GSB_ACCESS_ATTRIB_BYTE		0x00000006
  #define ACPI_GSB_ACCESS_ATTRIB_WORD		0x00000008
  #define ACPI_GSB_ACCESS_ATTRIB_BLOCK		0x0000000A
  #define ACPI_GSB_ACCESS_ATTRIB_MULTIBYTE	0x0000000B
  #define ACPI_GSB_ACCESS_ATTRIB_WORD_CALL	0x0000000C
  #define ACPI_GSB_ACCESS_ATTRIB_BLOCK_CALL	0x0000000D
  #define ACPI_GSB_ACCESS_ATTRIB_RAW_BYTES	0x0000000E
  #define ACPI_GSB_ACCESS_ATTRIB_RAW_PROCESS	0x0000000F
75fb60f26   Rafael J. Wysocki   ACPI/PCI: Negotia...
486
487
  extern acpi_status acpi_pci_osc_control_set(acpi_handle handle,
  					     u32 *mask, u32 req);
275c58d77   Toshi Kani   ACPI: Add an inte...
488
489
490
  
  /* Enable _OST when all relevant hotplug operations are enabled */
  #if defined(CONFIG_ACPI_HOTPLUG_CPU) &&			\
08f502c1c   Toshi Kani   ACPI: Do not use ...
491
  	defined(CONFIG_ACPI_HOTPLUG_MEMORY) &&		\
64fd7401c   Toshi Kani   ACPI: Remove the ...
492
  	defined(CONFIG_ACPI_CONTAINER)
275c58d77   Toshi Kani   ACPI: Add an inte...
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
  #define ACPI_HOTPLUG_OST
  #endif
  
  /* _OST Source Event Code (OSPM Action) */
  #define ACPI_OST_EC_OSPM_SHUTDOWN		0x100
  #define ACPI_OST_EC_OSPM_EJECT			0x103
  #define ACPI_OST_EC_OSPM_INSERTION		0x200
  
  /* _OST General Processing Status Code */
  #define ACPI_OST_SC_SUCCESS			0x0
  #define ACPI_OST_SC_NON_SPECIFIC_FAILURE	0x1
  #define ACPI_OST_SC_UNRECOGNIZED_NOTIFY		0x2
  
  /* _OST OS Shutdown Processing (0x100) Status Code */
  #define ACPI_OST_SC_OS_SHUTDOWN_DENIED		0x80
  #define ACPI_OST_SC_OS_SHUTDOWN_IN_PROGRESS	0x81
  #define ACPI_OST_SC_OS_SHUTDOWN_COMPLETED	0x82
  #define ACPI_OST_SC_OS_SHUTDOWN_NOT_SUPPORTED	0x83
  
  /* _OST Ejection Request (0x3, 0x103) Status Code */
  #define ACPI_OST_SC_EJECT_NOT_SUPPORTED		0x80
  #define ACPI_OST_SC_DEVICE_IN_USE		0x81
  #define ACPI_OST_SC_DEVICE_BUSY			0x82
  #define ACPI_OST_SC_EJECT_DEPENDENCY_BUSY	0x83
  #define ACPI_OST_SC_EJECT_IN_PROGRESS		0x84
  
  /* _OST Insertion Request (0x200) Status Code */
  #define ACPI_OST_SC_INSERT_IN_PROGRESS		0x80
  #define ACPI_OST_SC_DRIVER_LOAD_FAILURE		0x81
  #define ACPI_OST_SC_INSERT_NOT_SUPPORTED	0x82
5aa5911a0   Toshi Kani   ACPI / blacklist:...
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
  enum acpi_predicate {
  	all_versions,
  	less_than_or_equal,
  	equal,
  	greater_than_or_equal,
  };
  
  /* Table must be terminted by a NULL entry */
  struct acpi_platform_list {
  	char	oem_id[ACPI_OEM_ID_SIZE+1];
  	char	oem_table_id[ACPI_OEM_TABLE_ID_SIZE+1];
  	u32	oem_revision;
  	char	*table;
  	enum acpi_predicate pred;
  	char	*reason;
  	u32	data;
  };
  int acpi_match_platform_list(const struct acpi_platform_list *plat);
4a7a16dc0   Len Brown   ACPI: move declar...
541
  extern void acpi_early_init(void);
b064a8fa7   Rafael J. Wysocki   ACPI / init: Swit...
542
  extern void acpi_subsystem_init(void);
4a7a16dc0   Len Brown   ACPI: move declar...
543

b54ac6d2a   Huang Ying   ACPI, Record ACPI...
544
545
546
547
  extern int acpi_nvs_register(__u64 start, __u64 size);
  
  extern int acpi_nvs_for_each_region(int (*func)(__u64, __u64, void *),
  				    void *data);
cf761af9e   Mika Westerberg   ACPI: Provide gen...
548
549
  const struct acpi_device_id *acpi_match_device(const struct acpi_device_id *ids,
  					       const struct device *dev);
733e62513   Mika Westerberg   ACPI: Allow drive...
550
551
  extern bool acpi_driver_match_device(struct device *dev,
  				     const struct device_driver *drv);
6eb2451f7   Zhang Rui   ACPI: add module ...
552
553
  int acpi_device_uevent_modalias(struct device *, struct kobj_uevent_env *);
  int acpi_device_modalias(struct device *, char *, int);
40e7fcb19   Lan Tianyu   ACPI: Add _DEP su...
554
  void acpi_walk_dep_device_list(acpi_handle handle);
6eb2451f7   Zhang Rui   ACPI: add module ...
555

1571875be   Heikki Krogerus   ACPI / platform: ...
556
557
  struct platform_device *acpi_create_platform_device(struct acpi_device *,
  						    struct property_entry *);
cf761af9e   Mika Westerberg   ACPI: Provide gen...
558
  #define ACPI_PTR(_ptr)	(_ptr)
10c7e20b2   Octavian Purdila   ACPI / scan: fix ...
559
560
561
562
563
564
565
566
567
  static inline void acpi_device_set_enumerated(struct acpi_device *adev)
  {
  	adev->flags.visited = true;
  }
  
  static inline void acpi_device_clear_enumerated(struct acpi_device *adev)
  {
  	adev->flags.visited = false;
  }
68bdb6773   Octavian Purdila   ACPI: add support...
568
569
570
571
572
573
574
  enum acpi_reconfig_event  {
  	ACPI_RECONFIG_DEVICE_ADD = 0,
  	ACPI_RECONFIG_DEVICE_REMOVE,
  };
  
  int acpi_reconfig_notifier_register(struct notifier_block *nb);
  int acpi_reconfig_notifier_unregister(struct notifier_block *nb);
5f1ae4ebe   Fu Wei   acpi/arm64: Add G...
575
576
577
578
  #ifdef CONFIG_ACPI_GTDT
  int acpi_gtdt_init(struct acpi_table_header *table, int *platform_timer_count);
  int acpi_gtdt_map_ppi(int type);
  bool acpi_gtdt_c3stop(int type);
a712c3ed9   Fu Wei   acpi/arm64: Add m...
579
  int acpi_arch_timer_mem_init(struct arch_timer_mem *timer_mem, int *timer_count);
5f1ae4ebe   Fu Wei   acpi/arm64: Add G...
580
  #endif
e55a5999f   Feng Tang   ACPI: Handle CONF...
581
582
583
  #else	/* !CONFIG_ACPI */
  
  #define acpi_disabled 1
7b1998116   Rafael J. Wysocki   ACPI / driver cor...
584
585
586
  #define ACPI_COMPANION(dev)		(NULL)
  #define ACPI_COMPANION_SET(dev, adev)	do { } while (0)
  #define ACPI_HANDLE(dev)		(NULL)
26095a01d   Suthikulpanit, Suravee   ACPI / scan: Add ...
587
  #define ACPI_DEVICE_CLASS(_cls, _msk)	.cls = (0), .cls_msk = (0),
7b1998116   Rafael J. Wysocki   ACPI / driver cor...
588

8a0662d9e   Rafael J. Wysocki   Driver core: Unif...
589
  struct fwnode_handle;
6eb17e0df   Kejian Yan   ACPI: bus: add st...
590
591
592
593
  static inline bool acpi_dev_found(const char *hid)
  {
  	return false;
  }
8661423ee   Hans de Goede   ACPI / utils: Add...
594
595
596
597
  static inline bool acpi_dev_present(const char *hid, const char *uid, s64 hrv)
  {
  	return false;
  }
8a0662d9e   Rafael J. Wysocki   Driver core: Unif...
598
599
600
601
  static inline bool is_acpi_node(struct fwnode_handle *fwnode)
  {
  	return false;
  }
3a7a2ab83   Rafael J. Wysocki   ACPI / property: ...
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
  static inline bool is_acpi_device_node(struct fwnode_handle *fwnode)
  {
  	return false;
  }
  
  static inline struct acpi_device *to_acpi_device_node(struct fwnode_handle *fwnode)
  {
  	return NULL;
  }
  
  static inline bool is_acpi_data_node(struct fwnode_handle *fwnode)
  {
  	return false;
  }
  
  static inline struct acpi_data_node *to_acpi_data_node(struct fwnode_handle *fwnode)
8a0662d9e   Rafael J. Wysocki   Driver core: Unif...
618
619
620
  {
  	return NULL;
  }
613e97218   Adam Thomson   device property: ...
621
622
623
624
625
  static inline bool acpi_data_node_match(struct fwnode_handle *fwnode,
  					const char *name)
  {
  	return false;
  }
8a0662d9e   Rafael J. Wysocki   Driver core: Unif...
626
627
628
629
  static inline struct fwnode_handle *acpi_fwnode_handle(struct acpi_device *adev)
  {
  	return NULL;
  }
ca5b74d26   Rafael J. Wysocki   ACPI: Introduce h...
630
631
632
633
  static inline bool has_acpi_companion(struct device *dev)
  {
  	return false;
  }
c0e5c4450   Dustin Byford   acpi: add acpi_pr...
634
635
636
637
  static inline void acpi_preset_companion(struct device *dev,
  					 struct acpi_device *parent, u64 addr)
  {
  }
45c42a7f5   Jarkko Nikula   ACPI: Provide acp...
638
639
640
641
  static inline const char *acpi_dev_name(struct acpi_device *adev)
  {
  	return NULL;
  }
daae45caf   Lukas Wunner   ACPI / bus: Make ...
642
643
644
645
  static inline struct device *acpi_get_first_physical_node(struct acpi_device *adev)
  {
  	return NULL;
  }
4a7a16dc0   Len Brown   ACPI: move declar...
646
  static inline void acpi_early_init(void) { }
b064a8fa7   Rafael J. Wysocki   ACPI / init: Swit...
647
  static inline void acpi_subsystem_init(void) { }
53de49f52   Andrew Morton   [ACPI] CONFIG_ACP...
648

cbf9bd603   Yinghai Lu   acpi: get boot_cp...
649
650
651
652
  static inline int early_acpi_boot_init(void)
  {
  	return 0;
  }
53de49f52   Andrew Morton   [ACPI] CONFIG_ACP...
653
654
655
656
  static inline int acpi_boot_init(void)
  {
  	return 0;
  }
8558e3943   Len Brown   x86, ACPI: delete...
657
  static inline void acpi_boot_table_init(void)
53de49f52   Andrew Morton   [ACPI] CONFIG_ACP...
658
  {
8558e3943   Len Brown   x86, ACPI: delete...
659
  	return;
53de49f52   Andrew Morton   [ACPI] CONFIG_ACP...
660
  }
3c999f142   Yinghai Lu   x86: check comman...
661
662
663
664
  static inline int acpi_mps_check(void)
  {
  	return 0;
  }
443dea72d   Thomas Renninger   ACPI: Export acpi...
665
666
667
668
  static inline int acpi_check_resource_conflict(struct resource *res)
  {
  	return 0;
  }
df92e6959   Thomas Renninger   ACPI: track opreg...
669
670
671
672
673
  static inline int acpi_check_region(resource_size_t start, resource_size_t n,
  				    const char *name)
  {
  	return 0;
  }
e55a5999f   Feng Tang   ACPI: Handle CONF...
674
675
676
677
  struct acpi_table_header;
  static inline int acpi_table_parse(char *id,
  				int (*handler)(struct acpi_table_header *))
  {
f8a571b2a   tangchen   ACPI / tables: Re...
678
  	return -ENODEV;
e55a5999f   Feng Tang   ACPI: Handle CONF...
679
  }
6fed05c9c   Rafael J. Wysocki   ACPI / PM: Fix bu...
680

b54ac6d2a   Huang Ying   ACPI, Record ACPI...
681
  static inline int acpi_nvs_register(__u64 start, __u64 size)
6fed05c9c   Rafael J. Wysocki   ACPI / PM: Fix bu...
682
683
684
  {
  	return 0;
  }
b54ac6d2a   Huang Ying   ACPI, Record ACPI...
685
686
687
688
689
690
  
  static inline int acpi_nvs_for_each_region(int (*func)(__u64, __u64, void *),
  					   void *data)
  {
  	return 0;
  }
cf761af9e   Mika Westerberg   ACPI: Provide gen...
691
692
693
694
695
696
697
698
699
700
701
702
703
  struct acpi_device_id;
  
  static inline const struct acpi_device_id *acpi_match_device(
  	const struct acpi_device_id *ids, const struct device *dev)
  {
  	return NULL;
  }
  
  static inline bool acpi_driver_match_device(struct device *dev,
  					    const struct device_driver *drv)
  {
  	return false;
  }
4ae399241   Kejian Yan   ACPI: bus: add st...
704
  static inline union acpi_object *acpi_evaluate_dsm(acpi_handle handle,
94116f812   Andy Shevchenko   ACPI: Switch to u...
705
  						   const guid_t *guid,
4ae399241   Kejian Yan   ACPI: bus: add st...
706
707
708
709
710
  						   int rev, int func,
  						   union acpi_object *argv4)
  {
  	return NULL;
  }
6eb2451f7   Zhang Rui   ACPI: add module ...
711
712
713
714
715
716
717
718
719
720
721
  static inline int acpi_device_uevent_modalias(struct device *dev,
  				struct kobj_uevent_env *env)
  {
  	return -ENODEV;
  }
  
  static inline int acpi_device_modalias(struct device *dev,
  				char *buf, int size)
  {
  	return -ENODEV;
  }
b84f196d9   Suthikulpanit, Suravee   ACPI: Adding DMA ...
722
  static inline bool acpi_dma_supported(struct acpi_device *adev)
d05626748   Suthikulpanit, Suravee   ACPI / scan: Pars...
723
724
725
  {
  	return false;
  }
b84f196d9   Suthikulpanit, Suravee   ACPI: Adding DMA ...
726
727
728
729
  static inline enum dev_dma_attr acpi_get_dma_attr(struct acpi_device *adev)
  {
  	return DEV_DMA_NOT_SUPPORTED;
  }
c04ac679c   Lorenzo Pieralisi   ACPI: Introduce D...
730
731
732
733
734
  static inline int acpi_dma_get_range(struct device *dev, u64 *dma_addr,
  				     u64 *offset, u64 *size)
  {
  	return -ENODEV;
  }
5a1bb638d   Sricharan R   drivers: acpi: Ha...
735
736
737
738
739
  static inline int acpi_dma_configure(struct device *dev,
  				     enum dev_dma_attr attr)
  {
  	return 0;
  }
d760a1baf   Lorenzo Pieralisi   ACPI: Implement a...
740
741
  
  static inline void acpi_dma_deconfigure(struct device *dev) { }
cf761af9e   Mika Westerberg   ACPI: Provide gen...
742
  #define ACPI_PTR(_ptr)	(NULL)
10c7e20b2   Octavian Purdila   ACPI / scan: fix ...
743
744
745
746
747
748
749
  static inline void acpi_device_set_enumerated(struct acpi_device *adev)
  {
  }
  
  static inline void acpi_device_clear_enumerated(struct acpi_device *adev)
  {
  }
68bdb6773   Octavian Purdila   ACPI: add support...
750
751
752
753
754
755
756
757
758
  static inline int acpi_reconfig_notifier_register(struct notifier_block *nb)
  {
  	return -EINVAL;
  }
  
  static inline int acpi_reconfig_notifier_unregister(struct notifier_block *nb)
  {
  	return -EINVAL;
  }
00710984e   Bjorn Helgaas   ACPI: Add acpi_re...
759
760
761
762
  static inline struct acpi_device *acpi_resource_consumer(struct resource *res)
  {
  	return NULL;
  }
b54ac6d2a   Huang Ying   ACPI, Record ACPI...
763
  #endif	/* !CONFIG_ACPI */
6fed05c9c   Rafael J. Wysocki   ACPI / PM: Fix bu...
764

fe7bd58f5   Rui Wang   x86/ioapic: Chang...
765
766
767
768
769
  #ifdef CONFIG_ACPI_HOTPLUG_IOAPIC
  int acpi_ioapic_add(acpi_handle root);
  #else
  static inline int acpi_ioapic_add(acpi_handle root) { return 0; }
  #endif
09f98a825   Tang Liang   x86, acpi, tboot:...
770
771
772
773
774
775
  #ifdef CONFIG_ACPI
  void acpi_os_set_prepare_sleep(int (*func)(u8 sleep_state,
  			       u32 pm1a_ctrl,  u32 pm1b_ctrl));
  
  acpi_status acpi_os_prepare_sleep(u8 sleep_state,
  				  u32 pm1a_control, u32 pm1b_control);
d6b47b122   Ben Guthro   ACPI / sleep: Int...
776
777
778
779
780
781
  
  void acpi_os_set_prepare_extended_sleep(int (*func)(u8 sleep_state,
  				        u32 val_a,  u32 val_b));
  
  acpi_status acpi_os_prepare_extended_sleep(u8 sleep_state,
  					   u32 val_a, u32 val_b);
385ddeac7   Tony Luck   X86 ACPI: Use #if...
782
  #ifdef CONFIG_X86
8e30524dc   Thomas Renninger   x86, acpi: Introd...
783
784
785
786
787
788
789
  void arch_reserve_mem_area(acpi_physical_address addr, size_t size);
  #else
  static inline void arch_reserve_mem_area(acpi_physical_address addr,
  					  size_t size)
  {
  }
  #endif /* CONFIG_X86 */
09f98a825   Tang Liang   x86, acpi, tboot:...
790
791
792
  #else
  #define acpi_os_set_prepare_sleep(func, pm1a_ctrl, pm1b_ctrl) do { } while (0)
  #endif
5de21bb99   Rafael J. Wysocki   ACPI / PM: Drop C...
793
  #if defined(CONFIG_ACPI) && defined(CONFIG_PM)
e5cc8ef31   Rafael J. Wysocki   ACPI / PM: Provid...
794
795
796
797
  int acpi_dev_runtime_suspend(struct device *dev);
  int acpi_dev_runtime_resume(struct device *dev);
  int acpi_subsys_runtime_suspend(struct device *dev);
  int acpi_subsys_runtime_resume(struct device *dev);
5de21bb99   Rafael J. Wysocki   ACPI / PM: Drop C...
798
799
  struct acpi_device *acpi_dev_pm_get_node(struct device *dev);
  int acpi_dev_pm_attach(struct device *dev, bool power_on);
e5cc8ef31   Rafael J. Wysocki   ACPI / PM: Provid...
800
801
802
803
804
  #else
  static inline int acpi_dev_runtime_suspend(struct device *dev) { return 0; }
  static inline int acpi_dev_runtime_resume(struct device *dev) { return 0; }
  static inline int acpi_subsys_runtime_suspend(struct device *dev) { return 0; }
  static inline int acpi_subsys_runtime_resume(struct device *dev) { return 0; }
5de21bb99   Rafael J. Wysocki   ACPI / PM: Drop C...
805
806
807
808
809
810
811
812
  static inline struct acpi_device *acpi_dev_pm_get_node(struct device *dev)
  {
  	return NULL;
  }
  static inline int acpi_dev_pm_attach(struct device *dev, bool power_on)
  {
  	return -ENODEV;
  }
e5cc8ef31   Rafael J. Wysocki   ACPI / PM: Provid...
813
  #endif
d79beb399   Rafael J. Wysocki   ACPI / PM: Fix bu...
814
  #if defined(CONFIG_ACPI) && defined(CONFIG_PM_SLEEP)
e5cc8ef31   Rafael J. Wysocki   ACPI / PM: Provid...
815
816
817
  int acpi_dev_suspend_late(struct device *dev);
  int acpi_dev_resume_early(struct device *dev);
  int acpi_subsys_prepare(struct device *dev);
4cf563c5d   Heikki Krogerus   ACPI / PM: Export...
818
  void acpi_subsys_complete(struct device *dev);
e5cc8ef31   Rafael J. Wysocki   ACPI / PM: Provid...
819
820
  int acpi_subsys_suspend_late(struct device *dev);
  int acpi_subsys_resume_early(struct device *dev);
4cf563c5d   Heikki Krogerus   ACPI / PM: Export...
821
822
  int acpi_subsys_suspend(struct device *dev);
  int acpi_subsys_freeze(struct device *dev);
e5cc8ef31   Rafael J. Wysocki   ACPI / PM: Provid...
823
824
825
826
  #else
  static inline int acpi_dev_suspend_late(struct device *dev) { return 0; }
  static inline int acpi_dev_resume_early(struct device *dev) { return 0; }
  static inline int acpi_subsys_prepare(struct device *dev) { return 0; }
4cf563c5d   Heikki Krogerus   ACPI / PM: Export...
827
  static inline void acpi_subsys_complete(struct device *dev) {}
e5cc8ef31   Rafael J. Wysocki   ACPI / PM: Provid...
828
829
  static inline int acpi_subsys_suspend_late(struct device *dev) { return 0; }
  static inline int acpi_subsys_resume_early(struct device *dev) { return 0; }
4cf563c5d   Heikki Krogerus   ACPI / PM: Export...
830
831
  static inline int acpi_subsys_suspend(struct device *dev) { return 0; }
  static inline int acpi_subsys_freeze(struct device *dev) { return 0; }
e5cc8ef31   Rafael J. Wysocki   ACPI / PM: Provid...
832
  #endif
fbfddae69   Toshi Kani   ACPI: Add acpi_ha...
833
834
835
836
837
838
839
840
  #ifdef CONFIG_ACPI
  __printf(3, 4)
  void acpi_handle_printk(const char *level, acpi_handle handle,
  			const char *fmt, ...);
  #else	/* !CONFIG_ACPI */
  static inline __printf(3, 4) void
  acpi_handle_printk(const char *level, void *handle, const char *fmt, ...) {}
  #endif	/* !CONFIG_ACPI */
45fef5b88   Bjørn Mork   ACPI: add dynamic...
841
842
843
844
845
846
847
  #if defined(CONFIG_ACPI) && defined(CONFIG_DYNAMIC_DEBUG)
  __printf(3, 4)
  void __acpi_handle_debug(struct _ddebug *descriptor, acpi_handle handle, const char *fmt, ...);
  #else
  #define __acpi_handle_debug(descriptor, handle, fmt, ...)		\
  	acpi_handle_printk(KERN_DEBUG, handle, fmt, ##__VA_ARGS__);
  #endif
fbfddae69   Toshi Kani   ACPI: Add acpi_ha...
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
  /*
   * acpi_handle_<level>: Print message with ACPI prefix and object path
   *
   * These interfaces acquire the global namespace mutex to obtain an object
   * path.  In interrupt context, it shows the object path as <n/a>.
   */
  #define acpi_handle_emerg(handle, fmt, ...)				\
  	acpi_handle_printk(KERN_EMERG, handle, fmt, ##__VA_ARGS__)
  #define acpi_handle_alert(handle, fmt, ...)				\
  	acpi_handle_printk(KERN_ALERT, handle, fmt, ##__VA_ARGS__)
  #define acpi_handle_crit(handle, fmt, ...)				\
  	acpi_handle_printk(KERN_CRIT, handle, fmt, ##__VA_ARGS__)
  #define acpi_handle_err(handle, fmt, ...)				\
  	acpi_handle_printk(KERN_ERR, handle, fmt, ##__VA_ARGS__)
  #define acpi_handle_warn(handle, fmt, ...)				\
  	acpi_handle_printk(KERN_WARNING, handle, fmt, ##__VA_ARGS__)
  #define acpi_handle_notice(handle, fmt, ...)				\
  	acpi_handle_printk(KERN_NOTICE, handle, fmt, ##__VA_ARGS__)
  #define acpi_handle_info(handle, fmt, ...)				\
  	acpi_handle_printk(KERN_INFO, handle, fmt, ##__VA_ARGS__)
45fef5b88   Bjørn Mork   ACPI: add dynamic...
868
  #if defined(DEBUG)
fbfddae69   Toshi Kani   ACPI: Add acpi_ha...
869
870
871
  #define acpi_handle_debug(handle, fmt, ...)				\
  	acpi_handle_printk(KERN_DEBUG, handle, fmt, ##__VA_ARGS__)
  #else
45fef5b88   Bjørn Mork   ACPI: add dynamic...
872
873
874
875
876
877
878
879
880
  #if defined(CONFIG_DYNAMIC_DEBUG)
  #define acpi_handle_debug(handle, fmt, ...)				\
  do {									\
  	DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, fmt);			\
  	if (unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT))		\
  		__acpi_handle_debug(&descriptor, handle, pr_fmt(fmt),	\
  				##__VA_ARGS__);				\
  } while (0)
  #else
fbfddae69   Toshi Kani   ACPI: Add acpi_ha...
881
882
883
884
885
886
887
  #define acpi_handle_debug(handle, fmt, ...)				\
  ({									\
  	if (0)								\
  		acpi_handle_printk(KERN_DEBUG, handle, fmt, ##__VA_ARGS__); \
  	0;								\
  })
  #endif
45fef5b88   Bjørn Mork   ACPI: add dynamic...
888
  #endif
fbfddae69   Toshi Kani   ACPI: Add acpi_ha...
889

f028d5242   Rafael J. Wysocki   ACPI / GPIO: Driv...
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
  struct acpi_gpio_params {
  	unsigned int crs_entry_index;
  	unsigned int line_index;
  	bool active_low;
  };
  
  struct acpi_gpio_mapping {
  	const char *name;
  	const struct acpi_gpio_params *data;
  	unsigned int size;
  };
  
  #if defined(CONFIG_ACPI) && defined(CONFIG_GPIOLIB)
  int acpi_dev_add_driver_gpios(struct acpi_device *adev,
  			      const struct acpi_gpio_mapping *gpios);
  
  static inline void acpi_dev_remove_driver_gpios(struct acpi_device *adev)
  {
  	if (adev)
  		adev->driver_gpios = NULL;
  }
c884fbd45   Mika Westerberg   gpio / ACPI: Add ...
911

85c73d50e   Andy Shevchenko   gpio: acpi: Add m...
912
913
914
  int devm_acpi_dev_add_driver_gpios(struct device *dev,
  				   const struct acpi_gpio_mapping *gpios);
  void devm_acpi_dev_remove_driver_gpios(struct device *dev);
25e3ef894   Andy Shevchenko   gpio: acpi: Split...
915
916
  bool acpi_gpio_get_irq_resource(struct acpi_resource *ares,
  				struct acpi_resource_gpio **agpio);
c884fbd45   Mika Westerberg   gpio / ACPI: Add ...
917
  int acpi_dev_gpio_irq_get(struct acpi_device *adev, int index);
f028d5242   Rafael J. Wysocki   ACPI / GPIO: Driv...
918
919
920
921
922
923
924
  #else
  static inline int acpi_dev_add_driver_gpios(struct acpi_device *adev,
  			      const struct acpi_gpio_mapping *gpios)
  {
  	return -ENXIO;
  }
  static inline void acpi_dev_remove_driver_gpios(struct acpi_device *adev) {}
c884fbd45   Mika Westerberg   gpio / ACPI: Add ...
925

85c73d50e   Andy Shevchenko   gpio: acpi: Add m...
926
927
928
929
930
931
  static inline int devm_acpi_dev_add_driver_gpios(struct device *dev,
  			      const struct acpi_gpio_mapping *gpios)
  {
  	return -ENXIO;
  }
  static inline void devm_acpi_dev_remove_driver_gpios(struct device *dev) {}
25e3ef894   Andy Shevchenko   gpio: acpi: Split...
932
933
934
935
936
  static inline bool acpi_gpio_get_irq_resource(struct acpi_resource *ares,
  					      struct acpi_resource_gpio **agpio)
  {
  	return false;
  }
c884fbd45   Mika Westerberg   gpio / ACPI: Add ...
937
938
939
940
  static inline int acpi_dev_gpio_irq_get(struct acpi_device *adev, int index)
  {
  	return -ENXIO;
  }
f028d5242   Rafael J. Wysocki   ACPI / GPIO: Driv...
941
  #endif
ffdcd955c   Mika Westerberg   ACPI: Add support...
942
943
944
945
946
947
948
949
950
951
  /* Device properties */
  
  #define MAX_ACPI_REFERENCE_ARGS	8
  struct acpi_reference_args {
  	struct acpi_device *adev;
  	size_t nargs;
  	u64 args[MAX_ACPI_REFERENCE_ARGS];
  };
  
  #ifdef CONFIG_ACPI
99a854646   Sakari Ailus   ACPI: Constify in...
952
  int acpi_dev_get_property(const struct acpi_device *adev, const char *name,
ffdcd955c   Mika Westerberg   ACPI: Add support...
953
  			  acpi_object_type type, const union acpi_object **obj);
99a854646   Sakari Ailus   ACPI: Constify in...
954
  int __acpi_node_get_property_reference(const struct fwnode_handle *fwnode,
b60e4ea4a   Mika Westerberg   ACPI / property: ...
955
956
  				const char *name, size_t index, size_t num_args,
  				struct acpi_reference_args *args);
99a854646   Sakari Ailus   ACPI: Constify in...
957
958
  static inline int acpi_node_get_property_reference(
  				const struct fwnode_handle *fwnode,
b60e4ea4a   Mika Westerberg   ACPI / property: ...
959
960
961
962
963
964
  				const char *name, size_t index,
  				struct acpi_reference_args *args)
  {
  	return __acpi_node_get_property_reference(fwnode, name, index,
  		MAX_ACPI_REFERENCE_ARGS, args);
  }
b31384fa5   Rafael J. Wysocki   Driver core: Unif...
965

99a854646   Sakari Ailus   ACPI: Constify in...
966
  int acpi_node_prop_get(const struct fwnode_handle *fwnode, const char *propname,
3a7a2ab83   Rafael J. Wysocki   ACPI / property: ...
967
  		       void **valptr);
99a854646   Sakari Ailus   ACPI: Constify in...
968
969
970
971
972
973
974
  int acpi_dev_prop_read_single(struct acpi_device *adev,
  			      const char *propname, enum dev_prop_type proptype,
  			      void *val);
  int acpi_node_prop_read(const struct fwnode_handle *fwnode,
  			const char *propname, enum dev_prop_type proptype,
  			void *val, size_t nval);
  int acpi_dev_prop_read(const struct acpi_device *adev, const char *propname,
b31384fa5   Rafael J. Wysocki   Driver core: Unif...
975
  		       enum dev_prop_type proptype, void *val, size_t nval);
8a0662d9e   Rafael J. Wysocki   Driver core: Unif...
976

37ba983cf   Sakari Ailus   device property: ...
977
  struct fwnode_handle *acpi_get_next_subnode(const struct fwnode_handle *fwnode,
34055190b   Mika Westerberg   ACPI / property: ...
978
  					    struct fwnode_handle *child);
37ba983cf   Sakari Ailus   device property: ...
979
  struct fwnode_handle *acpi_node_get_parent(const struct fwnode_handle *fwnode);
e647b5322   Marc Zyngier   ACPI: Add early d...
980

37ba983cf   Sakari Ailus   device property: ...
981
982
983
984
  struct fwnode_handle *
  acpi_graph_get_next_endpoint(const struct fwnode_handle *fwnode,
  			     struct fwnode_handle *prev);
  int acpi_graph_get_remote_endpoint(const struct fwnode_handle *fwnode,
79389a83b   Mika Westerberg   ACPI / property: ...
985
986
987
  				   struct fwnode_handle **remote,
  				   struct fwnode_handle **port,
  				   struct fwnode_handle **endpoint);
e647b5322   Marc Zyngier   ACPI: Add early d...
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
  
  struct acpi_probe_entry;
  typedef bool (*acpi_probe_entry_validate_subtbl)(struct acpi_subtable_header *,
  						 struct acpi_probe_entry *);
  
  #define ACPI_TABLE_ID_LEN	5
  
  /**
   * struct acpi_probe_entry - boot-time probing entry
   * @id:			ACPI table name
   * @type:		Optional subtable type to match
   *			(if @id contains subtables)
   * @subtable_valid:	Optional callback to check the validity of
   *			the subtable
   * @probe_table:	Callback to the driver being probed when table
   *			match is successful
   * @probe_subtbl:	Callback to the driver being probed when table and
   *			subtable match (and optional callback is successful)
   * @driver_data:	Sideband data provided back to the driver
   */
  struct acpi_probe_entry {
  	__u8 id[ACPI_TABLE_ID_LEN];
  	__u8 type;
  	acpi_probe_entry_validate_subtbl subtable_valid;
  	union {
  		acpi_tbl_table_handler probe_table;
  		acpi_tbl_entry_handler probe_subtbl;
  	};
  	kernel_ulong_t driver_data;
  };
  
  #define ACPI_DECLARE_PROBE_ENTRY(table, name, table_id, subtable, valid, data, fn)	\
  	static const struct acpi_probe_entry __acpi_probe_##name	\
  		__used __section(__##table##_acpi_probe_table)		\
  		 = {							\
  			.id = table_id,					\
  			.type = subtable,				\
  			.subtable_valid = valid,			\
  			.probe_table = (acpi_tbl_table_handler)fn,	\
  			.driver_data = data, 				\
  		   }
  
  #define ACPI_PROBE_TABLE(name)		__##name##_acpi_probe_table
  #define ACPI_PROBE_TABLE_END(name)	__##name##_acpi_probe_table_end
  
  int __acpi_probe_device_table(struct acpi_probe_entry *start, int nr);
  
  #define acpi_probe_device_table(t)					\
  	({ 								\
  		extern struct acpi_probe_entry ACPI_PROBE_TABLE(t),	\
  			                       ACPI_PROBE_TABLE_END(t);	\
  		__acpi_probe_device_table(&ACPI_PROBE_TABLE(t),		\
  					  (&ACPI_PROBE_TABLE_END(t) -	\
  					   &ACPI_PROBE_TABLE(t)));	\
  	})
ffdcd955c   Mika Westerberg   ACPI: Add support...
1043
1044
1045
1046
1047
1048
1049
  #else
  static inline int acpi_dev_get_property(struct acpi_device *adev,
  					const char *name, acpi_object_type type,
  					const union acpi_object **obj)
  {
  	return -ENXIO;
  }
3a7a2ab83   Rafael J. Wysocki   ACPI / property: ...
1050

b60e4ea4a   Mika Westerberg   ACPI / property: ...
1051
  static inline int
99a854646   Sakari Ailus   ACPI: Constify in...
1052
  __acpi_node_get_property_reference(const struct fwnode_handle *fwnode,
b60e4ea4a   Mika Westerberg   ACPI / property: ...
1053
1054
1055
1056
1057
  				const char *name, size_t index, size_t num_args,
  				struct acpi_reference_args *args)
  {
  	return -ENXIO;
  }
99a854646   Sakari Ailus   ACPI: Constify in...
1058
1059
1060
1061
  static inline int
  acpi_node_get_property_reference(const struct fwnode_handle *fwnode,
  				 const char *name, size_t index,
  				 struct acpi_reference_args *args)
ffdcd955c   Mika Westerberg   ACPI: Add support...
1062
1063
1064
  {
  	return -ENXIO;
  }
b31384fa5   Rafael J. Wysocki   Driver core: Unif...
1065

99a854646   Sakari Ailus   ACPI: Constify in...
1066
  static inline int acpi_node_prop_get(const struct fwnode_handle *fwnode,
3a7a2ab83   Rafael J. Wysocki   ACPI / property: ...
1067
1068
  				     const char *propname,
  				     void **valptr)
ffdcd955c   Mika Westerberg   ACPI: Add support...
1069
1070
1071
  {
  	return -ENXIO;
  }
b31384fa5   Rafael J. Wysocki   Driver core: Unif...
1072

99a854646   Sakari Ailus   ACPI: Constify in...
1073
  static inline int acpi_dev_prop_get(const struct acpi_device *adev,
b31384fa5   Rafael J. Wysocki   Driver core: Unif...
1074
1075
1076
1077
1078
  				    const char *propname,
  				    void **valptr)
  {
  	return -ENXIO;
  }
99a854646   Sakari Ailus   ACPI: Constify in...
1079
  static inline int acpi_dev_prop_read_single(const struct acpi_device *adev,
b31384fa5   Rafael J. Wysocki   Driver core: Unif...
1080
1081
1082
1083
1084
1085
  					    const char *propname,
  					    enum dev_prop_type proptype,
  					    void *val)
  {
  	return -ENXIO;
  }
99a854646   Sakari Ailus   ACPI: Constify in...
1086
  static inline int acpi_node_prop_read(const struct fwnode_handle *fwnode,
3a7a2ab83   Rafael J. Wysocki   ACPI / property: ...
1087
1088
1089
1090
1091
1092
  				      const char *propname,
  				      enum dev_prop_type proptype,
  				      void *val, size_t nval)
  {
  	return -ENXIO;
  }
99a854646   Sakari Ailus   ACPI: Constify in...
1093
  static inline int acpi_dev_prop_read(const struct acpi_device *adev,
b31384fa5   Rafael J. Wysocki   Driver core: Unif...
1094
1095
1096
1097
1098
1099
  				     const char *propname,
  				     enum dev_prop_type proptype,
  				     void *val, size_t nval)
  {
  	return -ENXIO;
  }
34055190b   Mika Westerberg   ACPI / property: ...
1100
  static inline struct fwnode_handle *
37ba983cf   Sakari Ailus   device property: ...
1101
1102
  acpi_get_next_subnode(const struct fwnode_handle *fwnode,
  		      struct fwnode_handle *child)
8a0662d9e   Rafael J. Wysocki   Driver core: Unif...
1103
1104
1105
  {
  	return NULL;
  }
dfa672fbc   Mika Westerberg   ACPI / property: ...
1106
  static inline struct fwnode_handle *
37ba983cf   Sakari Ailus   device property: ...
1107
  acpi_node_get_parent(const struct fwnode_handle *fwnode)
dfa672fbc   Mika Westerberg   ACPI / property: ...
1108
1109
1110
  {
  	return NULL;
  }
79389a83b   Mika Westerberg   ACPI / property: ...
1111
  static inline struct fwnode_handle *
37ba983cf   Sakari Ailus   device property: ...
1112
  acpi_graph_get_next_endpoint(const struct fwnode_handle *fwnode,
79389a83b   Mika Westerberg   ACPI / property: ...
1113
1114
1115
1116
1117
1118
  			     struct fwnode_handle *prev)
  {
  	return ERR_PTR(-ENXIO);
  }
  
  static inline int
37ba983cf   Sakari Ailus   device property: ...
1119
  acpi_graph_get_remote_endpoint(const struct fwnode_handle *fwnode,
79389a83b   Mika Westerberg   ACPI / property: ...
1120
1121
1122
1123
1124
1125
  			       struct fwnode_handle **remote,
  			       struct fwnode_handle **port,
  			       struct fwnode_handle **endpoint)
  {
  	return -ENXIO;
  }
3feab13c9   Lorenzo Pieralisi   ACPI / drivers: f...
1126
  #define ACPI_DECLARE_PROBE_ENTRY(table, name, table_id, subtable, valid, data, fn) \
e647b5322   Marc Zyngier   ACPI: Add early d...
1127
1128
1129
1130
1131
1132
1133
1134
1135
  	static const void * __acpi_table_##name[]			\
  		__attribute__((unused))					\
  		 = { (void *) table_id,					\
  		     (void *) subtable,					\
  		     (void *) valid,					\
  		     (void *) fn,					\
  		     (void *) data }
  
  #define acpi_probe_device_table(t)	({ int __r = 0; __r;})
ffdcd955c   Mika Westerberg   ACPI: Add support...
1136
  #endif
da3d3f98d   Aleksey Makarov   ACPI / tables: ta...
1137
1138
1139
1140
1141
  #ifdef CONFIG_ACPI_TABLE_UPGRADE
  void acpi_table_upgrade(void);
  #else
  static inline void acpi_table_upgrade(void) { }
  #endif
058dfc767   Mika Westerberg   ACPI / watchdog: ...
1142
1143
1144
1145
1146
  #if defined(CONFIG_ACPI) && defined(CONFIG_ACPI_WATCHDOG)
  extern bool acpi_has_watchdog(void);
  #else
  static inline bool acpi_has_watchdog(void) { return false; }
  #endif
ad1696f6f   Aleksey Makarov   ACPI: parse SPCR ...
1147
  #ifdef CONFIG_ACPI_SPCR_TABLE
37ef38f3f   Timur Tabi   tty: pl011: fix i...
1148
  extern bool qdf2400_e44_present;
ad1696f6f   Aleksey Makarov   ACPI: parse SPCR ...
1149
1150
1151
1152
  int parse_spcr(bool earlycon);
  #else
  static inline int parse_spcr(bool earlycon) { return 0; }
  #endif
d44fa3d46   Agustin Vega-Frias   ACPI: Add support...
1153
1154
1155
1156
1157
1158
1159
1160
1161
  #if IS_ENABLED(CONFIG_ACPI_GENERIC_GSI)
  int acpi_irq_get(acpi_handle handle, unsigned int index, struct resource *res);
  #else
  static inline
  int acpi_irq_get(acpi_handle handle, unsigned int index, struct resource *res)
  {
  	return -EINVAL;
  }
  #endif
25be5e6cc   Len Brown   [PATCH] VIA IRQ q...
1162
  #endif	/*_LINUX_ACPI_H*/