15db2f26eSSascha Wildner /*-
25db2f26eSSascha Wildner * Copyright (c) 2002 Mitsaru Iwasaki
35db2f26eSSascha Wildner * All rights reserved.
45db2f26eSSascha Wildner *
55db2f26eSSascha Wildner * Redistribution and use in source and binary forms, with or without
65db2f26eSSascha Wildner * modification, are permitted provided that the following conditions
75db2f26eSSascha Wildner * are met:
85db2f26eSSascha Wildner * 1. Redistributions of source code must retain the above copyright
95db2f26eSSascha Wildner * notice, this list of conditions and the following disclaimer.
105db2f26eSSascha Wildner * 2. Redistributions in binary form must reproduce the above copyright
115db2f26eSSascha Wildner * notice, this list of conditions and the following disclaimer in the
125db2f26eSSascha Wildner * documentation and/or other materials provided with the distribution.
135db2f26eSSascha Wildner *
145db2f26eSSascha Wildner * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
155db2f26eSSascha Wildner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
165db2f26eSSascha Wildner * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
175db2f26eSSascha Wildner * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
185db2f26eSSascha Wildner * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
195db2f26eSSascha Wildner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
205db2f26eSSascha Wildner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
215db2f26eSSascha Wildner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
225db2f26eSSascha Wildner * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
235db2f26eSSascha Wildner * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
245db2f26eSSascha Wildner * SUCH DAMAGE.
255db2f26eSSascha Wildner *
265db2f26eSSascha Wildner * $FreeBSD: src/sys/dev/acpica/Osd/OsdTable.c,v 1.7 2004/04/20 17:13:08 njl Exp $
275db2f26eSSascha Wildner */
285db2f26eSSascha Wildner
295db2f26eSSascha Wildner /*
30178f054bSSascha Wildner * Environmental and ACPI Tables (partial)
315db2f26eSSascha Wildner */
325db2f26eSSascha Wildner
335db2f26eSSascha Wildner #include "acpi.h"
345db2f26eSSascha Wildner
355db2f26eSSascha Wildner #include <sys/kernel.h>
365db2f26eSSascha Wildner #include <sys/linker.h>
375db2f26eSSascha Wildner
385db2f26eSSascha Wildner #undef _COMPONENT
395db2f26eSSascha Wildner #define _COMPONENT ACPI_TABLES
405db2f26eSSascha Wildner
415db2f26eSSascha Wildner static char acpi_osname[128];
425db2f26eSSascha Wildner TUNABLE_STR("hw.acpi.osname", acpi_osname, sizeof(acpi_osname));
435db2f26eSSascha Wildner
445db2f26eSSascha Wildner ACPI_STATUS
AcpiOsPredefinedOverride(const ACPI_PREDEFINED_NAMES * InitVal,ACPI_STRING * NewVal)455db2f26eSSascha Wildner AcpiOsPredefinedOverride (
465db2f26eSSascha Wildner const ACPI_PREDEFINED_NAMES *InitVal,
475db2f26eSSascha Wildner ACPI_STRING *NewVal)
485db2f26eSSascha Wildner {
495db2f26eSSascha Wildner if (InitVal == NULL || NewVal == NULL)
505db2f26eSSascha Wildner return (AE_BAD_PARAMETER);
515db2f26eSSascha Wildner
525db2f26eSSascha Wildner *NewVal = NULL;
53*c1776041SSascha Wildner if (ACPI_COMPARE_NAMESEG(InitVal->Name, "_OS_") &&
5448914621SSascha Wildner InitVal->Type == ACPI_TYPE_STRING && strlen(acpi_osname) > 0) {
555db2f26eSSascha Wildner kprintf("ACPI: Overriding _OS definition with \"%s\"\n", acpi_osname);
565db2f26eSSascha Wildner *NewVal = acpi_osname;
575db2f26eSSascha Wildner }
585db2f26eSSascha Wildner
595db2f26eSSascha Wildner return (AE_OK);
605db2f26eSSascha Wildner }
615db2f26eSSascha Wildner
625db2f26eSSascha Wildner ACPI_STATUS
AcpiOsTableOverride(ACPI_TABLE_HEADER * ExistingTable,ACPI_TABLE_HEADER ** NewTable)635db2f26eSSascha Wildner AcpiOsTableOverride (
645db2f26eSSascha Wildner ACPI_TABLE_HEADER *ExistingTable,
655db2f26eSSascha Wildner ACPI_TABLE_HEADER **NewTable)
665db2f26eSSascha Wildner {
675db2f26eSSascha Wildner caddr_t acpi_dsdt, p;
685db2f26eSSascha Wildner
695db2f26eSSascha Wildner if (ExistingTable == NULL || NewTable == NULL)
705db2f26eSSascha Wildner return(AE_BAD_PARAMETER);
715db2f26eSSascha Wildner
725db2f26eSSascha Wildner *NewTable = NULL;
73*c1776041SSascha Wildner if (ACPI_COMPARE_NAMESEG(ExistingTable->Signature, ACPI_SIG_DSDT) == 0)
74a147fee6SSascha Wildner return(AE_SUPPORT);
755db2f26eSSascha Wildner if ((acpi_dsdt = preload_search_by_type("acpi_dsdt")) == NULL)
76a147fee6SSascha Wildner return(AE_NOT_FOUND);
775db2f26eSSascha Wildner if ((p = preload_search_info(acpi_dsdt, MODINFO_ADDR)) == NULL)
78a147fee6SSascha Wildner return(AE_ERROR);
795db2f26eSSascha Wildner *NewTable = *(void **)p;
80fc0a91a6SSascha Wildner
815db2f26eSSascha Wildner return (AE_OK);
825db2f26eSSascha Wildner }
83d4972a9cSSascha Wildner
84d4972a9cSSascha Wildner ACPI_STATUS
AcpiOsPhysicalTableOverride(ACPI_TABLE_HEADER * ExistingTable,ACPI_PHYSICAL_ADDRESS * NewAddress,UINT32 * NewTableLength)85d4972a9cSSascha Wildner AcpiOsPhysicalTableOverride(
86d4972a9cSSascha Wildner ACPI_TABLE_HEADER *ExistingTable,
87d4972a9cSSascha Wildner ACPI_PHYSICAL_ADDRESS *NewAddress,
88d4972a9cSSascha Wildner UINT32 *NewTableLength)
89d4972a9cSSascha Wildner {
90d4972a9cSSascha Wildner return (AE_SUPPORT);
91d4972a9cSSascha Wildner }
92