keyboard stuff
1# Quantum Painter Configurables
2QUANTUM_PAINTER_DRIVERS ?=
3QUANTUM_PAINTER_ANIMATIONS_ENABLE ?= yes
4
5QUANTUM_PAINTER_LVGL_INTEGRATION ?= no
6
7# The list of permissible drivers that can be listed in QUANTUM_PAINTER_DRIVERS
8VALID_QUANTUM_PAINTER_DRIVERS := \
9 surface \
10 ili9163_spi \
11 ili9341_spi \
12 ili9486_spi \
13 ili9488_spi \
14 st7735_spi \
15 st7789_spi \
16 gc9a01_spi \
17 gc9107_spi \
18 ssd1351_spi \
19 sh1106_i2c \
20 sh1106_spi \
21 sh1107_i2c \
22 sh1107_spi \
23 ld7032_i2c \
24 ld7032_spi
25
26#-------------------------------------------------------------------------------
27
28OPT_DEFS += -DQUANTUM_PAINTER_ENABLE
29COMMON_VPATH += $(QUANTUM_DIR)/painter \
30 $(QUANTUM_DIR)/unicode
31SRC += \
32 $(QUANTUM_DIR)/unicode/utf8.c \
33 $(QUANTUM_DIR)/color.c \
34 $(QUANTUM_DIR)/painter/qp.c \
35 $(QUANTUM_DIR)/painter/qp_internal.c \
36 $(QUANTUM_DIR)/painter/qp_stream.c \
37 $(QUANTUM_DIR)/painter/qgf.c \
38 $(QUANTUM_DIR)/painter/qff.c \
39 $(QUANTUM_DIR)/painter/qp_draw_core.c \
40 $(QUANTUM_DIR)/painter/qp_draw_codec.c \
41 $(QUANTUM_DIR)/painter/qp_draw_circle.c \
42 $(QUANTUM_DIR)/painter/qp_draw_ellipse.c \
43 $(QUANTUM_DIR)/painter/qp_draw_image.c \
44 $(QUANTUM_DIR)/painter/qp_draw_text.c
45
46# Check if people want animations... enable the defered exec if so.
47ifeq ($(strip $(QUANTUM_PAINTER_ANIMATIONS_ENABLE)), yes)
48 DEFERRED_EXEC_ENABLE := yes
49 OPT_DEFS += -DQUANTUM_PAINTER_ANIMATIONS_ENABLE
50endif
51
52# Comms flags
53QUANTUM_PAINTER_NEEDS_COMMS_DUMMY ?= no
54QUANTUM_PAINTER_NEEDS_COMMS_SPI ?= no
55QUANTUM_PAINTER_NEEDS_COMMS_I2C ?= no
56
57# Handler for each driver
58define handle_quantum_painter_driver
59 CURRENT_PAINTER_DRIVER := $1
60
61 ifeq ($$(filter $$(strip $$(CURRENT_PAINTER_DRIVER)),$$(VALID_QUANTUM_PAINTER_DRIVERS)),)
62 $$(error "$$(CURRENT_PAINTER_DRIVER)" is not a valid Quantum Painter driver)
63
64 else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),surface)
65 QUANTUM_PAINTER_NEEDS_SURFACE := yes
66
67 else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ili9163_spi)
68 QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
69 QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
70 OPT_DEFS += -DQUANTUM_PAINTER_ILI9163_ENABLE -DQUANTUM_PAINTER_ILI9163_SPI_ENABLE
71 COMMON_VPATH += \
72 $(DRIVER_PATH)/painter/tft_panel \
73 $(DRIVER_PATH)/painter/ili9xxx
74 SRC += \
75 $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
76 $(DRIVER_PATH)/painter/ili9xxx/qp_ili9163.c \
77
78 else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ili9341_spi)
79 QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
80 QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
81 OPT_DEFS += -DQUANTUM_PAINTER_ILI9341_ENABLE -DQUANTUM_PAINTER_ILI9341_SPI_ENABLE
82 COMMON_VPATH += \
83 $(DRIVER_PATH)/painter/tft_panel \
84 $(DRIVER_PATH)/painter/ili9xxx
85 SRC += \
86 $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
87 $(DRIVER_PATH)/painter/ili9xxx/qp_ili9341.c \
88
89 else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ili9486_spi)
90 QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
91 QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
92 OPT_DEFS += -DQUANTUM_PAINTER_ILI9486_ENABLE -DQUANTUM_PAINTER_ILI9486_SPI_ENABLE
93 COMMON_VPATH += \
94 $(DRIVER_PATH)/painter/tft_panel \
95 $(DRIVER_PATH)/painter/ili9xxx
96 SRC += \
97 $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
98 $(DRIVER_PATH)/painter/ili9xxx/qp_ili9486.c \
99
100 else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ili9488_spi)
101 QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
102 QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
103 OPT_DEFS += -DQUANTUM_PAINTER_ILI9488_ENABLE -DQUANTUM_PAINTER_ILI9488_SPI_ENABLE
104 COMMON_VPATH += \
105 $(DRIVER_PATH)/painter/tft_panel \
106 $(DRIVER_PATH)/painter/ili9xxx
107 SRC += \
108 $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
109 $(DRIVER_PATH)/painter/ili9xxx/qp_ili9488.c \
110
111 else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),st7735_spi)
112 QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
113 QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
114 OPT_DEFS += -DQUANTUM_PAINTER_ST7735_ENABLE -DQUANTUM_PAINTER_ST7735_SPI_ENABLE
115 COMMON_VPATH += \
116 $(DRIVER_PATH)/painter/tft_panel \
117 $(DRIVER_PATH)/painter/st77xx
118 SRC += \
119 $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
120 $(DRIVER_PATH)/painter/st77xx/qp_st7735.c
121
122 else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),st7789_spi)
123 QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
124 QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
125 OPT_DEFS += -DQUANTUM_PAINTER_ST7789_ENABLE -DQUANTUM_PAINTER_ST7789_SPI_ENABLE
126 COMMON_VPATH += \
127 $(DRIVER_PATH)/painter/tft_panel \
128 $(DRIVER_PATH)/painter/st77xx
129 SRC += \
130 $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
131 $(DRIVER_PATH)/painter/st77xx/qp_st7789.c
132
133 else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),gc9a01_spi)
134 QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
135 QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
136 OPT_DEFS += -DQUANTUM_PAINTER_GC9A01_ENABLE -DQUANTUM_PAINTER_GC9A01_SPI_ENABLE
137 COMMON_VPATH += \
138 $(DRIVER_PATH)/painter/tft_panel \
139 $(DRIVER_PATH)/painter/gc9xxx
140 SRC += \
141 $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
142 $(DRIVER_PATH)/painter/gc9xxx/qp_gc9a01.c
143
144 else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),gc9107_spi)
145 QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
146 QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
147 OPT_DEFS += -DQUANTUM_PAINTER_GC9107_ENABLE -DQUANTUM_PAINTER_GC9107_SPI_ENABLE
148 COMMON_VPATH += \
149 $(DRIVER_PATH)/painter/tft_panel \
150 $(DRIVER_PATH)/painter/gc9xxx
151 SRC += \
152 $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
153 $(DRIVER_PATH)/painter/gc9xxx/qp_gc9107.c
154
155 else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ssd1351_spi)
156 QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
157 QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
158 OPT_DEFS += -DQUANTUM_PAINTER_SSD1351_ENABLE -DQUANTUM_PAINTER_SSD1351_SPI_ENABLE
159 COMMON_VPATH += \
160 $(DRIVER_PATH)/painter/tft_panel \
161 $(DRIVER_PATH)/painter/ssd1351
162 SRC += \
163 $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
164 $(DRIVER_PATH)/painter/ssd1351/qp_ssd1351.c
165
166 else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),sh1106_spi)
167 QUANTUM_PAINTER_NEEDS_SURFACE := yes
168 QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
169 QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
170 OPT_DEFS += -DQUANTUM_PAINTER_SH1106_ENABLE -DQUANTUM_PAINTER_SH1106_SPI_ENABLE
171 COMMON_VPATH += \
172 $(DRIVER_PATH)/painter/oled_panel \
173 $(DRIVER_PATH)/painter/sh1106
174 SRC += \
175 $(DRIVER_PATH)/painter/oled_panel/qp_oled_panel.c \
176 $(DRIVER_PATH)/painter/sh1106/qp_sh1106.c
177
178 else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),sh1106_i2c)
179 QUANTUM_PAINTER_NEEDS_SURFACE := yes
180 QUANTUM_PAINTER_NEEDS_COMMS_I2C := yes
181 OPT_DEFS += -DQUANTUM_PAINTER_SH1106_ENABLE -DQUANTUM_PAINTER_SH1106_I2C_ENABLE
182 COMMON_VPATH += \
183 $(DRIVER_PATH)/painter/oled_panel \
184 $(DRIVER_PATH)/painter/sh1106
185 SRC += \
186 $(DRIVER_PATH)/painter/oled_panel/qp_oled_panel.c \
187 $(DRIVER_PATH)/painter/sh1106/qp_sh1106.c
188
189 else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),sh1107_spi)
190 QUANTUM_PAINTER_NEEDS_SURFACE := yes
191 QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
192 QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
193 OPT_DEFS += -DQUANTUM_PAINTER_SH1107_ENABLE -DQUANTUM_PAINTER_SH1107_SPI_ENABLE
194 COMMON_VPATH += \
195 $(DRIVER_PATH)/painter/oled_panel \
196 $(DRIVER_PATH)/painter/sh1107
197 SRC += \
198 $(DRIVER_PATH)/painter/oled_panel/qp_oled_panel.c \
199 $(DRIVER_PATH)/painter/sh1107/qp_sh1107.c
200
201 else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),sh1107_i2c)
202 QUANTUM_PAINTER_NEEDS_SURFACE := yes
203 QUANTUM_PAINTER_NEEDS_COMMS_I2C := yes
204 OPT_DEFS += -DQUANTUM_PAINTER_SH1107_ENABLE -DQUANTUM_PAINTER_SH1107_I2C_ENABLE
205 COMMON_VPATH += \
206 $(DRIVER_PATH)/painter/oled_panel \
207 $(DRIVER_PATH)/painter/sh1107
208 SRC += \
209 $(DRIVER_PATH)/painter/oled_panel/qp_oled_panel.c \
210 $(DRIVER_PATH)/painter/sh1107/qp_sh1107.c
211
212 else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ld7032_spi)
213 QUANTUM_PAINTER_NEEDS_SURFACE := yes
214 QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
215 QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
216 OPT_DEFS += -DQUANTUM_PAINTER_LD7032_ENABLE -DQUANTUM_PAINTER_LD7032_SPI_ENABLE
217 COMMON_VPATH += \
218 $(DRIVER_PATH)/painter/oled_panel \
219 $(DRIVER_PATH)/painter/ld7032
220 SRC += \
221 $(DRIVER_PATH)/painter/oled_panel/qp_oled_panel.c \
222 $(DRIVER_PATH)/painter/ld7032/qp_ld7032.c
223
224 else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ld7032_i2c)
225 QUANTUM_PAINTER_NEEDS_SURFACE := yes
226 QUANTUM_PAINTER_NEEDS_COMMS_I2C := yes
227 OPT_DEFS += -DQUANTUM_PAINTER_LD7032_ENABLE -DQUANTUM_PAINTER_LD7032_I2C_ENABLE
228 COMMON_VPATH += \
229 $(DRIVER_PATH)/painter/oled_panel \
230 $(DRIVER_PATH)/painter/ld7032
231 SRC += \
232 $(DRIVER_PATH)/painter/oled_panel/qp_oled_panel.c \
233 $(DRIVER_PATH)/painter/ld7032/qp_ld7032.c
234
235 endif
236endef
237
238# Iterate through the listed drivers for the build, including what's necessary
239$(foreach qp_driver,$(QUANTUM_PAINTER_DRIVERS),$(eval $(call handle_quantum_painter_driver,$(qp_driver))))
240
241# If a surface is needed, set up the required files
242ifeq ($(strip $(QUANTUM_PAINTER_NEEDS_SURFACE)), yes)
243 QUANTUM_PAINTER_NEEDS_COMMS_DUMMY := yes
244 OPT_DEFS += -DQUANTUM_PAINTER_SURFACE_ENABLE
245 COMMON_VPATH += \
246 $(DRIVER_PATH)/painter/generic
247 SRC += \
248 $(DRIVER_PATH)/painter/generic/qp_surface_common.c \
249 $(DRIVER_PATH)/painter/generic/qp_surface_mono1bpp.c \
250 $(DRIVER_PATH)/painter/generic/qp_surface_rgb565.c \
251 $(DRIVER_PATH)/painter/generic/qp_surface_rgb888.c
252endif
253
254# If dummy comms is needed, set up the required files
255ifeq ($(strip $(QUANTUM_PAINTER_NEEDS_COMMS_DUMMY)), yes)
256 OPT_DEFS += -DQUANTUM_PAINTER_DUMMY_COMMS_ENABLE
257 VPATH += $(DRIVER_PATH)/painter/comms
258 SRC += \
259 $(QUANTUM_DIR)/painter/qp_comms.c \
260 $(DRIVER_PATH)/painter/comms/qp_comms_dummy.c
261endif
262
263# If SPI comms is needed, set up the required files
264ifeq ($(strip $(QUANTUM_PAINTER_NEEDS_COMMS_SPI)), yes)
265 OPT_DEFS += -DQUANTUM_PAINTER_SPI_ENABLE
266 SPI_DRIVER_REQUIRED = yes
267 VPATH += $(DRIVER_PATH)/painter/comms
268 SRC += \
269 $(QUANTUM_DIR)/painter/qp_comms.c \
270 $(DRIVER_PATH)/painter/comms/qp_comms_spi.c
271
272 ifeq ($(strip $(QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET)), yes)
273 OPT_DEFS += -DQUANTUM_PAINTER_SPI_DC_RESET_ENABLE
274 endif
275endif
276
277# If I2C comms is needed, set up the required files
278ifeq ($(strip $(QUANTUM_PAINTER_NEEDS_COMMS_I2C)), yes)
279 OPT_DEFS += -DQUANTUM_PAINTER_I2C_ENABLE
280 I2C_DRIVER_REQUIRED = yes
281 VPATH += $(DRIVER_PATH)/painter/comms
282 SRC += \
283 $(QUANTUM_DIR)/painter/qp_comms.c \
284 $(DRIVER_PATH)/painter/comms/qp_comms_i2c.c
285endif
286
287# Check if LVGL needs to be enabled
288ifeq ($(strip $(QUANTUM_PAINTER_LVGL_INTEGRATION)), yes)
289 include $(QUANTUM_DIR)/painter/lvgl/rules.mk
290endif