[media] media: coda: add i.MX53 / CODA7541 platform support
authorPhilipp Zabel <p.zabel@pengutronix.de>
Mon, 2 Jul 2012 09:07:10 +0000 (06:07 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 26 Sep 2012 19:27:16 +0000 (16:27 -0300)
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Tested-by: Javier Martin <javier.martin@vista-silicon.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/platform/coda.c

index 883e658b364b45797ed02de08553ea0ec6b27416..a560c0da68ae89742f351a06b6b27b553e2363ae 100644 (file)
@@ -84,6 +84,7 @@ enum coda_inst_type {
 
 enum coda_product {
        CODA_DX6 = 0xf001,
+       CODA_7541 = 0xf012,
 };
 
 struct coda_fmt {
@@ -261,6 +262,24 @@ static struct coda_fmt codadx6_formats[] = {
        },
 };
 
+static struct coda_fmt coda7_formats[] = {
+       {
+               .name = "YUV 4:2:0 Planar",
+               .fourcc = V4L2_PIX_FMT_YUV420,
+               .type = CODA_FMT_RAW,
+       },
+       {
+               .name = "H264 Encoded Stream",
+               .fourcc = V4L2_PIX_FMT_H264,
+               .type = CODA_FMT_ENC,
+       },
+       {
+               .name = "MPEG4 Encoded Stream",
+               .fourcc = V4L2_PIX_FMT_MPEG4,
+               .type = CODA_FMT_ENC,
+       },
+};
+
 static struct coda_fmt *find_format(struct coda_dev *dev, struct v4l2_format *f)
 {
        struct coda_fmt *formats = dev->devtype->formats;
@@ -1488,6 +1507,7 @@ static irqreturn_t coda_irq_handler(int irq, void *data)
 
 static u32 coda_supported_firmwares[] = {
        CODA_FIRMWARE_VERNUM(CODA_DX6, 2, 2, 5),
+       CODA_FIRMWARE_VERNUM(CODA_7541, 13, 4, 29),
 };
 
 static bool coda_firmware_supported(u32 vernum)
@@ -1507,6 +1527,8 @@ static char *coda_product_name(int product)
        switch (product) {
        case CODA_DX6:
                return "CodaDx6";
+       case CODA_7541:
+               return "CODA7541";
        default:
                snprintf(buf, sizeof(buf), "(0x%04x)", product);
                return buf;
@@ -1699,6 +1721,7 @@ static int coda_firmware_request(struct coda_dev *dev)
 
 enum coda_platform {
        CODA_IMX27,
+       CODA_IMX53,
 };
 
 static const struct coda_devtype coda_devdata[] = {
@@ -1708,10 +1731,17 @@ static const struct coda_devtype coda_devdata[] = {
                .formats     = codadx6_formats,
                .num_formats = ARRAY_SIZE(codadx6_formats),
        },
+       [CODA_IMX53] = {
+               .firmware    = "v4l-coda7541-imx53.bin",
+               .product     = CODA_7541,
+               .formats     = coda7_formats,
+               .num_formats = ARRAY_SIZE(coda7_formats),
+       },
 };
 
 static struct platform_device_id coda_platform_ids[] = {
        { .name = "coda-imx27", .driver_data = CODA_IMX27 },
+       { .name = "coda-imx53", .driver_data = CODA_7541 },
        { /* sentinel */ }
 };
 MODULE_DEVICE_TABLE(platform, coda_platform_ids);
@@ -1719,6 +1749,7 @@ MODULE_DEVICE_TABLE(platform, coda_platform_ids);
 #ifdef CONFIG_OF
 static const struct of_device_id coda_dt_ids[] = {
        { .compatible = "fsl,imx27-vpu", .data = &coda_platform_ids[CODA_IMX27] },
+       { .compatible = "fsl,imx53-vpu", .data = &coda_devdata[CODA_IMX53] },
        { /* sentinel */ }
 };
 MODULE_DEVICE_TABLE(of, coda_dt_ids);