Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
 1// SPDX-License-Identifier: GPL-2.0-only
 2/*
 3 * Analog TV Connector driver
 4 *
 5 * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
 6 * Author: Tomi Valkeinen <tomi.valkeinen@ti.com>
 7 */
 8
 9#include <linux/slab.h>
10#include <linux/module.h>
11#include <linux/platform_device.h>
12#include <linux/of.h>
13
14#include "../dss/omapdss.h"
15
16struct panel_drv_data {
17	struct omap_dss_device dssdev;
18
19	struct device *dev;
20};
21
22#define to_panel_data(x) container_of(x, struct panel_drv_data, dssdev)
23
24static int tvc_connect(struct omap_dss_device *src,
25		       struct omap_dss_device *dst)
26{
27	return 0;
28}
29
30static void tvc_disconnect(struct omap_dss_device *src,
31			   struct omap_dss_device *dst)
32{
33}
34
35static const struct omap_dss_device_ops tvc_ops = {
36	.connect		= tvc_connect,
37	.disconnect		= tvc_disconnect,
38};
39
40static int tvc_probe(struct platform_device *pdev)
41{
42	struct panel_drv_data *ddata;
43	struct omap_dss_device *dssdev;
44
45	ddata = devm_kzalloc(&pdev->dev, sizeof(*ddata), GFP_KERNEL);
46	if (!ddata)
47		return -ENOMEM;
48
49	platform_set_drvdata(pdev, ddata);
50	ddata->dev = &pdev->dev;
51
52	dssdev = &ddata->dssdev;
53	dssdev->ops = &tvc_ops;
54	dssdev->dev = &pdev->dev;
55	dssdev->type = OMAP_DISPLAY_TYPE_VENC;
56	dssdev->display = true;
57	dssdev->owner = THIS_MODULE;
58	dssdev->of_ports = BIT(0);
59
60	omapdss_display_init(dssdev);
61	omapdss_device_register(dssdev);
62
63	return 0;
64}
65
66static int __exit tvc_remove(struct platform_device *pdev)
67{
68	struct panel_drv_data *ddata = platform_get_drvdata(pdev);
69
70	omapdss_device_unregister(&ddata->dssdev);
71
72	return 0;
73}
74
75static const struct of_device_id tvc_of_match[] = {
76	{ .compatible = "omapdss,svideo-connector", },
77	{ .compatible = "omapdss,composite-video-connector", },
78	{},
79};
80
81MODULE_DEVICE_TABLE(of, tvc_of_match);
82
83static struct platform_driver tvc_connector_driver = {
84	.probe	= tvc_probe,
85	.remove	= __exit_p(tvc_remove),
86	.driver	= {
87		.name	= "connector-analog-tv",
88		.of_match_table = tvc_of_match,
89		.suppress_bind_attrs = true,
90	},
91};
92
93module_platform_driver(tvc_connector_driver);
94
95MODULE_AUTHOR("Tomi Valkeinen <tomi.valkeinen@ti.com>");
96MODULE_DESCRIPTION("Analog TV Connector driver");
97MODULE_LICENSE("GPL");