forked from Minki/linux
bb5cdf8d1c
Having the filename in the header serves little purpose and is often wrong after renames as it is here in several places, just drop it from all omapdrm files. While we are here unify the copyright tags to the TI recommended style. Signed-off-by: Andrew F. Davis <afd@ti.com>
88 lines
1.9 KiB
C
88 lines
1.9 KiB
C
/*
|
|
* Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
|
|
* Author: Tomi Valkeinen <tomi.valkeinen@ti.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License version 2 as published by
|
|
* the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
* more details.
|
|
*/
|
|
|
|
#include <linux/device.h>
|
|
#include <linux/err.h>
|
|
#include <linux/module.h>
|
|
#include <linux/of.h>
|
|
#include <linux/of_graph.h>
|
|
#include <linux/seq_file.h>
|
|
|
|
#include "omapdss.h"
|
|
|
|
struct device_node *dss_of_port_get_parent_device(struct device_node *port)
|
|
{
|
|
struct device_node *np;
|
|
int i;
|
|
|
|
if (!port)
|
|
return NULL;
|
|
|
|
np = of_get_parent(port);
|
|
|
|
for (i = 0; i < 2 && np; ++i) {
|
|
struct property *prop;
|
|
|
|
prop = of_find_property(np, "compatible", NULL);
|
|
|
|
if (prop)
|
|
return np;
|
|
|
|
np = of_get_next_parent(np);
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
EXPORT_SYMBOL_GPL(dss_of_port_get_parent_device);
|
|
|
|
u32 dss_of_port_get_port_number(struct device_node *port)
|
|
{
|
|
int r;
|
|
u32 reg;
|
|
|
|
r = of_property_read_u32(port, "reg", ®);
|
|
if (r)
|
|
reg = 0;
|
|
|
|
return reg;
|
|
}
|
|
EXPORT_SYMBOL_GPL(dss_of_port_get_port_number);
|
|
|
|
struct omap_dss_device *
|
|
omapdss_of_find_source_for_first_ep(struct device_node *node)
|
|
{
|
|
struct device_node *ep;
|
|
struct device_node *src_port;
|
|
struct omap_dss_device *src;
|
|
|
|
ep = of_graph_get_endpoint_by_regs(node, 0, 0);
|
|
if (!ep)
|
|
return ERR_PTR(-EINVAL);
|
|
|
|
src_port = of_graph_get_remote_port(ep);
|
|
if (!src_port) {
|
|
of_node_put(ep);
|
|
return ERR_PTR(-EINVAL);
|
|
}
|
|
|
|
of_node_put(ep);
|
|
|
|
src = omap_dss_find_output_by_port_node(src_port);
|
|
|
|
of_node_put(src_port);
|
|
|
|
return src ? src : ERR_PTR(-EPROBE_DEFER);
|
|
}
|
|
EXPORT_SYMBOL_GPL(omapdss_of_find_source_for_first_ep);
|