Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Sep 2020 14:58:47 +0000 (UTC)
From:      Andrew Turner <andrew@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r365579 - in head/sys: arm64/include dev/gpio
Message-ID:  <202009101458.08AEwlLT031134@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: andrew
Date: Thu Sep 10 14:58:46 2020
New Revision: 365579
URL: https://svnweb.freebsd.org/changeset/base/365579

Log:
  Move the pl061 acpi attachment earlier
  
  As the pl061 driver can be an interrupt controller attach it earlier in the
  boot so other drivers can use it.
  
  Use a new GPIO xref to not conflict with the existing root interrupt
  controller.
  
  Sponsored by:	Innovate UK

Modified:
  head/sys/arm64/include/intr.h
  head/sys/dev/gpio/pl061_acpi.c

Modified: head/sys/arm64/include/intr.h
==============================================================================
--- head/sys/arm64/include/intr.h	Thu Sep 10 14:13:49 2020	(r365578)
+++ head/sys/arm64/include/intr.h	Thu Sep 10 14:58:46 2020	(r365579)
@@ -51,6 +51,7 @@ void intr_ipi_dispatch(u_int, struct trapframe *);
 #ifdef DEV_ACPI
 #define	ACPI_INTR_XREF	1
 #define	ACPI_MSI_XREF	2
+#define	ACPI_GPIO_XREF	3
 #endif
 
 #endif	/* _MACHINE_INTR_H */

Modified: head/sys/dev/gpio/pl061_acpi.c
==============================================================================
--- head/sys/dev/gpio/pl061_acpi.c	Thu Sep 10 14:13:49 2020	(r365578)
+++ head/sys/dev/gpio/pl061_acpi.c	Thu Sep 10 14:58:46 2020	(r365579)
@@ -76,7 +76,7 @@ pl061_acpi_attach(device_t dev)
 	if (error != 0)
 		return (error);
 
-	if (!intr_pic_register(dev, ACPI_INTR_XREF)) {
+	if (!intr_pic_register(dev, ACPI_GPIO_XREF)) {
 		device_printf(dev, "couldn't register PIC\n");
 		pl061_detach(dev);
 		error = ENXIO;
@@ -98,6 +98,7 @@ DEFINE_CLASS_1(gpio, pl061_acpi_driver, pl061_acpi_met
 
 static devclass_t pl061_devclass;
 
-DRIVER_MODULE(pl061, acpi, pl061_driver, pl061_devclass, NULL, NULL);
+EARLY_DRIVER_MODULE(pl061, acpi, pl061_acpi_driver, pl061_devclass, NULL, NULL,
+    BUS_PASS_INTERRUPT + BUS_PASS_ORDER_LATE);
 MODULE_DEPEND(pl061, acpi, 1, 1, 1);
 MODULE_DEPEND(pl061, gpiobus, 1, 1, 1);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202009101458.08AEwlLT031134>