blob: 9d6f5eb31f8c5c63e8c4cef96adc7a1cc0a83670 [file] [log] [blame]
From 60a5a49490ff63dc2a0864406fafd92b52da1e69 Mon Sep 17 00:00:00 2001
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Date: Sun, 18 Sep 2011 12:21:17 +0200
Subject: sh_mobile_lcdc: Add an lcdc channel pointer to sh_mobile_lcdc_entity
The field will be used by the transmitter drivers to access
sh_mobile_lcdc_chan fields such as fb_info.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
(cherry picked from commit e34d0bbb062cc78802d0f0686c939ea1569889a6)
Signed-off-by: Simon Horman <horms@verge.net.au>
---
drivers/video/sh_mobile_lcdcfb.c | 5 ++++-
drivers/video/sh_mobile_lcdcfb.h | 2 ++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/video/sh_mobile_lcdcfb.c b/drivers/video/sh_mobile_lcdcfb.c
index 9e44988..1ecc71e 100644
--- a/drivers/video/sh_mobile_lcdcfb.c
+++ b/drivers/video/sh_mobile_lcdcfb.c
@@ -1495,8 +1495,10 @@ static int sh_mobile_lcdc_remove(struct platform_device *pdev)
if (!info || !info->device)
continue;
- if (ch->tx_dev)
+ if (ch->tx_dev) {
+ ch->tx_dev->lcdc = NULL;
module_put(ch->cfg.tx_dev->dev.driver->owner);
+ }
if (ch->sglist)
vfree(ch->sglist);
@@ -1605,6 +1607,7 @@ sh_mobile_lcdc_channel_init(struct sh_mobile_lcdc_priv *priv,
return -EINVAL;
}
ch->tx_dev = platform_get_drvdata(cfg->tx_dev);
+ ch->tx_dev->lcdc = ch;
}
/* Iterate through the modes to validate them and find the highest
diff --git a/drivers/video/sh_mobile_lcdcfb.h b/drivers/video/sh_mobile_lcdcfb.h
index 9601b92..36cd564 100644
--- a/drivers/video/sh_mobile_lcdcfb.h
+++ b/drivers/video/sh_mobile_lcdcfb.h
@@ -19,6 +19,7 @@ struct fb_info;
struct module;
struct sh_mobile_lcdc_entity;
struct sh_mobile_lcdc_priv;
+struct sh_mobile_lcdc_chan;
struct sh_mobile_lcdc_entity_ops {
/* Display */
@@ -30,6 +31,7 @@ struct sh_mobile_lcdc_entity_ops {
struct sh_mobile_lcdc_entity {
struct module *owner;
const struct sh_mobile_lcdc_entity_ops *ops;
+ struct sh_mobile_lcdc_chan *lcdc;
};
/*
--
1.7.10