diff --git a/sway/main.c b/sway/main.c index 82375e0b..6d13955c 100644 --- a/sway/main.c +++ b/sway/main.c @@ -53,6 +53,46 @@ static void wlc_log_handler(enum wlc_log_type type, const char *str) { } } +void detect_raspi() { + bool raspi = false; + FILE *f = fopen("/sys/firmware/devicetree/base/model", "r"); + if (!f) { + return; + } + char *line; + while(!feof(f)) { + if (!(line = read_line(f))) { + break; + } + if (strstr(line, "Raspberry Pi")) { + raspi = true; + } + free(line); + } + fclose(f); + FILE *g = fopen("/proc/modules", "r"); + if (!g) { + return; + } + bool vc4 = false; + while (!feof(g)) { + if (!(line = read_line(g))) { + break; + } + if (strstr(line, "vc4")) { + vc4 = true; + } + free(line); + } + fclose(g); + if (!vc4 && raspi) { + fprintf(stderr, "\x1B[1;31mWarning: You have a " + "Raspberry Pi, but the vc4 Module is " + "not loaded! Set 'dtoverlay=vc4-kms-v3d'" + "in /boot/config.txt and reboot.\x1B[0m\n"); + } +} + void detect_proprietary() { FILE *f = fopen("/proc/modules", "r"); if (!f) { @@ -366,6 +406,7 @@ int main(int argc, char **argv) { log_distro(); log_env(); detect_proprietary(); + detect_raspi(); input_devices = create_list();