blob: 89450cbc1a093daf7b86372bc62735d45fb34f58 [file] [log] [blame]
From 20719471f5f65096346f478923583334bd56998d Mon Sep 17 00:00:00 2001
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Date: Thu, 24 Nov 2011 11:53:47 +0100
Subject: fbdev: sh_mobile_hdmi: Don't access LCDC channel in notifier
callback
Instead of relying on info->par being a pointer to an LCDC channel, cast
the notifier block pointer to an sh_hdmi pointer.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
(cherry picked from commit 12ee2502c0503c484a7df052d356e39c40b02400)
Signed-off-by: Simon Horman <horms@verge.net.au>
---
drivers/video/sh_mobile_hdmi.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/video/sh_mobile_hdmi.c b/drivers/video/sh_mobile_hdmi.c
index 647ba98..a77bbc3 100644
--- a/drivers/video/sh_mobile_hdmi.c
+++ b/drivers/video/sh_mobile_hdmi.c
@@ -225,6 +225,8 @@ struct sh_hdmi {
struct notifier_block notifier;
};
+#define notifier_to_hdmi(n) container_of(n, struct sh_hdmi, notifier)
+
static void hdmi_write(struct sh_hdmi *hdmi, u8 data, u8 reg)
{
iowrite8(data, hdmi->base + reg);
@@ -1204,11 +1206,9 @@ static int sh_hdmi_notify(struct notifier_block *nb,
{
struct fb_event *event = data;
struct fb_info *info = event->info;
- struct sh_mobile_lcdc_chan *ch = info->par;
- struct sh_mobile_lcdc_board_cfg *board_cfg = &ch->cfg.board_cfg;
- struct sh_hdmi *hdmi = board_cfg->board_data;
+ struct sh_hdmi *hdmi = notifier_to_hdmi(nb);
- if (!hdmi || nb != &hdmi->notifier || hdmi->info != info)
+ if (hdmi->info != info)
return NOTIFY_DONE;
switch(action) {
--
1.7.10