[PATCH 04/10] video: simple-panel: Add debug/error messages
Sascha Hauer
s.hauer at pengutronix.de
Wed Sep 23 04:47:25 PDT 2015
Let the driver be more informative when something goes wrong.
Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
drivers/video/simple-panel.c | 28 +++++++++++++++++++++++-----
1 file changed, 23 insertions(+), 5 deletions(-)
diff --git a/drivers/video/simple-panel.c b/drivers/video/simple-panel.c
index 3dd760b..4775509 100644
--- a/drivers/video/simple-panel.c
+++ b/drivers/video/simple-panel.c
@@ -30,6 +30,7 @@
#include <i2c/i2c.h>
struct simple_panel {
+ struct device_d *dev;
struct vpl vpl;
int enable_gpio;
int enable_active_high;
@@ -44,10 +45,14 @@ static int simple_panel_enable(struct simple_panel *panel)
{
int ret;
+ dev_dbg(panel->dev, "enabling\n");
+
if (panel->backlight_node && !panel->backlight) {
panel->backlight = of_backlight_find(panel->backlight_node);
- if (!panel->backlight)
+ if (!panel->backlight) {
+ dev_err(panel->dev, "Cannot find backlight\n");
return -ENODEV;
+ }
}
if (gpio_is_valid(panel->enable_gpio))
@@ -68,6 +73,8 @@ static int simple_panel_enable(struct simple_panel *panel)
static int simple_panel_disable(struct simple_panel *panel)
{
+ dev_dbg(panel->dev, "disabling\n");
+
if (panel->backlight)
backlight_set_brightness(panel->backlight, 0);
@@ -80,23 +87,33 @@ static int simple_panel_disable(struct simple_panel *panel)
static int simple_panel_get_modes(struct simple_panel *panel, struct display_timings *timings)
{
- int ret = -ENOENT;
+ int ret;
if (panel->ddc_node && IS_ENABLED(CONFIG_DRIVER_VIDEO_EDID) &&
IS_ENABLED(CONFIG_I2C)) {
struct i2c_adapter *i2c;
i2c = of_find_i2c_adapter_by_node(panel->ddc_node);
- if (!i2c)
+ if (!i2c) {
+ dev_err(panel->dev, "cannot find edid i2c node\n");
return -ENODEV;
+ }
timings->edid = edid_read_i2c(i2c);
- if (!timings->edid)
+ if (!timings->edid) {
+ dev_err(panel->dev, "cannot read edid data\n");
return -EINVAL;
+ }
ret = edid_to_display_timings(timings, timings->edid);
+ if (ret) {
+ dev_err(panel->dev, "cannot convert edid data to timings\n");
+ return ret;
+ }
}
- return ret;
+ dev_err(panel->dev, "No modes found\n");
+
+ return -ENOENT;
}
static int simple_panel_ioctl(struct vpl *vpl, unsigned int port,
@@ -129,6 +146,7 @@ static int simple_panel_probe(struct device_d *dev)
panel->enable_gpio = of_get_named_gpio_flags(node, "enable-gpios", 0, &flags);
panel->vpl.node = node;
panel->vpl.ioctl = simple_panel_ioctl;
+ panel->dev = dev;
if (gpio_is_valid(panel->enable_gpio)) {
if (!(flags & OF_GPIO_ACTIVE_LOW))
--
2.5.1
More information about the barebox
mailing list