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