linux-bk/include/acpi/acpiosxf.h
<<
>>
Prefs
   1
   2/******************************************************************************
   3 *
   4 * Name: acpiosxf.h - All interfaces to the OS Services Layer (OSL).  These
   5 *                    interfaces must be implemented by OSL to interface the
   6 *                    ACPI components to the host operating system.
   7 *
   8 *****************************************************************************/
   9
  10
  11/*
  12 * Copyright (C) 2000 - 2005, R. Byron Moore
  13 * All rights reserved.
  14 *
  15 * Redistribution and use in source and binary forms, with or without
  16 * modification, are permitted provided that the following conditions
  17 * are met:
  18 * 1. Redistributions of source code must retain the above copyright
  19 *    notice, this list of conditions, and the following disclaimer,
  20 *    without modification.
  21 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
  22 *    substantially similar to the "NO WARRANTY" disclaimer below
  23 *    ("Disclaimer") and any redistribution must be conditioned upon
  24 *    including a substantially similar Disclaimer requirement for further
  25 *    binary redistribution.
  26 * 3. Neither the names of the above-listed copyright holders nor the names
  27 *    of any contributors may be used to endorse or promote products derived
  28 *    from this software without specific prior written permission.
  29 *
  30 * Alternatively, this software may be distributed under the terms of the
  31 * GNU General Public License ("GPL") version 2 as published by the Free
  32 * Software Foundation.
  33 *
  34 * NO WARRANTY
  35 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  36 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  37 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
  38 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  39 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  40 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  41 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  42 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  43 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
  44 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  45 * POSSIBILITY OF SUCH DAMAGES.
  46 */
  47
  48#ifndef __ACPIOSXF_H__
  49#define __ACPIOSXF_H__
  50
  51#include "platform/acenv.h"
  52#include "actypes.h"
  53
  54
  55/* Priorities for acpi_os_queue_for_execution */
  56
  57#define OSD_PRIORITY_GPE            1
  58#define OSD_PRIORITY_HIGH           2
  59#define OSD_PRIORITY_MED            3
  60#define OSD_PRIORITY_LO             4
  61
  62#define ACPI_NO_UNIT_LIMIT          ((u32) -1)
  63#define ACPI_MUTEX_SEM              1
  64
  65
  66/* Functions for acpi_os_signal */
  67
  68#define ACPI_SIGNAL_FATAL           0
  69#define ACPI_SIGNAL_BREAKPOINT      1
  70
  71struct acpi_signal_fatal_info
  72{
  73        u32                             type;
  74        u32                             code;
  75        u32                             argument;
  76};
  77
  78
  79/*
  80 * OSL Initialization and shutdown primitives
  81 */
  82
  83acpi_status
  84acpi_os_initialize (
  85        void);
  86
  87acpi_status
  88acpi_os_terminate (
  89        void);
  90
  91
  92/*
  93 * ACPI Table interfaces
  94 */
  95
  96acpi_status
  97acpi_os_get_root_pointer (
  98        u32                             flags,
  99        struct acpi_pointer             *address);
 100
 101acpi_status
 102acpi_os_predefined_override (
 103        const struct acpi_predefined_names *init_val,
 104        acpi_string                         *new_val);
 105
 106acpi_status
 107acpi_os_table_override (
 108        struct acpi_table_header        *existing_table,
 109        struct acpi_table_header        **new_table);
 110
 111
 112/*
 113 * Synchronization primitives
 114 */
 115
 116acpi_status
 117acpi_os_create_semaphore (
 118        u32                             max_units,
 119        u32                             initial_units,
 120        acpi_handle                     *out_handle);
 121
 122acpi_status
 123acpi_os_delete_semaphore (
 124        acpi_handle                     handle);
 125
 126acpi_status
 127acpi_os_wait_semaphore (
 128        acpi_handle                     handle,
 129        u32                             units,
 130        u16                             timeout);
 131
 132acpi_status
 133acpi_os_signal_semaphore (
 134        acpi_handle                     handle,
 135        u32                             units);
 136
 137acpi_status
 138acpi_os_create_lock (
 139        acpi_handle                     *out_handle);
 140
 141void
 142acpi_os_delete_lock (
 143        acpi_handle                     handle);
 144
 145void
 146acpi_os_acquire_lock (
 147        acpi_handle                     handle,
 148        u32                             flags);
 149
 150void
 151acpi_os_release_lock (
 152        acpi_handle                     handle,
 153        u32                             flags);
 154
 155
 156/*
 157 * Memory allocation and mapping
 158 */
 159
 160void *
 161acpi_os_allocate (
 162        acpi_size                       size);
 163
 164void
 165acpi_os_free (
 166        void *                          memory);
 167
 168acpi_status
 169acpi_os_map_memory (
 170        acpi_physical_address           physical_address,
 171        acpi_size                       size,
 172        void __iomem                  **logical_address);
 173
 174void
 175acpi_os_unmap_memory (
 176        void __iomem                  *logical_address,
 177        acpi_size                       size);
 178
 179#ifdef ACPI_FUTURE_USAGE
 180acpi_status
 181acpi_os_get_physical_address (
 182        void                            *logical_address,
 183        acpi_physical_address           *physical_address);
 184#endif
 185
 186
 187/*
 188 * Interrupt handlers
 189 */
 190
 191acpi_status
 192acpi_os_install_interrupt_handler (
 193        u32                             gsi,
 194        acpi_osd_handler                service_routine,
 195        void                            *context);
 196
 197acpi_status
 198acpi_os_remove_interrupt_handler (
 199        u32                             gsi,
 200        acpi_osd_handler                service_routine);
 201
 202
 203/*
 204 * Threads and Scheduling
 205 */
 206
 207u32
 208acpi_os_get_thread_id (
 209        void);
 210
 211acpi_status
 212acpi_os_queue_for_execution (
 213        u32                             priority,
 214        acpi_osd_exec_callback          function,
 215        void                            *context);
 216
 217void
 218acpi_os_wait_events_complete(
 219        void * context);
 220
 221void
 222acpi_os_wait_events_complete (
 223        void                            *context);
 224
 225void
 226acpi_os_sleep (
 227        acpi_integer                    milliseconds);
 228
 229void
 230acpi_os_stall (
 231        u32                             microseconds);
 232
 233
 234/*
 235 * Platform and hardware-independent I/O interfaces
 236 */
 237
 238acpi_status
 239acpi_os_read_port (
 240        acpi_io_address                 address,
 241        u32                             *value,
 242        u32                             width);
 243
 244acpi_status
 245acpi_os_write_port (
 246        acpi_io_address                 address,
 247        u32                             value,
 248        u32                             width);
 249
 250
 251/*
 252 * Platform and hardware-independent physical memory interfaces
 253 */
 254
 255acpi_status
 256acpi_os_read_memory (
 257        acpi_physical_address           address,
 258        u32                             *value,
 259        u32                             width);
 260
 261acpi_status
 262acpi_os_write_memory (
 263        acpi_physical_address           address,
 264        u32                             value,
 265        u32                             width);
 266
 267
 268/*
 269 * Platform and hardware-independent PCI configuration space access
 270 * Note: Can't use "Register" as a parameter, changed to "Reg" --
 271 * certain compilers complain.
 272 */
 273
 274acpi_status
 275acpi_os_read_pci_configuration (
 276        struct acpi_pci_id              *pci_id,
 277        u32                             reg,
 278        void                            *value,
 279        u32                             width);
 280
 281acpi_status
 282acpi_os_write_pci_configuration (
 283        struct acpi_pci_id              *pci_id,
 284        u32                             reg,
 285        acpi_integer                    value,
 286        u32                             width);
 287
 288/*
 289 * Interim function needed for PCI IRQ routing
 290 */
 291
 292void
 293acpi_os_derive_pci_id(
 294        acpi_handle                     rhandle,
 295        acpi_handle                     chandle,
 296        struct acpi_pci_id              **pci_id);
 297
 298/*
 299 * Miscellaneous
 300 */
 301
 302u8
 303acpi_os_readable (
 304        void                            *pointer,
 305        acpi_size                       length);
 306
 307#ifdef ACPI_FUTURE_USAGE
 308u8
 309acpi_os_writable (
 310        void                            *pointer,
 311        acpi_size                       length);
 312#endif
 313
 314u64
 315acpi_os_get_timer (
 316        void);
 317
 318acpi_status
 319acpi_os_signal (
 320        u32                             function,
 321        void                            *info);
 322
 323/*
 324 * Debug print routines
 325 */
 326
 327void ACPI_INTERNAL_VAR_XFACE
 328acpi_os_printf (
 329        const char                      *format,
 330        ...);
 331
 332void
 333acpi_os_vprintf (
 334        const char                      *format,
 335        va_list                 args);
 336
 337void
 338acpi_os_redirect_output (
 339        void                            *destination);
 340
 341
 342/*
 343 * Debug input
 344 */
 345
 346#ifdef ACPI_FUTURE_USAGE
 347u32
 348acpi_os_get_line (
 349        char                            *buffer);
 350#endif
 351
 352
 353/*
 354 * Directory manipulation
 355 */
 356
 357void *
 358acpi_os_open_directory (
 359        char                            *pathname,
 360        char                            *wildcard_spec,
 361        char                            requested_file_type);
 362
 363/* requeste_file_type values */
 364
 365#define REQUEST_FILE_ONLY                   0
 366#define REQUEST_DIR_ONLY                    1
 367
 368
 369char *
 370acpi_os_get_next_filename (
 371        void                            *dir_handle);
 372
 373void
 374acpi_os_close_directory (
 375        void                            *dir_handle);
 376
 377/*
 378 * Debug
 379 */
 380
 381void
 382acpi_os_dbg_assert(
 383        void                            *failed_assertion,
 384        void                            *file_name,
 385        u32                             line_number,
 386        char                            *message);
 387
 388
 389#endif /* __ACPIOSXF_H__ */
 390
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.