| /* SPDX-License-Identifier: GPL-2.0-only */ |
| |
| #include <console/console.h> |
| #include <device/device.h> |
| #include <arch/io.h> |
| #include <drivers/intel/gma/int15.h> |
| #include <ec/acpi/ec.h> |
| |
| #include "m3885.h" |
| |
| #define DUMP_RUNTIME_REGISTERS 0 |
| |
| static void backlight_enable(void) |
| { |
| printk(BIOS_DEBUG, "Display I/O: 0x%02x\n", inb(0x60f)); |
| } |
| |
| #if DUMP_RUNTIME_REGISTERS |
| static void dump_runtime_registers(void) |
| { |
| int i; |
| |
| printk(BIOS_DEBUG, "SuperIO runtime register block:\n"); |
| for (i = 0; i < 0x10; i++) |
| printk(BIOS_DEBUG, "%02x ", i); |
| printk(BIOS_DEBUG, "\n"); |
| for (i = 0; i < 0x10; i++) |
| printk(BIOS_DEBUG, "%02x ", inb(0x600 +i)); |
| printk(BIOS_DEBUG, "\n"); |
| } |
| #endif |
| |
| static void mainboard_final(struct device *dev) |
| { |
| /* Enable Dummy DCC ON# for DVI */ |
| printk(BIOS_DEBUG, "Laptop handling...\n"); |
| outb(inb(0x60f) & ~(1 << 5), 0x60f); |
| } |
| |
| static void mainboard_enable(struct device *dev) |
| { |
| /* Configure the MultiKey controller */ |
| |
| /* Enable LCD Backlight */ |
| backlight_enable(); |
| |
| /* Disable Dummy DCC -> GP45 = 1 */ |
| outb(inb(0x60f) | (1 << 5), 0x60f); |
| |
| /* LCD panel type is SIO GPIO40-43 */ |
| install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_INT_LVDS, GMA_INT15_PANEL_FIT_DEFAULT, GMA_INT15_BOOT_DISPLAY_DEFAULT, 3); |
| |
| #if DUMP_RUNTIME_REGISTERS |
| dump_runtime_registers(); |
| #endif |
| |
| dev->ops->final = mainboard_final; |
| } |
| |
| struct chip_operations mainboard_ops = { |
| .enable_dev = mainboard_enable, |
| }; |