diff options
author | Philipp Zabel <p.zabel@pengutronix.de> | 2012-07-02 05:07:10 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-09-26 15:27:16 -0400 |
commit | df1e74cc04dbc0d2fada237333b91e167b09dd30 (patch) | |
tree | 197e4ca9e83bb7103cc882c68a6c48a1522e1b2b /drivers/media/platform | |
parent | 87048bb465950685f807fc5922ceeec689755f9c (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.c | 31 |
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 | ||
85 | enum coda_product { | 85 | enum coda_product { |
86 | CODA_DX6 = 0xf001, | 86 | CODA_DX6 = 0xf001, |
87 | CODA_7541 = 0xf012, | ||
87 | }; | 88 | }; |
88 | 89 | ||
89 | struct coda_fmt { | 90 | struct coda_fmt { |
@@ -261,6 +262,24 @@ static struct coda_fmt codadx6_formats[] = { | |||
261 | }, | 262 | }, |
262 | }; | 263 | }; |
263 | 264 | ||
265 | static 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 | |||
264 | static struct coda_fmt *find_format(struct coda_dev *dev, struct v4l2_format *f) | 283 | static 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 | ||
1489 | static u32 coda_supported_firmwares[] = { | 1508 | static 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 | ||
1493 | static bool coda_firmware_supported(u32 vernum) | 1513 | static 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 | ||
1700 | enum coda_platform { | 1722 | enum coda_platform { |
1701 | CODA_IMX27, | 1723 | CODA_IMX27, |
1724 | CODA_IMX53, | ||
1702 | }; | 1725 | }; |
1703 | 1726 | ||
1704 | static const struct coda_devtype coda_devdata[] = { | 1727 | static 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 | ||
1713 | static struct platform_device_id coda_platform_ids[] = { | 1742 | static 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 | }; |
1717 | MODULE_DEVICE_TABLE(platform, coda_platform_ids); | 1747 | MODULE_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 |
1720 | static const struct of_device_id coda_dt_ids[] = { | 1750 | static 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 | }; |
1724 | MODULE_DEVICE_TABLE(of, coda_dt_ids); | 1755 | MODULE_DEVICE_TABLE(of, coda_dt_ids); |