]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
[media] v4l: vsp1: Remove support for platform data
authorLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Wed, 9 Apr 2014 11:13:18 +0000 (08:13 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Tue, 23 Dec 2014 11:11:24 +0000 (09:11 -0200)
Now that all platforms instantiate the VSP1 through DT, platform data
support isn't needed anymore.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/platform/Kconfig
drivers/media/platform/vsp1/vsp1.h
drivers/media/platform/vsp1/vsp1_drv.c
drivers/media/platform/vsp1/vsp1_wpf.c
include/linux/platform_data/vsp1.h [deleted file]

index 765bffb49a7238e1eca92d693ec944ebb9154764..480a174832a692a8cbc735af67bfd9e68343245b 100644 (file)
@@ -223,7 +223,7 @@ config VIDEO_SH_VEU
 config VIDEO_RENESAS_VSP1
        tristate "Renesas VSP1 Video Processing Engine"
        depends on VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API && HAS_DMA
-       depends on ARCH_SHMOBILE || COMPILE_TEST
+       depends on (ARCH_SHMOBILE && OF) || COMPILE_TEST
        select VIDEOBUF2_DMA_CONTIG
        ---help---
          This is a V4L2 driver for the Renesas VSP1 video processing engine.
index 12467191dff4c09bafca0be8c7845d1da66b7a12..989e96f7e360ae93a007829bf6fdea810cf86df1 100644 (file)
@@ -16,7 +16,6 @@
 #include <linux/io.h>
 #include <linux/list.h>
 #include <linux/mutex.h>
-#include <linux/platform_data/vsp1.h>
 
 #include <media/media-device.h>
 #include <media/v4l2-device.h>
@@ -40,9 +39,20 @@ struct vsp1_uds;
 #define VSP1_MAX_UDS           3
 #define VSP1_MAX_WPF           4
 
+#define VSP1_HAS_LIF           (1 << 0)
+#define VSP1_HAS_LUT           (1 << 1)
+#define VSP1_HAS_SRU           (1 << 2)
+
+struct vsp1_platform_data {
+       unsigned int features;
+       unsigned int rpf_count;
+       unsigned int uds_count;
+       unsigned int wpf_count;
+};
+
 struct vsp1_device {
        struct device *dev;
-       struct vsp1_platform_data *pdata;
+       struct vsp1_platform_data pdata;
 
        void __iomem *mmio;
        struct clk *clock;
index 5eb16e87d53fb8bd8a20a5befbe9f5e8aa82e4ad..913485a90e97356a639fe3f633d27006265e9ebf 100644 (file)
@@ -40,7 +40,7 @@ static irqreturn_t vsp1_irq_handler(int irq, void *data)
        irqreturn_t ret = IRQ_NONE;
        unsigned int i;
 
-       for (i = 0; i < vsp1->pdata->wpf_count; ++i) {
+       for (i = 0; i < vsp1->pdata.wpf_count; ++i) {
                struct vsp1_rwpf *wpf = vsp1->wpf[i];
                struct vsp1_pipeline *pipe;
                u32 status;
@@ -181,7 +181,7 @@ static int vsp1_create_entities(struct vsp1_device *vsp1)
 
        list_add_tail(&vsp1->hst->entity.list_dev, &vsp1->entities);
 
-       if (vsp1->pdata->features & VSP1_HAS_LIF) {
+       if (vsp1->pdata.features & VSP1_HAS_LIF) {
                vsp1->lif = vsp1_lif_create(vsp1);
                if (IS_ERR(vsp1->lif)) {
                        ret = PTR_ERR(vsp1->lif);
@@ -191,7 +191,7 @@ static int vsp1_create_entities(struct vsp1_device *vsp1)
                list_add_tail(&vsp1->lif->entity.list_dev, &vsp1->entities);
        }
 
-       if (vsp1->pdata->features & VSP1_HAS_LUT) {
+       if (vsp1->pdata.features & VSP1_HAS_LUT) {
                vsp1->lut = vsp1_lut_create(vsp1);
                if (IS_ERR(vsp1->lut)) {
                        ret = PTR_ERR(vsp1->lut);
@@ -201,7 +201,7 @@ static int vsp1_create_entities(struct vsp1_device *vsp1)
                list_add_tail(&vsp1->lut->entity.list_dev, &vsp1->entities);
        }
 
-       for (i = 0; i < vsp1->pdata->rpf_count; ++i) {
+       for (i = 0; i < vsp1->pdata.rpf_count; ++i) {
                struct vsp1_rwpf *rpf;
 
                rpf = vsp1_rpf_create(vsp1, i);
@@ -214,7 +214,7 @@ static int vsp1_create_entities(struct vsp1_device *vsp1)
                list_add_tail(&rpf->entity.list_dev, &vsp1->entities);
        }
 
-       if (vsp1->pdata->features & VSP1_HAS_SRU) {
+       if (vsp1->pdata.features & VSP1_HAS_SRU) {
                vsp1->sru = vsp1_sru_create(vsp1);
                if (IS_ERR(vsp1->sru)) {
                        ret = PTR_ERR(vsp1->sru);
@@ -224,7 +224,7 @@ static int vsp1_create_entities(struct vsp1_device *vsp1)
                list_add_tail(&vsp1->sru->entity.list_dev, &vsp1->entities);
        }
 
-       for (i = 0; i < vsp1->pdata->uds_count; ++i) {
+       for (i = 0; i < vsp1->pdata.uds_count; ++i) {
                struct vsp1_uds *uds;
 
                uds = vsp1_uds_create(vsp1, i);
@@ -237,7 +237,7 @@ static int vsp1_create_entities(struct vsp1_device *vsp1)
                list_add_tail(&uds->entity.list_dev, &vsp1->entities);
        }
 
-       for (i = 0; i < vsp1->pdata->wpf_count; ++i) {
+       for (i = 0; i < vsp1->pdata.wpf_count; ++i) {
                struct vsp1_rwpf *wpf;
 
                wpf = vsp1_wpf_create(vsp1, i);
@@ -261,7 +261,7 @@ static int vsp1_create_entities(struct vsp1_device *vsp1)
                        goto done;
        }
 
-       if (vsp1->pdata->features & VSP1_HAS_LIF) {
+       if (vsp1->pdata.features & VSP1_HAS_LIF) {
                ret = media_entity_create_link(
                        &vsp1->wpf[0]->entity.subdev.entity, RWPF_PAD_SOURCE,
                        &vsp1->lif->entity.subdev.entity, LIF_PAD_SINK, 0);
@@ -294,7 +294,7 @@ static int vsp1_device_init(struct vsp1_device *vsp1)
        /* Reset any channel that might be running. */
        status = vsp1_read(vsp1, VI6_STATUS);
 
-       for (i = 0; i < vsp1->pdata->wpf_count; ++i) {
+       for (i = 0; i < vsp1->pdata.wpf_count; ++i) {
                unsigned int timeout;
 
                if (!(status & VI6_STATUS_SYS_ACT(i)))
@@ -318,10 +318,10 @@ static int vsp1_device_init(struct vsp1_device *vsp1)
        vsp1_write(vsp1, VI6_CLK_DCSWT, (8 << VI6_CLK_DCSWT_CSTPW_SHIFT) |
                   (8 << VI6_CLK_DCSWT_CSTRW_SHIFT));
 
-       for (i = 0; i < vsp1->pdata->rpf_count; ++i)
+       for (i = 0; i < vsp1->pdata.rpf_count; ++i)
                vsp1_write(vsp1, VI6_DPR_RPF_ROUTE(i), VI6_DPR_NODE_UNUSED);
 
-       for (i = 0; i < vsp1->pdata->uds_count; ++i)
+       for (i = 0; i < vsp1->pdata.uds_count; ++i)
                vsp1_write(vsp1, VI6_DPR_UDS_ROUTE(i), VI6_DPR_NODE_UNUSED);
 
        vsp1_write(vsp1, VI6_DPR_SRU_ROUTE, VI6_DPR_NODE_UNUSED);
@@ -428,28 +428,36 @@ static const struct dev_pm_ops vsp1_pm_ops = {
  * Platform Driver
  */
 
-static int vsp1_validate_platform_data(struct platform_device *pdev,
-                                      struct vsp1_platform_data *pdata)
+static int vsp1_parse_dt(struct vsp1_device *vsp1)
 {
-       if (pdata == NULL) {
-               dev_err(&pdev->dev, "missing platform data\n");
-               return -EINVAL;
-       }
+       struct device_node *np = vsp1->dev->of_node;
+       struct vsp1_platform_data *pdata = &vsp1->pdata;
+
+       if (of_property_read_bool(np, "renesas,has-lif"))
+               pdata->features |= VSP1_HAS_LIF;
+       if (of_property_read_bool(np, "renesas,has-lut"))
+               pdata->features |= VSP1_HAS_LUT;
+       if (of_property_read_bool(np, "renesas,has-sru"))
+               pdata->features |= VSP1_HAS_SRU;
+
+       of_property_read_u32(np, "renesas,#rpf", &pdata->rpf_count);
+       of_property_read_u32(np, "renesas,#uds", &pdata->uds_count);
+       of_property_read_u32(np, "renesas,#wpf", &pdata->wpf_count);
 
        if (pdata->rpf_count <= 0 || pdata->rpf_count > VSP1_MAX_RPF) {
-               dev_err(&pdev->dev, "invalid number of RPF (%u)\n",
+               dev_err(vsp1->dev, "invalid number of RPF (%u)\n",
                        pdata->rpf_count);
                return -EINVAL;
        }
 
        if (pdata->uds_count <= 0 || pdata->uds_count > VSP1_MAX_UDS) {
-               dev_err(&pdev->dev, "invalid number of UDS (%u)\n",
+               dev_err(vsp1->dev, "invalid number of UDS (%u)\n",
                        pdata->uds_count);
                return -EINVAL;
        }
 
        if (pdata->wpf_count <= 0 || pdata->wpf_count > VSP1_MAX_WPF) {
-               dev_err(&pdev->dev, "invalid number of WPF (%u)\n",
+               dev_err(vsp1->dev, "invalid number of WPF (%u)\n",
                        pdata->wpf_count);
                return -EINVAL;
        }
@@ -457,33 +465,6 @@ static int vsp1_validate_platform_data(struct platform_device *pdev,
        return 0;
 }
 
-static struct vsp1_platform_data *
-vsp1_get_platform_data(struct platform_device *pdev)
-{
-       struct device_node *np = pdev->dev.of_node;
-       struct vsp1_platform_data *pdata;
-
-       if (!IS_ENABLED(CONFIG_OF) || np == NULL)
-               return pdev->dev.platform_data;
-
-       pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
-       if (pdata == NULL)
-               return NULL;
-
-       if (of_property_read_bool(np, "renesas,has-lif"))
-               pdata->features |= VSP1_HAS_LIF;
-       if (of_property_read_bool(np, "renesas,has-lut"))
-               pdata->features |= VSP1_HAS_LUT;
-       if (of_property_read_bool(np, "renesas,has-sru"))
-               pdata->features |= VSP1_HAS_SRU;
-
-       of_property_read_u32(np, "renesas,#rpf", &pdata->rpf_count);
-       of_property_read_u32(np, "renesas,#uds", &pdata->uds_count);
-       of_property_read_u32(np, "renesas,#wpf", &pdata->wpf_count);
-
-       return pdata;
-}
-
 static int vsp1_probe(struct platform_device *pdev)
 {
        struct vsp1_device *vsp1;
@@ -499,11 +480,7 @@ static int vsp1_probe(struct platform_device *pdev)
        mutex_init(&vsp1->lock);
        INIT_LIST_HEAD(&vsp1->entities);
 
-       vsp1->pdata = vsp1_get_platform_data(pdev);
-       if (vsp1->pdata == NULL)
-               return -ENODEV;
-
-       ret = vsp1_validate_platform_data(pdev, vsp1->pdata);
+       ret = vsp1_parse_dt(vsp1);
        if (ret < 0)
                return ret;
 
index 6e057762c9339e26db23e57034efd8e31c7b80bd..b1089d05583a97f84ce5797a3c2794912c1f5431 100644 (file)
@@ -280,7 +280,7 @@ struct vsp1_rwpf *vsp1_wpf_create(struct vsp1_device *vsp1, unsigned int index)
         * except for the WPF0 source link if a LIF is present.
         */
        flags = MEDIA_LNK_FL_ENABLED;
-       if (!(vsp1->pdata->features & VSP1_HAS_LIF) || index != 0)
+       if (!(vsp1->pdata.features & VSP1_HAS_LIF) || index != 0)
                flags |= MEDIA_LNK_FL_IMMUTABLE;
 
        ret = media_entity_create_link(&wpf->entity.subdev.entity,
diff --git a/include/linux/platform_data/vsp1.h b/include/linux/platform_data/vsp1.h
deleted file mode 100644 (file)
index 63170e2..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * vsp1.h  --  R-Car VSP1 Platform Data
- *
- * Copyright (C) 2013 Renesas Corporation
- *
- * Contact: Laurent Pinchart (laurent.pinchart@ideasonboard.com)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
-#ifndef __PLATFORM_VSP1_H__
-#define __PLATFORM_VSP1_H__
-
-#define VSP1_HAS_LIF           (1 << 0)
-#define VSP1_HAS_LUT           (1 << 1)
-#define VSP1_HAS_SRU           (1 << 2)
-
-struct vsp1_platform_data {
-       unsigned int features;
-       unsigned int rpf_count;
-       unsigned int uds_count;
-       unsigned int wpf_count;
-};
-
-#endif /* __PLATFORM_VSP1_H__ */