aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/platform
diff options
context:
space:
mode:
authorPhilipp Zabel <p.zabel@pengutronix.de>2012-07-02 05:07:10 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-09-26 15:27:16 -0400
commitdf1e74cc04dbc0d2fada237333b91e167b09dd30 (patch)
tree197e4ca9e83bb7103cc882c68a6c48a1522e1b2b /drivers/media/platform
parent87048bb465950685f807fc5922ceeec689755f9c (diff)
[media] media: coda: add i.MX53 / CODA7541 platform support
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>
Diffstat (limited to 'drivers/media/platform')
-rw-r--r--drivers/media/platform/coda.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/drivers/media/platform/coda.c b/drivers/media/platform/coda.c
index 883e658b364b..a560c0da68ae 100644
--- a/drivers/media/platform/coda.c
+++ b/drivers/media/platform/coda.c
@@ -84,6 +84,7 @@ enum coda_inst_type {
84 84
85enum coda_product { 85enum coda_product {
86 CODA_DX6 = 0xf001, 86 CODA_DX6 = 0xf001,
87 CODA_7541 = 0xf012,
87}; 88};
88 89
89struct coda_fmt { 90struct coda_fmt {
@@ -261,6 +262,24 @@ static struct coda_fmt codadx6_formats[] = {
261 }, 262 },
262}; 263};
263 264
265static struct coda_fmt coda7_formats[] = {
266 {
267 .name = "YUV 4:2:0 Planar",
268 .fourcc = V4L2_PIX_FMT_YUV420,
269 .type = CODA_FMT_RAW,
270 },
271 {
272 .name = "H264 Encoded Stream",
273 .fourcc = V4L2_PIX_FMT_H264,
274 .type = CODA_FMT_ENC,
275 },
276 {
277 .name = "MPEG4 Encoded Stream",
278 .fourcc = V4L2_PIX_FMT_MPEG4,
279 .type = CODA_FMT_ENC,
280 },
281};
282
264static struct coda_fmt *find_format(struct coda_dev *dev, struct v4l2_format *f) 283static struct coda_fmt *find_format(struct coda_dev *dev, struct v4l2_format *f)
265{ 284{
266 struct coda_fmt *formats = dev->devtype->formats; 285 struct coda_fmt *formats = dev->devtype->formats;
@@ -1488,6 +1507,7 @@ static irqreturn_t coda_irq_handler(int irq, void *data)
1488 1507
1489static u32 coda_supported_firmwares[] = { 1508static u32 coda_supported_firmwares[] = {
1490 CODA_FIRMWARE_VERNUM(CODA_DX6, 2, 2, 5), 1509 CODA_FIRMWARE_VERNUM(CODA_DX6, 2, 2, 5),
1510 CODA_FIRMWARE_VERNUM(CODA_7541, 13, 4, 29),
1491}; 1511};
1492 1512
1493static bool coda_firmware_supported(u32 vernum) 1513static bool coda_firmware_supported(u32 vernum)
@@ -1507,6 +1527,8 @@ static char *coda_product_name(int product)
1507 switch (product) { 1527 switch (product) {
1508 case CODA_DX6: 1528 case CODA_DX6:
1509 return "CodaDx6"; 1529 return "CodaDx6";
1530 case CODA_7541:
1531 return "CODA7541";
1510 default: 1532 default:
1511 snprintf(buf, sizeof(buf), "(0x%04x)", product); 1533 snprintf(buf, sizeof(buf), "(0x%04x)", product);
1512 return buf; 1534 return buf;
@@ -1699,6 +1721,7 @@ static int coda_firmware_request(struct coda_dev *dev)
1699 1721
1700enum coda_platform { 1722enum coda_platform {
1701 CODA_IMX27, 1723 CODA_IMX27,
1724 CODA_IMX53,
1702}; 1725};
1703 1726
1704static const struct coda_devtype coda_devdata[] = { 1727static const struct coda_devtype coda_devdata[] = {
@@ -1708,10 +1731,17 @@ static const struct coda_devtype coda_devdata[] = {
1708 .formats = codadx6_formats, 1731 .formats = codadx6_formats,
1709 .num_formats = ARRAY_SIZE(codadx6_formats), 1732 .num_formats = ARRAY_SIZE(codadx6_formats),
1710 }, 1733 },
1734 [CODA_IMX53] = {
1735 .firmware = "v4l-coda7541-imx53.bin",
1736 .product = CODA_7541,
1737 .formats = coda7_formats,
1738 .num_formats = ARRAY_SIZE(coda7_formats),
1739 },
1711}; 1740};
1712 1741
1713static struct platform_device_id coda_platform_ids[] = { 1742static struct platform_device_id coda_platform_ids[] = {
1714 { .name = "coda-imx27", .driver_data = CODA_IMX27 }, 1743 { .name = "coda-imx27", .driver_data = CODA_IMX27 },
1744 { .name = "coda-imx53", .driver_data = CODA_7541 },
1715 { /* sentinel */ } 1745 { /* sentinel */ }
1716}; 1746};
1717MODULE_DEVICE_TABLE(platform, coda_platform_ids); 1747MODULE_DEVICE_TABLE(platform, coda_platform_ids);
@@ -1719,6 +1749,7 @@ MODULE_DEVICE_TABLE(platform, coda_platform_ids);
1719#ifdef CONFIG_OF 1749#ifdef CONFIG_OF
1720static const struct of_device_id coda_dt_ids[] = { 1750static const struct of_device_id coda_dt_ids[] = {
1721 { .compatible = "fsl,imx27-vpu", .data = &coda_platform_ids[CODA_IMX27] }, 1751 { .compatible = "fsl,imx27-vpu", .data = &coda_platform_ids[CODA_IMX27] },
1752 { .compatible = "fsl,imx53-vpu", .data = &coda_devdata[CODA_IMX53] },
1722 { /* sentinel */ } 1753 { /* sentinel */ }
1723}; 1754};
1724MODULE_DEVICE_TABLE(of, coda_dt_ids); 1755MODULE_DEVICE_TABLE(of, coda_dt_ids);