18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 28c2ecf20Sopenharmony_ci#ifndef _ARCH_X86_KERNEL_SYSFB_H 38c2ecf20Sopenharmony_ci#define _ARCH_X86_KERNEL_SYSFB_H 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci/* 68c2ecf20Sopenharmony_ci * Generic System Framebuffers on x86 78c2ecf20Sopenharmony_ci * Copyright (c) 2012-2013 David Herrmann <dh.herrmann@gmail.com> 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#include <linux/kernel.h> 118c2ecf20Sopenharmony_ci#include <linux/platform_data/simplefb.h> 128c2ecf20Sopenharmony_ci#include <linux/screen_info.h> 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_cienum { 158c2ecf20Sopenharmony_ci M_I17, /* 17-Inch iMac */ 168c2ecf20Sopenharmony_ci M_I20, /* 20-Inch iMac */ 178c2ecf20Sopenharmony_ci M_I20_SR, /* 20-Inch iMac (Santa Rosa) */ 188c2ecf20Sopenharmony_ci M_I24, /* 24-Inch iMac */ 198c2ecf20Sopenharmony_ci M_I24_8_1, /* 24-Inch iMac, 8,1th gen */ 208c2ecf20Sopenharmony_ci M_I24_10_1, /* 24-Inch iMac, 10,1th gen */ 218c2ecf20Sopenharmony_ci M_I27_11_1, /* 27-Inch iMac, 11,1th gen */ 228c2ecf20Sopenharmony_ci M_MINI, /* Mac Mini */ 238c2ecf20Sopenharmony_ci M_MINI_3_1, /* Mac Mini, 3,1th gen */ 248c2ecf20Sopenharmony_ci M_MINI_4_1, /* Mac Mini, 4,1th gen */ 258c2ecf20Sopenharmony_ci M_MB, /* MacBook */ 268c2ecf20Sopenharmony_ci M_MB_2, /* MacBook, 2nd rev. */ 278c2ecf20Sopenharmony_ci M_MB_3, /* MacBook, 3rd rev. */ 288c2ecf20Sopenharmony_ci M_MB_5_1, /* MacBook, 5th rev. */ 298c2ecf20Sopenharmony_ci M_MB_6_1, /* MacBook, 6th rev. */ 308c2ecf20Sopenharmony_ci M_MB_7_1, /* MacBook, 7th rev. */ 318c2ecf20Sopenharmony_ci M_MB_SR, /* MacBook, 2nd gen, (Santa Rosa) */ 328c2ecf20Sopenharmony_ci M_MBA, /* MacBook Air */ 338c2ecf20Sopenharmony_ci M_MBA_3, /* Macbook Air, 3rd rev */ 348c2ecf20Sopenharmony_ci M_MBP, /* MacBook Pro */ 358c2ecf20Sopenharmony_ci M_MBP_2, /* MacBook Pro 2nd gen */ 368c2ecf20Sopenharmony_ci M_MBP_2_2, /* MacBook Pro 2,2nd gen */ 378c2ecf20Sopenharmony_ci M_MBP_SR, /* MacBook Pro (Santa Rosa) */ 388c2ecf20Sopenharmony_ci M_MBP_4, /* MacBook Pro, 4th gen */ 398c2ecf20Sopenharmony_ci M_MBP_5_1, /* MacBook Pro, 5,1th gen */ 408c2ecf20Sopenharmony_ci M_MBP_5_2, /* MacBook Pro, 5,2th gen */ 418c2ecf20Sopenharmony_ci M_MBP_5_3, /* MacBook Pro, 5,3rd gen */ 428c2ecf20Sopenharmony_ci M_MBP_6_1, /* MacBook Pro, 6,1th gen */ 438c2ecf20Sopenharmony_ci M_MBP_6_2, /* MacBook Pro, 6,2th gen */ 448c2ecf20Sopenharmony_ci M_MBP_7_1, /* MacBook Pro, 7,1th gen */ 458c2ecf20Sopenharmony_ci M_MBP_8_2, /* MacBook Pro, 8,2nd gen */ 468c2ecf20Sopenharmony_ci M_UNKNOWN /* placeholder */ 478c2ecf20Sopenharmony_ci}; 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_cistruct efifb_dmi_info { 508c2ecf20Sopenharmony_ci char *optname; 518c2ecf20Sopenharmony_ci unsigned long base; 528c2ecf20Sopenharmony_ci int stride; 538c2ecf20Sopenharmony_ci int width; 548c2ecf20Sopenharmony_ci int height; 558c2ecf20Sopenharmony_ci int flags; 568c2ecf20Sopenharmony_ci}; 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ci#ifdef CONFIG_EFI 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ciextern struct efifb_dmi_info efifb_dmi_list[]; 618c2ecf20Sopenharmony_civoid sysfb_apply_efi_quirks(void); 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ci#else /* CONFIG_EFI */ 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_cistatic inline void sysfb_apply_efi_quirks(void) 668c2ecf20Sopenharmony_ci{ 678c2ecf20Sopenharmony_ci} 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci#endif /* CONFIG_EFI */ 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ci#ifdef CONFIG_X86_SYSFB 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_cibool parse_mode(const struct screen_info *si, 748c2ecf20Sopenharmony_ci struct simplefb_platform_data *mode); 758c2ecf20Sopenharmony_ciint create_simplefb(const struct screen_info *si, 768c2ecf20Sopenharmony_ci const struct simplefb_platform_data *mode); 778c2ecf20Sopenharmony_ci 788c2ecf20Sopenharmony_ci#else /* CONFIG_X86_SYSFB */ 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_cistatic inline bool parse_mode(const struct screen_info *si, 818c2ecf20Sopenharmony_ci struct simplefb_platform_data *mode) 828c2ecf20Sopenharmony_ci{ 838c2ecf20Sopenharmony_ci return false; 848c2ecf20Sopenharmony_ci} 858c2ecf20Sopenharmony_ci 868c2ecf20Sopenharmony_cistatic inline int create_simplefb(const struct screen_info *si, 878c2ecf20Sopenharmony_ci const struct simplefb_platform_data *mode) 888c2ecf20Sopenharmony_ci{ 898c2ecf20Sopenharmony_ci return -EINVAL; 908c2ecf20Sopenharmony_ci} 918c2ecf20Sopenharmony_ci 928c2ecf20Sopenharmony_ci#endif /* CONFIG_X86_SYSFB */ 938c2ecf20Sopenharmony_ci 948c2ecf20Sopenharmony_ci#endif /* _ARCH_X86_KERNEL_SYSFB_H */ 95