Check that a PCIe port isn't disabled in the device tree.
authorkettenis <kettenis@openbsd.org>
Thu, 9 Mar 2023 19:48:42 +0000 (19:48 +0000)
committerkettenis <kettenis@openbsd.org>
Thu, 9 Mar 2023 19:48:42 +0000 (19:48 +0000)
ok patrick@

sys/arch/arm64/dev/aplpcie.c

index 99bddf5..125bd9f 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: aplpcie.c,v 1.14 2023/01/01 11:29:09 kettenis Exp $   */
+/*     $OpenBSD: aplpcie.c,v 1.15 2023/03/09 19:48:42 kettenis Exp $   */
 /*
  * Copyright (c) 2021 Mark Kettenis <kettenis@openbsd.org>
  *
@@ -387,6 +387,7 @@ aplpcie_attach(struct device *parent, struct device *self, void *aux)
 void
 aplpcie_init_port(struct aplpcie_softc *sc, int node)
 {
+       char status[32];
        uint32_t reg[5];
        uint32_t *pwren_gpio;
        uint32_t *reset_gpio;
@@ -394,6 +395,10 @@ aplpcie_init_port(struct aplpcie_softc *sc, int node)
        uint32_t stat;
        int port, timo;
 
+       if (OF_getprop(node, "status", status, sizeof(status)) > 0 &&
+           strcmp(status, "disabled") == 0)
+               return;
+
        if (OF_getpropintarray(node, "reg", reg, sizeof(reg)) != sizeof(reg))
                return;