/* SPDX-License-Identifier: GPL-2.0-only */ #include #include #include #include #include "hybrid_graphics.h" #include "chip.h" #include "gmux.h" void early_hybrid_graphics(bool *enable_igd, bool *enable_peg) { const struct device *dev; enum hybrid_graphics_req mode = HYBRID_GRAPHICS_DEFAULT_GPU; /* TODO: Use generic device instead of dummy PNP device */ dev = dev_find_slot_pnp(HYBRID_GRAPHICS_PORT, HYBRID_GRAPHICS_DEVICE); if (!dev || !dev->chip_info) { printk(BIOS_ERR, "Hybrid graphics: ERROR\n"); *enable_igd = true; *enable_peg = false; return; } get_option(&mode, "hybrid_graphics_mode"); if (mode == HYBRID_GRAPHICS_DISCRETE) { printk(BIOS_DEBUG, "Hybrid graphics:" " Disabling integrated GPU.\n"); *enable_igd = false; *enable_peg = true; } else if (mode == HYBRID_GRAPHICS_INTEGRATED) { printk(BIOS_DEBUG, "Hybrid graphics:" " Disabling discrete GPU.\n"); *enable_igd = true; *enable_peg = false; } gmux_dgpu_power_enable(dev, *enable_peg); }