misc: pch_phub: Read prefetch value from device tree if passed
authorZubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
Fri, 12 Aug 2016 11:48:52 +0000 (12:48 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 31 Aug 2016 13:45:18 +0000 (15:45 +0200)
The default prefetch value for the eg20t device is hard coded to
0x000affaa.

Add support for an alternative to be read from DT if available

Signed-off-by: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/pch_phub.c

index 4810e03..1dd18f5 100644 (file)
@@ -28,6 +28,7 @@
 #include <linux/if_ether.h>
 #include <linux/ctype.h>
 #include <linux/dmi.h>
+#include <linux/of.h>
 
 #define PHUB_STATUS 0x00               /* Status Register offset */
 #define PHUB_CONTROL 0x04              /* Control Register offset */
@@ -711,6 +712,12 @@ static int pch_phub_probe(struct pci_dev *pdev,
 
        if (id->driver_data == 1) { /* EG20T PCH */
                const char *board_name;
+               unsigned int prefetch = 0x000affaa;
+
+               if (pdev->dev.of_node)
+                       of_property_read_u32(pdev->dev.of_node,
+                                                 "intel,eg20t-prefetch",
+                                                 &prefetch);
 
                ret = sysfs_create_file(&pdev->dev.kobj,
                                        &dev_attr_pch_mac.attr);
@@ -736,7 +743,7 @@ static int pch_phub_probe(struct pci_dev *pdev,
                                                CLKCFG_UART_MASK);
 
                /* set the prefech value */
-               iowrite32(0x000affaa, chip->pch_phub_base_address + 0x14);
+               iowrite32(prefetch, chip->pch_phub_base_address + 0x14);
                /* set the interrupt delay value */
                iowrite32(0x25, chip->pch_phub_base_address + 0x44);
                chip->pch_opt_rom_start_address = PCH_PHUB_ROM_START_ADDR_EG20T;