There's still a lot of unrecognized devices on the P1 Gen 3, and the
install process is not quite smooth yet, but it does eventually boot
once installed with a GENERIC* kernel from -current. (See
https://marc.info/?l=openbsd-bugs&m=160011933402270&w=2 for dmesg and
vitals from the unmodified kernel.)

The audio device seems compatible with azalia, but I haven't done a
lot of thorough testing: adding the device ID to be detected for the
driver means audio-out works.

The laptop comes with an AX201 card for networking, but the PCI device
ID is unrecognized. iwx has a TODO mentioning the 06f0 ID, which this
one has. Fudging iwx to accept it seems to work OK, but is a little
buggy. Specifically, noticed slowness to acquire DHCP lease and things
can get wedged in exceptional circumstances such that the iwx device
becomes undetectable unless a full power cycle is taken. I haven't yet
fully reproduced the latter issue, nor eliminated local effects for
the DHCP problem.

Ultimately, this all may not be correct, but it does make the devices
sort of usable. FWIW, here's the diff.

Index: sys/dev/pci/pcidevs
===================================================================
RCS file: /cvs/src/sys/dev/pci/pcidevs,v
retrieving revision 1.1932
diff -u -p -u -r1.1932 pcidevs
--- sys/dev/pci/pcidevs 23 Aug 2020 19:24:22 -0000 1.1932
+++ sys/dev/pci/pcidevs 24 Sep 2020 04:40:31 -0000
@@ -3248,6 +3248,8 @@ product INTEL 82426EX 0x0486 82426EX IS
 product INTEL PCMC 0x04a3 82434LX/NX
 product INTEL GDT_RAID1 0x0600 GDT RAID
 product INTEL GDT_RAID2 0x061f GDT RAID
+product INTEL COMETLAKE_CAVS 0x06c8  Comet Lake PCH cAVS
+product INTEL WL_22500_3 0x06f0 Wi-Fi 6 AX201
 product INTEL WL_6150_1 0x0885 Centrino Wireless-N 6150
 product INTEL WL_6150_2 0x0886 Centrino Wireless-N 6150
 product INTEL WL_2230_1 0x0887 Centrino Wireless-N 2230
Index: sys/dev/pci/azalia.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/azalia.c,v
retrieving revision 1.257
diff -u -p -u -r1.257 azalia.c
--- sys/dev/pci/azalia.c 9 Jun 2020 03:36:05 -0000 1.257
+++ sys/dev/pci/azalia.c 24 Sep 2020 04:40:31 -0000
@@ -465,6 +465,7 @@ azalia_configure_pci(azalia_t *az)
  case PCI_PRODUCT_INTEL_C610_HDA:
  case PCI_PRODUCT_INTEL_BSW_HDA:
  case PCI_PRODUCT_INTEL_APOLLOLAKE_HDA:
+ case PCI_PRODUCT_INTEL_COMETLAKE_CAVS:
  reg = azalia_pci_read(az->pc, az->tag,
      INTEL_PCIE_NOSNOOP_REG);
  reg &= INTEL_PCIE_NOSNOOP_MASK;
@@ -476,7 +477,8 @@ azalia_configure_pci(azalia_t *az)

 const struct pci_matchid azalia_pci_devices[] = {
  { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_200SERIES_U_HDA },
- { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_300SERIES_U_HDA }
+ { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_300SERIES_U_HDA },
+ { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_COMETLAKE_CAVS }
 };

 int
Index: sys/dev/pci/if_iwx.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/if_iwx.c,v
retrieving revision 1.44
diff -u -p -u -r1.44 if_iwx.c
--- sys/dev/pci/if_iwx.c 26 Aug 2020 17:12:00 -0000 1.44
+++ sys/dev/pci/if_iwx.c 24 Sep 2020 04:40:31 -0000
@@ -7708,6 +7708,7 @@ typedef void *iwx_match_t;
 static const struct pci_matchid iwx_devices[] = {
  { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_22500_1 },
  { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_22500_2 },
+ { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_22500_3 },
 };

 static const struct pci_matchid iwx_subsystem_id_ax201[] = {
@@ -7746,6 +7747,7 @@ iwx_match(struct device *parent, iwx_mat
  case PCI_PRODUCT_INTEL_WL_22500_1: /* AX200 */
  return 1; /* match any device */
  case PCI_PRODUCT_INTEL_WL_22500_2: /* AX201 */
+ case PCI_PRODUCT_INTEL_WL_22500_3: /* AX201 */
  for (i = 0; i < nitems(iwx_subsystem_id_ax201); i++) {
  if (svid == iwx_subsystem_id_ax201[i].pm_vid &&
      spid == iwx_subsystem_id_ax201[i].pm_pid)
@@ -7922,6 +7924,7 @@ iwx_attach(struct device *parent, struct
  sc->sc_uhb_supported = 0;
  break;
  case PCI_PRODUCT_INTEL_WL_22500_2:
+ case PCI_PRODUCT_INTEL_WL_22500_3:
  sc->sc_fwname = "iwx-QuZ-a0-hr-b0-48";
  sc->sc_device_family = IWX_DEVICE_FAMILY_22000;
  sc->sc_fwdmasegsz = IWX_FWDMASEGSZ_8000;

Reply via email to