drm/linux: Add pci_bus compat structure
authorzrj <rimvydas.jasinskas@gmail.com>
Thu, 13 Aug 2015 06:37:44 +0000 (09:37 +0300)
committerFran├žois Tigeot <ftigeot@wolfpond.org>
Sat, 22 Aug 2015 15:34:31 +0000 (17:34 +0200)
sys/dev/drm/drm_dragonfly.c
sys/dev/drm/include/linux/pci.h

index e452d3a..1735747 100644 (file)
@@ -140,9 +140,18 @@ void drm_init_pdev(struct device *dev, struct pci_dev **pdev)
 
        *pdev = kzalloc(sizeof(struct pci_dev), GFP_KERNEL);
        drm_fill_pdev(dev, *pdev);
+
+       (*pdev)->bus = kzalloc(sizeof(struct pci_bus), GFP_KERNEL);
+       (*pdev)->bus->self = kzalloc(sizeof(struct pci_dev), GFP_KERNEL);
+
+       drm_fill_pdev(device_get_parent(dev), (*pdev)->bus->self);
+       (*pdev)->bus->number = pci_get_bus(dev);
 }
 
 void drm_fini_pdev(struct pci_dev **pdev)
 {
+       kfree((*pdev)->bus->self);
+       kfree((*pdev)->bus);
+
        kfree(*pdev);
 }
index 4d51c94..da46d8a 100644 (file)
@@ -42,6 +42,8 @@
 
 #include <linux/pci_ids.h>
 
+struct pci_bus;
+
 struct pci_device_id {
        uint32_t class;
        uint32_t class_mask;
@@ -53,7 +55,7 @@ struct pci_device_id {
 };
 
 struct pci_dev {
-//     struct pci_bus *bus;            /* bus device is nailed to */
+       struct pci_bus *bus;            /* bus device is nailed to */
        struct device *dev;             /* NOTE the star */
 
        unsigned short vendor;          /* vendor ID */
@@ -62,6 +64,14 @@ struct pci_dev {
        unsigned short subsystem_device;
 };
 
+struct pci_bus {
+       struct pci_dev *self;           /* handle to pdev self */
+       struct device *dev;             /* handle to dev */
+
+       unsigned char number;           /* bus addr number */
+//     unsigned char max_bus_speed;    /* max bus speed */
+};
+
 #define PCI_DEVFN(slot, func)   ((((slot) & 0x1f) << 3) | ((func) & 0x07))
 
 #define PCI_DMA_BIDIRECTIONAL  0