/* * Copyright 1998-2008 VIA Technologies, Inc. All Rights Reserved. * Copyright 2001-2008 S3 Graphics, Inc. All Rights Reserved. * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public * License as published by the Free Software Foundation; * either version 2, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTIES OR REPRESENTATIONS; 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. */ #ifndef __LCD_H__ #define __LCD_H__ /*Definition TMDS Device ID register*/ #define VT1631_DEVICE_ID_REG 0x02 #define VT1631_DEVICE_ID 0x92 #define VT3271_DEVICE_ID_REG 0x02 #define VT3271_DEVICE_ID 0x71 /* Definition DVI Panel ID*/ /* Resolution: 640x480, Channel: single, Dithering: Enable */ #define LCD_PANEL_ID0_640X480 0x00 /* Resolution: 800x600, Channel: single, Dithering: Enable */ #define LCD_PANEL_ID1_800X600 0x01 /* Resolution: 1024x768, Channel: single, Dithering: Enable */ #define LCD_PANEL_ID2_1024X768 0x02 /* Resolution: 1280x768, Channel: single, Dithering: Enable */ #define LCD_PANEL_ID3_1280X768 0x03 /* Resolution: 1280x1024, Channel: dual, Dithering: Enable */ #define LCD_PANEL_ID4_1280X1024 0x04 /* Resolution: 1400x1050, Channel: dual, Dithering: Enable */ #define LCD_PANEL_ID5_1400X1050 0x05 /* Resolution: 1600x1200, Channel: dual, Dithering: Enable */ #define LCD_PANEL_ID6_1600X1200 0x06 /* Resolution: 1366x768, Channel: single, Dithering: Disable */ #define LCD_PANEL_ID7_1366X768 0x07 /* Resolution: 1024x600, Channel: single, Dithering: Enable*/ #define LCD_PANEL_ID8_1024X600 0x08 /* Resolution: 1280x800, Channel: single, Dithering: Enable*/ #define LCD_PANEL_ID9_1280X800 0x09 /* Resolution: 800x480, Channel: single, Dithering: Enable*/ #define LCD_PANEL_IDA_800X480 0x0A /* Resolution: 1360x768, Channel: single, Dithering: Disable*/ #define LCD_PANEL_IDB_1360X768 0x0B /* Resolution: 480x640, Channel: single, Dithering: Enable */ #define LCD_PANEL_IDC_480X640 0x0C /* Resolution: 1200x900, Channel: single, Dithering: Disable */ #define LCD_PANEL_IDD_1200X900 0x0D extern int viafb_LCD2_ON; extern int viafb_LCD_ON; extern int viafb_DVI_ON; void viafb_disable_lvds_vt1636(struct lvds_setting_information *plvds_setting_info, struct lvds_chip_information *plvds_chip_info); void viafb_enable_lvds_vt1636(struct lvds_setting_information *plvds_setting_info, struct lvds_chip_information *plvds_chip_info); void viafb_lcd_disable(void); void viafb_lcd_enable(void); void viafb_init_lcd_size(void); void viafb_init_lvds_output_interface(struct lvds_chip_information *plvds_chip_info, struct lvds_setting_information *plvds_setting_info); void viafb_lcd_set_mode(const struct fb_var_screeninfo *var, u16 cxres, u16 cyres, struct lvds_setting_information *plvds_setting_info, struct lvds_chip_information *plvds_chip_info); bool viafb_lvds_trasmitter_identify(void); void viafb_init_lvds_output_interface(struct lvds_chip_information *plvds_chip_info, struct lvds_setting_information *plvds_setting_info); bool viafb_lcd_get_mobile_state(bool *mobile); #endif /* __LCD_H__ */ lue='4'>4space:mode:
authorArd Biesheuvel <ard.biesheuvel@linaro.org>2017-02-01 17:45:02 +0000
committerIngo Molnar <mingo@kernel.org>2017-02-01 21:17:49 +0100
commitc8f325a59cfc718d13a50fbc746ed9b415c25e92 (patch)
treed53fbdac9d0781e39a13b2ac6b2bd258cf3b4140 /include/net/tc_act/tc_ife.h
parentbf29bddf0417a4783da3b24e8c9e017ac649326f (diff)
efi/fdt: Avoid FDT manipulation after ExitBootServices()
Some AArch64 UEFI implementations disable the MMU in ExitBootServices(), after which unaligned accesses to RAM are no longer supported. Commit: abfb7b686a3e ("efi/libstub/arm*: Pass latest memory map to the kernel") fixed an issue in the memory map handling of the stub FDT code, but inadvertently created an issue with such firmware, by moving some of the FDT manipulation to after the invocation of ExitBootServices(). Given that the stub's libfdt implementation uses the ordinary, accelerated string functions, which rely on hardware handling of unaligned accesses, manipulating the FDT with the MMU off may result in alignment faults. So fix the situation by moving the update_fdt_memmap() call into the callback function invoked by efi_exit_boot_services() right before it calls the ExitBootServices() UEFI service (which is arguably a better place for it anyway) Note that disabling the MMU in ExitBootServices() is not compliant with the UEFI spec, and carries great risk due to the fact that switching from cached to uncached memory accesses halfway through compiler generated code (i.e., involving a stack) can never be done in a way that is architecturally safe. Fixes: abfb7b686a3e ("efi/libstub/arm*: Pass latest memory map to the kernel") Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Tested-by: Riku Voipio <riku.voipio@linaro.org> Cc: <stable@vger.kernel.org> Cc: mark.rutland@arm.com Cc: linux-efi@vger.kernel.org Cc: matt@codeblueprint.co.uk Cc: leif.lindholm@linaro.org Cc: linux-arm-kernel@lists.infradead.org Link: http://lkml.kernel.org/r/1485971102-23330-2-git-send-email-ard.biesheuvel@linaro.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'include/net/tc_act/tc_ife.h')