/***************************************************************************** AudioScience HPI driver Copyright (C) 1997-2011 AudioScience Inc. This program is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation; This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Host Interface module for an ASI6205 based bus mastering PCI adapter. Copyright AudioScience, Inc., 2003 ******************************************************************************/ #ifndef _HPI6205_H_ #define _HPI6205_H_ #include "hpi_internal.h" /*********************************************************** Defines used for basic messaging ************************************************************/ #define H620_HIF_RESET 0 #define H620_HIF_IDLE 1 #define H620_HIF_GET_RESP 2 #define H620_HIF_DATA_DONE 3 #define H620_HIF_DATA_MASK 0x10 #define H620_HIF_SEND_DATA 0x14 #define H620_HIF_GET_DATA 0x15 #define H620_HIF_UNKNOWN 0x0000ffff /*********************************************************** Types used for mixer control caching ************************************************************/ #define H620_MAX_ISTREAMS 32 #define H620_MAX_OSTREAMS 32 #define HPI_NMIXER_CONTROLS 2048 /********************************************************************* This is used for dynamic control cache allocation **********************************************************************/ struct controlcache_6205 { u32 number_of_controls; u32 physical_address32; u32 size_in_bytes; }; /********************************************************************* This is used for dynamic allocation of async event array **********************************************************************/ struct async_event_buffer_6205 { u32 physical_address32; u32 spare; struct hpi_fifo_buffer b; }; /*********************************************************** The Host located memory buffer that the 6205 will bus master in and out of. ************************************************************/ #define HPI6205_SIZEOF_DATA (16*1024) struct message_buffer_6205 { struct hpi_message message; char data[256]; }; struct response_buffer_6205 { struct hpi_response response; char data[256]; }; union buffer_6205 { struct message_buffer_6205 message_buffer; struct response_buffer_6205 response_buffer; u8 b_data[HPI6205_SIZEOF_DATA]; }; struct bus_master_interface { u32 host_cmd; u32 dsp_ack; u32 transfer_size_in_bytes; union buffer_6205 u; struct controlcache_6205 control_cache; struct async_event_buffer_6205 async_buffer; struct hpi_hostbuffer_status instream_host_buffer_status[H620_MAX_ISTREAMS]; struct hpi_hostbuffer_status outstream_host_buffer_status[H620_MAX_OSTREAMS]; }; #endif /a>/codecs/rt5677.h
diff options
context:
space:
mode:
authorJiri Kosina <jkosina@suse.cz>2017-01-27 22:25:52 +0000
committerIngo Molnar <mingo@kernel.org>2017-01-28 09:18:56 +0100
commitbf29bddf0417a4783da3b24e8c9e017ac649326f (patch)
tree54a05a4883b73f80e4e1d8c4b15750aa01c39932 /sound/soc/codecs/rt5677.h
parent883af14e67e8b8702b5560aa64c888c0cd0bd66c (diff)
x86/efi: Always map the first physical page into the EFI pagetables
Commit: 129766708 ("x86/efi: Only map RAM into EFI page tables if in mixed-mode") stopped creating 1:1 mappings for all RAM, when running in native 64-bit mode. It turns out though that there are 64-bit EFI implementations in the wild (this particular problem has been reported on a Lenovo Yoga 710-11IKB), which still make use of the first physical page for their own private use, even though they explicitly mark it EFI_CONVENTIONAL_MEMORY in the memory map. In case there is no mapping for this particular frame in the EFI pagetables, as soon as firmware tries to make use of it, a triple fault occurs and the system reboots (in case of the Yoga 710-11IKB this is very early during bootup). Fix that by always mapping the first page of physical memory into the EFI pagetables. We're free to hand this page to the BIOS, as trim_bios_range() will reserve the first page and isolate it away from memory allocators anyway. Note that just reverting 129766708 alone is not enough on v4.9-rc1+ to fix the regression on affected hardware, as this commit: ab72a27da ("x86/efi: Consolidate region mapping logic") later made the first physical frame not to be mapped anyway. Reported-by: Hanka Pavlikova <hanka@ucw.cz> Signed-off-by: Jiri Kosina <jkosina@suse.cz> Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Borislav Petkov <bp@alien8.de> Cc: Borislav Petkov <bp@suse.de> Cc: Laura Abbott <labbott@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Vojtech Pavlik <vojtech@ucw.cz> Cc: Waiman Long <waiman.long@hpe.com> Cc: linux-efi@vger.kernel.org Cc: stable@kernel.org # v4.8+ Fixes: 129766708 ("x86/efi: Only map RAM into EFI page tables if in mixed-mode") Link: http://lkml.kernel.org/r/20170127222552.22336-1-matt@codeblueprint.co.uk [ Tidied up the changelog and the comment. ] Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'sound/soc/codecs/rt5677.h')