forked from jcmvbkbc/linux-xtensa
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fbdev: sh_mobile_hdmi: implement locking
The SH-Mobile HDMI driver runs in several contexts: ISR, delayed work-queue, task context, when called from the sh_mobile_lcdc framebuffer driver. This creates ample race possibilities. Even though most these races are purely theoretical, it is better to close them. To trace fb_info validity we install a notification callback in the HDMI driver, and the only way for it to get to driver internal data is by using struct sh_mobile_lcdc_chan, therefore it had to be extracted into a separate common header. Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
- Loading branch information
Showing
4 changed files
with
141 additions
and
47 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
#ifndef SH_MOBILE_LCDCFB_H | ||
#define SH_MOBILE_LCDCFB_H | ||
|
||
#include <linux/completion.h> | ||
#include <linux/fb.h> | ||
#include <linux/wait.h> | ||
|
||
/* per-channel registers */ | ||
enum { LDDCKPAT1R, LDDCKPAT2R, LDMT1R, LDMT2R, LDMT3R, LDDFR, LDSM1R, | ||
LDSM2R, LDSA1R, LDMLSR, LDHCNR, LDHSYNR, LDVLNR, LDVSYNR, LDPMR, | ||
LDHAJR, | ||
NR_CH_REGS }; | ||
|
||
#define PALETTE_NR 16 | ||
|
||
struct sh_mobile_lcdc_priv; | ||
struct fb_info; | ||
|
||
struct sh_mobile_lcdc_chan { | ||
struct sh_mobile_lcdc_priv *lcdc; | ||
unsigned long *reg_offs; | ||
unsigned long ldmt1r_value; | ||
unsigned long enabled; /* ME and SE in LDCNT2R */ | ||
struct sh_mobile_lcdc_chan_cfg cfg; | ||
u32 pseudo_palette[PALETTE_NR]; | ||
unsigned long saved_ch_regs[NR_CH_REGS]; | ||
struct fb_info *info; | ||
dma_addr_t dma_handle; | ||
struct fb_deferred_io defio; | ||
struct scatterlist *sglist; | ||
unsigned long frame_end; | ||
unsigned long pan_offset; | ||
wait_queue_head_t frame_end_wait; | ||
struct completion vsync_completion; | ||
}; | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters