Commit 11765d16 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Tomi Valkeinen

drm: omapdrm: Move all debugfs code from core to dss

debugfs code is spread between the core and dss drivers. In preparation
for removal of the core driver, move it all to the dss driver.
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent 4a9fab3d
...@@ -27,8 +27,6 @@ ...@@ -27,8 +27,6 @@
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/err.h> #include <linux/err.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/seq_file.h>
#include <linux/debugfs.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/regulator/consumer.h> #include <linux/regulator/consumer.h>
...@@ -50,72 +48,6 @@ enum omapdss_version omapdss_get_version(void) ...@@ -50,72 +48,6 @@ enum omapdss_version omapdss_get_version(void)
} }
EXPORT_SYMBOL(omapdss_get_version); EXPORT_SYMBOL(omapdss_get_version);
#if defined(CONFIG_OMAP2_DSS_DEBUGFS)
static int dss_debug_show(struct seq_file *s, void *unused)
{
void (*func)(struct seq_file *) = s->private;
func(s);
return 0;
}
static int dss_debug_open(struct inode *inode, struct file *file)
{
return single_open(file, dss_debug_show, inode->i_private);
}
static const struct file_operations dss_debug_fops = {
.open = dss_debug_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
static struct dentry *dss_debugfs_dir;
static int dss_initialize_debugfs(void)
{
dss_debugfs_dir = debugfs_create_dir("omapdss", NULL);
if (IS_ERR(dss_debugfs_dir)) {
int err = PTR_ERR(dss_debugfs_dir);
dss_debugfs_dir = NULL;
return err;
}
debugfs_create_file("clk", S_IRUGO, dss_debugfs_dir,
&dss_debug_dump_clocks, &dss_debug_fops);
return 0;
}
static void dss_uninitialize_debugfs(void)
{
if (dss_debugfs_dir)
debugfs_remove_recursive(dss_debugfs_dir);
}
int dss_debugfs_create_file(const char *name, void (*write)(struct seq_file *))
{
struct dentry *d;
d = debugfs_create_file(name, S_IRUGO, dss_debugfs_dir,
write, &dss_debug_fops);
return PTR_ERR_OR_ZERO(d);
}
#else /* CONFIG_OMAP2_DSS_DEBUGFS */
static inline int dss_initialize_debugfs(void)
{
return 0;
}
static inline void dss_uninitialize_debugfs(void)
{
}
int dss_debugfs_create_file(const char *name, void (*write)(struct seq_file *))
{
return 0;
}
#endif /* CONFIG_OMAP2_DSS_DEBUGFS */
/* PLATFORM DEVICE */ /* PLATFORM DEVICE */
static void dss_disable_all_devices(void) static void dss_disable_all_devices(void)
...@@ -133,27 +65,15 @@ static void dss_disable_all_devices(void) ...@@ -133,27 +65,15 @@ static void dss_disable_all_devices(void)
static int __init omap_dss_probe(struct platform_device *pdev) static int __init omap_dss_probe(struct platform_device *pdev)
{ {
int r;
core.pdev = pdev; core.pdev = pdev;
dss_features_init(omapdss_get_version()); dss_features_init(omapdss_get_version());
r = dss_initialize_debugfs();
if (r)
goto err_debugfs;
return 0; return 0;
err_debugfs:
return r;
} }
static int omap_dss_remove(struct platform_device *pdev) static int omap_dss_remove(struct platform_device *pdev)
{ {
dss_uninitialize_debugfs();
return 0; return 0;
} }
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#define DSS_SUBSYS_NAME "DSS" #define DSS_SUBSYS_NAME "DSS"
#include <linux/debugfs.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/io.h> #include <linux/io.h>
...@@ -891,7 +892,7 @@ void dss_runtime_put(void) ...@@ -891,7 +892,7 @@ void dss_runtime_put(void)
/* DEBUGFS */ /* DEBUGFS */
#if defined(CONFIG_OMAP2_DSS_DEBUGFS) #if defined(CONFIG_OMAP2_DSS_DEBUGFS)
void dss_debug_dump_clocks(struct seq_file *s) static void dss_debug_dump_clocks(struct seq_file *s)
{ {
dss_dump_clocks(s); dss_dump_clocks(s);
dispc_dump_clocks(s); dispc_dump_clocks(s);
...@@ -899,8 +900,69 @@ void dss_debug_dump_clocks(struct seq_file *s) ...@@ -899,8 +900,69 @@ void dss_debug_dump_clocks(struct seq_file *s)
dsi_dump_clocks(s); dsi_dump_clocks(s);
#endif #endif
} }
#endif
static int dss_debug_show(struct seq_file *s, void *unused)
{
void (*func)(struct seq_file *) = s->private;
func(s);
return 0;
}
static int dss_debug_open(struct inode *inode, struct file *file)
{
return single_open(file, dss_debug_show, inode->i_private);
}
static const struct file_operations dss_debug_fops = {
.open = dss_debug_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
static struct dentry *dss_debugfs_dir;
static int dss_initialize_debugfs(void)
{
dss_debugfs_dir = debugfs_create_dir("omapdss", NULL);
if (IS_ERR(dss_debugfs_dir)) {
int err = PTR_ERR(dss_debugfs_dir);
dss_debugfs_dir = NULL;
return err;
}
debugfs_create_file("clk", S_IRUGO, dss_debugfs_dir,
&dss_debug_dump_clocks, &dss_debug_fops);
return 0;
}
static void dss_uninitialize_debugfs(void)
{
if (dss_debugfs_dir)
debugfs_remove_recursive(dss_debugfs_dir);
}
int dss_debugfs_create_file(const char *name, void (*write)(struct seq_file *))
{
struct dentry *d;
d = debugfs_create_file(name, S_IRUGO, dss_debugfs_dir,
write, &dss_debug_fops);
return PTR_ERR_OR_ZERO(d);
}
#else /* CONFIG_OMAP2_DSS_DEBUGFS */
static inline int dss_initialize_debugfs(void)
{
return 0;
}
static inline void dss_uninitialize_debugfs(void)
{
}
#endif /* CONFIG_OMAP2_DSS_DEBUGFS */
static const struct dss_ops dss_ops_omap2_omap3 = { static const struct dss_ops dss_ops_omap2_omap3 = {
.dpi_select_source = &dss_dpi_select_source_omap2_omap3, .dpi_select_source = &dss_dpi_select_source_omap2_omap3,
...@@ -1293,12 +1355,18 @@ static int dss_probe(struct platform_device *pdev) ...@@ -1293,12 +1355,18 @@ static int dss_probe(struct platform_device *pdev)
else else
dss.feat = of_match_device(dss_of_match, &pdev->dev)->data; dss.feat = of_match_device(dss_of_match, &pdev->dev)->data;
r = dss_initialize_debugfs();
if (r)
return r;
/* add all the child devices as components */ /* add all the child devices as components */
device_for_each_child(&pdev->dev, &match, dss_add_child_component); device_for_each_child(&pdev->dev, &match, dss_add_child_component);
r = component_master_add_with_match(&pdev->dev, &dss_component_ops, match); r = component_master_add_with_match(&pdev->dev, &dss_component_ops, match);
if (r) if (r) {
dss_uninitialize_debugfs();
return r; return r;
}
return 0; return 0;
} }
...@@ -1306,6 +1374,9 @@ static int dss_probe(struct platform_device *pdev) ...@@ -1306,6 +1374,9 @@ static int dss_probe(struct platform_device *pdev)
static int dss_remove(struct platform_device *pdev) static int dss_remove(struct platform_device *pdev)
{ {
component_master_del(&pdev->dev, &dss_component_ops); component_master_del(&pdev->dev, &dss_component_ops);
dss_uninitialize_debugfs();
return 0; return 0;
} }
......
...@@ -233,8 +233,6 @@ static inline int dss_set_min_bus_tput(struct device *dev, unsigned long tput) ...@@ -233,8 +233,6 @@ static inline int dss_set_min_bus_tput(struct device *dev, unsigned long tput)
return 0; return 0;
} }
int dss_debugfs_create_file(const char *name, void (*write)(struct seq_file *));
static inline bool dss_mgr_is_lcd(enum omap_channel id) static inline bool dss_mgr_is_lcd(enum omap_channel id)
{ {
if (id == OMAP_DSS_CHANNEL_LCD || id == OMAP_DSS_CHANNEL_LCD2 || if (id == OMAP_DSS_CHANNEL_LCD || id == OMAP_DSS_CHANNEL_LCD2 ||
...@@ -245,6 +243,16 @@ static inline bool dss_mgr_is_lcd(enum omap_channel id) ...@@ -245,6 +243,16 @@ static inline bool dss_mgr_is_lcd(enum omap_channel id)
} }
/* DSS */ /* DSS */
#if defined(CONFIG_OMAP2_DSS_DEBUGFS)
int dss_debugfs_create_file(const char *name, void (*write)(struct seq_file *));
#else
static inline int dss_debugfs_create_file(const char *name,
void (*write)(struct seq_file *))
{
return 0;
}
#endif /* CONFIG_OMAP2_DSS_DEBUGFS */
int dss_init_platform_driver(void) __init; int dss_init_platform_driver(void) __init;
void dss_uninit_platform_driver(void); void dss_uninit_platform_driver(void);
...@@ -263,10 +271,6 @@ struct dss_pll *dss_video_pll_init(struct platform_device *pdev, int id, ...@@ -263,10 +271,6 @@ struct dss_pll *dss_video_pll_init(struct platform_device *pdev, int id,
struct regulator *regulator); struct regulator *regulator);
void dss_video_pll_uninit(struct dss_pll *pll); void dss_video_pll_uninit(struct dss_pll *pll);
#if defined(CONFIG_OMAP2_DSS_DEBUGFS)
void dss_debug_dump_clocks(struct seq_file *s);
#endif
void dss_ctrl_pll_enable(enum dss_pll_id pll_id, bool enable); void dss_ctrl_pll_enable(enum dss_pll_id pll_id, bool enable);
void dss_sdi_init(int datapairs); void dss_sdi_init(int datapairs);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment