1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
2 | #ifndef _LINUX_SYSFB_H |
3 | #define _LINUX_SYSFB_H |
4 | |
5 | /* |
6 | * Generic System Framebuffers on x86 |
7 | * Copyright (c) 2012-2013 David Herrmann <dh.herrmann@gmail.com> |
8 | */ |
9 | |
10 | #include <linux/kernel.h> |
11 | #include <linux/platform_data/simplefb.h> |
12 | |
13 | struct screen_info; |
14 | |
15 | enum { |
16 | M_I17, /* 17-Inch iMac */ |
17 | M_I20, /* 20-Inch iMac */ |
18 | M_I20_SR, /* 20-Inch iMac (Santa Rosa) */ |
19 | M_I24, /* 24-Inch iMac */ |
20 | M_I24_8_1, /* 24-Inch iMac, 8,1th gen */ |
21 | M_I24_10_1, /* 24-Inch iMac, 10,1th gen */ |
22 | M_I27_11_1, /* 27-Inch iMac, 11,1th gen */ |
23 | M_MINI, /* Mac Mini */ |
24 | M_MINI_3_1, /* Mac Mini, 3,1th gen */ |
25 | M_MINI_4_1, /* Mac Mini, 4,1th gen */ |
26 | M_MB, /* MacBook */ |
27 | M_MB_2, /* MacBook, 2nd rev. */ |
28 | M_MB_3, /* MacBook, 3rd rev. */ |
29 | M_MB_5_1, /* MacBook, 5th rev. */ |
30 | M_MB_6_1, /* MacBook, 6th rev. */ |
31 | M_MB_7_1, /* MacBook, 7th rev. */ |
32 | M_MB_SR, /* MacBook, 2nd gen, (Santa Rosa) */ |
33 | M_MBA, /* MacBook Air */ |
34 | M_MBA_3, /* Macbook Air, 3rd rev */ |
35 | M_MBP, /* MacBook Pro */ |
36 | M_MBP_2, /* MacBook Pro 2nd gen */ |
37 | M_MBP_2_2, /* MacBook Pro 2,2nd gen */ |
38 | M_MBP_SR, /* MacBook Pro (Santa Rosa) */ |
39 | M_MBP_4, /* MacBook Pro, 4th gen */ |
40 | M_MBP_5_1, /* MacBook Pro, 5,1th gen */ |
41 | M_MBP_5_2, /* MacBook Pro, 5,2th gen */ |
42 | M_MBP_5_3, /* MacBook Pro, 5,3rd gen */ |
43 | M_MBP_6_1, /* MacBook Pro, 6,1th gen */ |
44 | M_MBP_6_2, /* MacBook Pro, 6,2th gen */ |
45 | M_MBP_7_1, /* MacBook Pro, 7,1th gen */ |
46 | M_MBP_8_2, /* MacBook Pro, 8,2nd gen */ |
47 | M_UNKNOWN /* placeholder */ |
48 | }; |
49 | |
50 | struct efifb_dmi_info { |
51 | char *optname; |
52 | unsigned long base; |
53 | int stride; |
54 | int width; |
55 | int height; |
56 | int flags; |
57 | }; |
58 | |
59 | #ifdef CONFIG_SYSFB |
60 | |
61 | void sysfb_disable(void); |
62 | |
63 | #else /* CONFIG_SYSFB */ |
64 | |
65 | static inline void sysfb_disable(void) |
66 | { |
67 | } |
68 | |
69 | #endif /* CONFIG_SYSFB */ |
70 | |
71 | #ifdef CONFIG_EFI |
72 | |
73 | extern struct efifb_dmi_info efifb_dmi_list[]; |
74 | void sysfb_apply_efi_quirks(void); |
75 | void sysfb_set_efifb_fwnode(struct platform_device *pd); |
76 | |
77 | #else /* CONFIG_EFI */ |
78 | |
79 | static inline void sysfb_apply_efi_quirks(void) |
80 | { |
81 | } |
82 | |
83 | static inline void sysfb_set_efifb_fwnode(struct platform_device *pd) |
84 | { |
85 | } |
86 | |
87 | #endif /* CONFIG_EFI */ |
88 | |
89 | #ifdef CONFIG_SYSFB_SIMPLEFB |
90 | |
91 | bool sysfb_parse_mode(const struct screen_info *si, |
92 | struct simplefb_platform_data *mode); |
93 | struct platform_device *sysfb_create_simplefb(const struct screen_info *si, |
94 | const struct simplefb_platform_data *mode); |
95 | |
96 | #else /* CONFIG_SYSFB_SIMPLE */ |
97 | |
98 | static inline bool sysfb_parse_mode(const struct screen_info *si, |
99 | struct simplefb_platform_data *mode) |
100 | { |
101 | return false; |
102 | } |
103 | |
104 | static inline struct platform_device *sysfb_create_simplefb(const struct screen_info *si, |
105 | const struct simplefb_platform_data *mode) |
106 | { |
107 | return ERR_PTR(-EINVAL); |
108 | } |
109 | |
110 | #endif /* CONFIG_SYSFB_SIMPLE */ |
111 | |
112 | #endif /* _LINUX_SYSFB_H */ |
113 | |