fa8b2484d0
- Pull in fixes for TSC calibration driver preference (prefer pmtimer over PIT) to boot on Apollo Lake systems with no PIT - Fix pmtimer calibration to not take forever to fail on kvm. Signed-off-by: Peter Jones <pjones@redhat.com>
124 lines
3.7 KiB
Diff
124 lines
3.7 KiB
Diff
From d11ced1e1fb93676942e51618eb53c140f541890 Mon Sep 17 00:00:00 2001
|
|
From: Vladimir Serbinenko <phcoder@gmail.com>
|
|
Date: Mon, 8 May 2017 22:14:28 +0200
|
|
Subject: [PATCH 029/198] arm_coreboot: Support EHCI.
|
|
|
|
---
|
|
gentpl.py | 2 +-
|
|
grub-core/Makefile.core.def | 2 ++
|
|
grub-core/bus/usb/ehci-fdt.c | 45 ++++++++++++++++++++++++++++++++++++++++++++
|
|
grub-core/bus/usb/usbtrans.c | 2 +-
|
|
include/grub/usb.h | 4 ++++
|
|
5 files changed, 53 insertions(+), 2 deletions(-)
|
|
create mode 100644 grub-core/bus/usb/ehci-fdt.c
|
|
|
|
diff --git a/gentpl.py b/gentpl.py
|
|
index ed268178b..da67965a4 100644
|
|
--- a/gentpl.py
|
|
+++ b/gentpl.py
|
|
@@ -63,7 +63,7 @@ GROUPS["cmos"] = GROUPS["x86"][:] + ["mips_loongson", "mips_qemu_mips",
|
|
"sparc64_ieee1275", "powerpc_ieee1275"]
|
|
GROUPS["cmos"].remove("i386_efi"); GROUPS["cmos"].remove("x86_64_efi");
|
|
GROUPS["pci"] = GROUPS["x86"] + ["mips_loongson"]
|
|
-GROUPS["usb"] = GROUPS["pci"]
|
|
+GROUPS["usb"] = GROUPS["pci"] + ["arm_coreboot"]
|
|
|
|
# If gfxterm is main output console integrate it into kernel
|
|
GROUPS["videoinkernel"] = ["mips_loongson", "i386_coreboot", "arm_coreboot" ]
|
|
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
|
index 4745eb4d9..5ce506597 100644
|
|
--- a/grub-core/Makefile.core.def
|
|
+++ b/grub-core/Makefile.core.def
|
|
@@ -593,8 +593,10 @@ module = {
|
|
module = {
|
|
name = ehci;
|
|
common = bus/usb/ehci.c;
|
|
+ arm_coreboot = bus/usb/ehci-fdt.c;
|
|
pci = bus/usb/ehci-pci.c;
|
|
enable = pci;
|
|
+ enable = arm_coreboot;
|
|
};
|
|
|
|
module = {
|
|
diff --git a/grub-core/bus/usb/ehci-fdt.c b/grub-core/bus/usb/ehci-fdt.c
|
|
new file mode 100644
|
|
index 000000000..29b50bdd5
|
|
--- /dev/null
|
|
+++ b/grub-core/bus/usb/ehci-fdt.c
|
|
@@ -0,0 +1,45 @@
|
|
+/* ehci.c - EHCI Support. */
|
|
+/*
|
|
+ * GRUB -- GRand Unified Bootloader
|
|
+ * Copyright (C) 2011 Free Software Foundation, Inc.
|
|
+ *
|
|
+ * GRUB is free software: you can redistribute it and/or modify
|
|
+ * it under the terms of the GNU General Public License as published by
|
|
+ * the Free Software Foundation, either version 3 of the License, or
|
|
+ * (at your option) any later version.
|
|
+ *
|
|
+ * GRUB is distributed in the hope that it will be useful,
|
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+ * GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
|
+ */
|
|
+
|
|
+#include <grub/misc.h>
|
|
+#include <grub/mm.h>
|
|
+#include <grub/time.h>
|
|
+#include <grub/usb.h>
|
|
+#include <grub/fdtbus.h>
|
|
+
|
|
+static grub_err_t
|
|
+ehci_attach(const struct grub_fdtbus_dev *dev)
|
|
+{
|
|
+ grub_dprintf ("ehci", "Found generic-ehci\n");
|
|
+
|
|
+ grub_ehci_init_device (grub_fdtbus_map_reg (dev, 0, 0));
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+struct grub_fdtbus_driver ehci =
|
|
+{
|
|
+ .compatible = "generic-ehci",
|
|
+ .attach = ehci_attach
|
|
+};
|
|
+
|
|
+void
|
|
+grub_ehci_pci_scan (void)
|
|
+{
|
|
+ grub_fdtbus_register (&ehci);
|
|
+}
|
|
diff --git a/grub-core/bus/usb/usbtrans.c b/grub-core/bus/usb/usbtrans.c
|
|
index 9266e4931..85f081fff 100644
|
|
--- a/grub-core/bus/usb/usbtrans.c
|
|
+++ b/grub-core/bus/usb/usbtrans.c
|
|
@@ -18,7 +18,7 @@
|
|
*/
|
|
|
|
#include <grub/dl.h>
|
|
-#include <grub/pci.h>
|
|
+#include <grub/dma.h>
|
|
#include <grub/mm.h>
|
|
#include <grub/misc.h>
|
|
#include <grub/usb.h>
|
|
diff --git a/include/grub/usb.h b/include/grub/usb.h
|
|
index 11d96481f..512ae1dd0 100644
|
|
--- a/include/grub/usb.h
|
|
+++ b/include/grub/usb.h
|
|
@@ -321,5 +321,9 @@ grub_usb_err_t
|
|
grub_usb_check_transfer (grub_usb_transfer_t trans, grub_size_t *actual);
|
|
void
|
|
grub_usb_cancel_transfer (grub_usb_transfer_t trans);
|
|
+void
|
|
+grub_ehci_init_device (volatile void *regs);
|
|
+void
|
|
+grub_ehci_pci_scan (void);
|
|
|
|
#endif /* GRUB_USB_H */
|
|
--
|
|
2.14.3
|
|
|