16ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang/* sfi_core.h Simple Firmware Interface, internal header */
26ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang
36ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang/*
46ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang
56ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  This file is provided under a dual BSD/GPLv2 license.  When using or
66ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  redistributing this file, you may do so under either license.
76ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang
86ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  GPL LICENSE SUMMARY
96ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang
106ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  Copyright(c) 2009 Intel Corporation. All rights reserved.
116ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang
126ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  This program is free software; you can redistribute it and/or modify
136ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  it under the terms of version 2 of the GNU General Public License as
146ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  published by the Free Software Foundation.
156ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang
166ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  This program is distributed in the hope that it will be useful, but
176ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  WITHOUT ANY WARRANTY; without even the implied warranty of
186ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
196ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  General Public License for more details.
206ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang
216ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  You should have received a copy of the GNU General Public License
226ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  along with this program; if not, write to the Free Software
236ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
246ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  The full GNU General Public License is included in this distribution
256ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  in the file called LICENSE.GPL.
266ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang
276ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  BSD LICENSE
286ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang
296ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  Copyright(c) 2009 Intel Corporation. All rights reserved.
306ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang
316ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  Redistribution and use in source and binary forms, with or without
326ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  modification, are permitted provided that the following conditions
336ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  are met:
346ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang
356ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang    * Redistributions of source code must retain the above copyright
366ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang      notice, this list of conditions and the following disclaimer.
376ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang    * Redistributions in binary form must reproduce the above copyright
386ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang      notice, this list of conditions and the following disclaimer in
396ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang      the documentation and/or other materials provided with the
406ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang      distribution.
416ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang    * Neither the name of Intel Corporation nor the names of its
426ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang      contributors may be used to endorse or promote products derived
436ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang      from this software without specific prior written permission.
446ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang
456ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
466ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
476ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
486ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
496ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
506ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
516ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
526ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
536ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
546ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
556ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
566ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang
576ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang*/
58d2185c4440ddba25305aeb337e5834b16ea6dfdfRandy Dunlap
59d2185c4440ddba25305aeb337e5834b16ea6dfdfRandy Dunlap#include <linux/sysfs.h>
60d2185c4440ddba25305aeb337e5834b16ea6dfdfRandy Dunlap
616ae6996a466e14bcf41618cde641a74ae03dc285Feng Tangstruct sfi_table_key{
626ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang	char	*sig;
636ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang	char	*oem_id;
646ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang	char	*oem_table_id;
656ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang};
666ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang
67dce80a56268fffd6b5ea57b3f6ba3d027a68f05eFeng Tang/* sysfs interface */
68dce80a56268fffd6b5ea57b3f6ba3d027a68f05eFeng Tangstruct sfi_table_attr {
69dce80a56268fffd6b5ea57b3f6ba3d027a68f05eFeng Tang	struct bin_attribute attr;
70dce80a56268fffd6b5ea57b3f6ba3d027a68f05eFeng Tang	char name[8];
71dce80a56268fffd6b5ea57b3f6ba3d027a68f05eFeng Tang};
72dce80a56268fffd6b5ea57b3f6ba3d027a68f05eFeng Tang
736ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang#define SFI_ANY_KEY { .sig = NULL, .oem_id = NULL, .oem_table_id = NULL }
746ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang
756ae6996a466e14bcf41618cde641a74ae03dc285Feng Tangextern int __init sfi_acpi_init(void);
766ae6996a466e14bcf41618cde641a74ae03dc285Feng Tangextern  struct sfi_table_header *sfi_check_table(u64 paddr,
776ae6996a466e14bcf41618cde641a74ae03dc285Feng Tang					struct sfi_table_key *key);
786ae6996a466e14bcf41618cde641a74ae03dc285Feng Tangstruct sfi_table_header *sfi_get_table(struct sfi_table_key *key);
796ae6996a466e14bcf41618cde641a74ae03dc285Feng Tangextern void sfi_put_table(struct sfi_table_header *table);
80dce80a56268fffd6b5ea57b3f6ba3d027a68f05eFeng Tangextern struct sfi_table_attr __init *sfi_sysfs_install_table(u64 pa);
81dce80a56268fffd6b5ea57b3f6ba3d027a68f05eFeng Tangextern void __init sfi_acpi_sysfs_init(void);
82