xref: /dflybsd-src/sys/dev/acpica/Osd/OsdTable.c (revision c1776041a2158922a67a1e8cab23c87d637a0572)
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