include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit...
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / video / xilinxfb.c
index 7a868bd16e0e2d35bff8b7842a7ceb6f9ef3f5c2..3fcb83f03881e58f94c27004e05ebdd82eca8e93 100644 (file)
@@ -34,6 +34,7 @@
 #include <linux/of_platform.h>
 #include <linux/io.h>
 #include <linux/xilinxfb.h>
+#include <linux/slab.h>
 #include <asm/dcr.h>
 
 #define DRIVER_NAME            "xilinxfb"
@@ -124,7 +125,6 @@ struct xilinxfb_drvdata {
                                                registers */
 
        dcr_host_t      dcr_host;
-       unsigned int    dcr_start;
        unsigned int    dcr_len;
 
        void            *fb_virt;       /* virt. address of the frame buffer */
@@ -325,8 +325,8 @@ static int xilinxfb_assign(struct device *dev,
                                        drvdata->regs);
        }
        /* Put a banner in the log (for DEBUG) */
-       dev_dbg(dev, "fb: phys=%p, virt=%p, size=%x\n",
-               (void *)drvdata->fb_phys, drvdata->fb_virt, fbsize);
+       dev_dbg(dev, "fb: phys=%llx, virt=%p, size=%x\n",
+               (unsigned long long)drvdata->fb_phys, drvdata->fb_virt, fbsize);
 
        return 0;       /* success */
 
@@ -404,9 +404,7 @@ xilinxfb_of_probe(struct of_device *op, const struct of_device_id *match)
        u32 tft_access;
        struct xilinxfb_platform_data pdata;
        struct resource res;
-       int size, rc;
-       int start = 0, len = 0;
-       dcr_host_t dcr_host;
+       int size, rc, start;
        struct xilinxfb_drvdata *drvdata;
 
        /* Copy with the default pdata (not a ptr reference!) */
@@ -414,35 +412,39 @@ xilinxfb_of_probe(struct of_device *op, const struct of_device_id *match)
 
        dev_dbg(&op->dev, "xilinxfb_of_probe(%p, %p)\n", op, match);
 
+       /* Allocate the driver data region */
+       drvdata = kzalloc(sizeof(*drvdata), GFP_KERNEL);
+       if (!drvdata) {
+               dev_err(&op->dev, "Couldn't allocate device private record\n");
+               return -ENOMEM;
+       }
+
        /*
         * To check whether the core is connected directly to DCR or PLB
         * interface and initialize the tft_access accordingly.
         */
        p = (u32 *)of_get_property(op->node, "xlnx,dcr-splb-slave-if", NULL);
-
-       if (p)
-               tft_access = *p;
-       else
-               tft_access = 0;         /* For backward compatibility */
+       tft_access = p ? *p : 0;
 
        /*
         * Fill the resource structure if its direct PLB interface
         * otherwise fill the dcr_host structure.
         */
        if (tft_access) {
+               drvdata->flags |= PLB_ACCESS_FLAG;
                rc = of_address_to_resource(op->node, 0, &res);
                if (rc) {
                        dev_err(&op->dev, "invalid address\n");
-                       return -ENODEV;
+                       goto err;
                }
-
        } else {
+               res.start = 0;
                start = dcr_resource_start(op->node, 0);
-               len = dcr_resource_len(op->node, 0);
-               dcr_host = dcr_map(op->node, start, len);
-               if (!DCR_MAP_OK(dcr_host)) {
-                       dev_err(&op->dev, "invalid address\n");
-                       return -ENODEV;
+               drvdata->dcr_len = dcr_resource_len(op->node, 0);
+               drvdata->dcr_host = dcr_map(op->node, start, drvdata->dcr_len);
+               if (!DCR_MAP_OK(drvdata->dcr_host)) {
+                       dev_err(&op->dev, "invalid DCR address\n");
+                       goto err;
                }
        }
 
@@ -467,26 +469,12 @@ xilinxfb_of_probe(struct of_device *op, const struct of_device_id *match)
        if (of_find_property(op->node, "rotate-display", NULL))
                pdata.rotate_screen = 1;
 
-       /* Allocate the driver data region */
-       drvdata = kzalloc(sizeof(*drvdata), GFP_KERNEL);
-       if (!drvdata) {
-               dev_err(&op->dev, "Couldn't allocate device private record\n");
-               return -ENOMEM;
-       }
        dev_set_drvdata(&op->dev, drvdata);
+       return xilinxfb_assign(&op->dev, drvdata, res.start, &pdata);
 
-       if (tft_access)
-               drvdata->flags |= PLB_ACCESS_FLAG;
-
-       /* Arguments are passed based on the interface */
-       if (drvdata->flags & PLB_ACCESS_FLAG) {
-               return xilinxfb_assign(&op->dev, drvdata, res.start, &pdata);
-       } else {
-               drvdata->dcr_start = start;
-               drvdata->dcr_len = len;
-               drvdata->dcr_host = dcr_host;
-               return xilinxfb_assign(&op->dev, drvdata, 0, &pdata);
-       }
+ err:
+       kfree(drvdata);
+       return -ENODEV;
 }
 
 static int __devexit xilinxfb_of_remove(struct of_device *op)