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