implement pci drvdata functions
authorjsg <jsg@openbsd.org>
Wed, 28 Aug 2024 04:55:45 +0000 (04:55 +0000)
committerjsg <jsg@openbsd.org>
Wed, 28 Aug 2024 04:55:45 +0000 (04:55 +0000)
sys/dev/pci/drm/drm_drv.c
sys/dev/pci/drm/include/linux/pci.h

index bdb8ed5..7db7ae1 100644 (file)
@@ -1407,6 +1407,7 @@ drm_attach(struct device *parent, struct device *self, void *aux)
                dev->pdev->pc = pa->pa_pc;
                dev->pdev->tag = pa->pa_tag;
                dev->pdev->pci = (struct pci_softc *)parent->dv_parent;
+               dev->pdev->_dev = parent;
 
 #ifdef CONFIG_ACPI
                dev->pdev->dev.node = acpi_find_pci(pa->pa_pc, pa->pa_tag);
index 3304398..1634d22 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: pci.h,v 1.17 2024/08/16 10:46:46 kettenis Exp $       */
+/*     $OpenBSD: pci.h,v 1.18 2024/08/28 04:55:45 jsg Exp $    */
 /*
  * Copyright (c) 2015 Mark Kettenis
  *
@@ -33,6 +33,7 @@
 #include <linux/kobject.h>
 #include <linux/dma-mapping.h>
 #include <linux/mod_devicetable.h>
+#include <linux/device.h>
 
 struct pci_dev;
 
@@ -70,6 +71,7 @@ struct pci_dev {
        uint8_t         ltr_path;
 
        struct pci_acpi dev;
+       struct device *_dev;
 };
 #define PCI_ANY_ID (uint16_t) (~0U)
 
@@ -457,6 +459,13 @@ pci_is_thunderbolt_attached(struct pci_dev *pdev)
 static inline void
 pci_set_drvdata(struct pci_dev *pdev, void *data)
 {
+       dev_set_drvdata(pdev->_dev, data);
+}
+
+static inline void *
+pci_get_drvdata(struct pci_dev *pdev)
+{
+       return dev_get_drvdata(pdev->_dev);
 }
 
 static inline int