On Sun, Dec 19, 2021 at 12:20:18PM -0300, João Victor wrote:
> >Synopsis:      <Wifi doesn't work on Samsung NP530XBB-AD2BR notebook>
> >Category:      <kernel>
> >Environment:
>         System      : OpenBSD 7.0
>         Details     : OpenBSD 7.0 (GENERIC.MP) #232: Thu Sep 30 14:25:29
> MDT 2021
>                          dera...@amd64.openbsd.org:
> /usr/src/sys/arch/amd64/compile/GENERIC.MP
> 
>         Architecture: OpenBSD.amd64
>         Machine     : amd64
> >Description:
>         <After installing iwm firmware, dmesg shows:
>         "Intel Gemini Lake CNVi" rev 0x03 at pci0 dev 12 function 0 not
> configured>

This device is not yet supported.

Here is patch. It is a complete shot in the dark, but worth trying.
The device name string can be fixed up later. What is important for
now is that the driver attaches and produces a working interface.


diff 6bbb73995c8e71f4ccedb27558b1e4887fc58c34 /usr/src
blob - ae02ad71669e77dae57e2df7d89346f5296b0f26
file + sys/dev/pci/if_iwm.c
--- sys/dev/pci/if_iwm.c
+++ sys/dev/pci/if_iwm.c
@@ -847,7 +847,7 @@ iwm_read_firmware(struct iwm_softc *sc)
                                err = EINVAL;
                                goto parse_out;
                        }
-                       sc->sc_fw_phy_config = le32toh(*(uint32_t *)tlv_data);
+                       sc->sc_fw_phy_config |= le32toh(*(uint32_t *)tlv_data);
                        break;
 
                case IWM_UCODE_TLV_API_CHANGES_SET: {
@@ -11177,6 +11177,7 @@ static const struct pci_matchid iwm_devices[] = {
        { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_9260_1 },
        { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_9560_1 },
        { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_9560_2 },
+       { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_GLK_WL },
 };
 
 int
@@ -11405,6 +11406,7 @@ iwm_attach(struct device *parent, struct device *self,
                break;
        case PCI_PRODUCT_INTEL_WL_9560_1:
        case PCI_PRODUCT_INTEL_WL_9560_2:
+       case PCI_PRODUCT_INTEL_GLK_WL:
                sc->sc_fwname = "iwm-9000-46";
                sc->host_interrupt_operation_mode = 0;
                sc->sc_device_family = IWM_DEVICE_FAMILY_9000;
@@ -11412,7 +11414,11 @@ iwm_attach(struct device *parent, struct device *self,
                sc->sc_nvm_max_section_size = 32768;
                sc->sc_mqrx_supported = 1;
                sc->sc_integrated = 1;
-               sc->sc_xtal_latency = 650;
+               if (PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_INTEL_GLK_WL) {
+                       sc->sc_xtal_latency = 670;
+                       sc->sc_fw_phy_config = IWM_FW_PHY_CFG_SHARED_CLK;
+               } else
+                       sc->sc_xtal_latency = 650;
                break;
        default:
                printf("%s: unknown adapter type\n", DEVNAME(sc));
blob - 59ae267a763600b0893079abfbf5d13d6c5678d0
file + sys/dev/pci/if_iwmreg.h
--- sys/dev/pci/if_iwmreg.h
+++ sys/dev/pci/if_iwmreg.h
@@ -982,6 +982,7 @@ struct iwm_tlv_calib_ctrl {
 #define IWM_FW_PHY_CFG_TX_CHAIN                (0xf << 
IWM_FW_PHY_CFG_TX_CHAIN_POS)
 #define IWM_FW_PHY_CFG_RX_CHAIN_POS    20
 #define IWM_FW_PHY_CFG_RX_CHAIN                (0xf << 
IWM_FW_PHY_CFG_RX_CHAIN_POS)
+#define IWM_FW_PHY_CFG_SHARED_CLK      (1U << 31)
 
 #define IWM_UCODE_MAX_CS               1
 


Reply via email to