sh: add a start_transfer() callback to the LCDC driver
This patch adds a ->start_transfer() callback to the driver sh_mobile_lcdcfb.c. The callback is used to program the LCDC panel in the case of one-shot mode. Needed by the LCD controller used on the KFR2R09 board. Signed-off-by: Magnus Damm <damm@opensource.se> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
b25b975846
commit
ef61aae4dd
|
@ -281,6 +281,7 @@ static void sh_mobile_lcdc_deferred_io(struct fb_info *info,
|
|||
struct list_head *pagelist)
|
||||
{
|
||||
struct sh_mobile_lcdc_chan *ch = info->par;
|
||||
struct sh_mobile_lcdc_board_cfg *bcfg = &ch->cfg.board_cfg;
|
||||
|
||||
/* enable clocks before accessing hardware */
|
||||
sh_mobile_lcdc_clk_on(ch->lcdc);
|
||||
|
@ -305,10 +306,17 @@ static void sh_mobile_lcdc_deferred_io(struct fb_info *info,
|
|||
|
||||
/* trigger panel update */
|
||||
dma_map_sg(info->dev, ch->sglist, nr_pages, DMA_TO_DEVICE);
|
||||
if (bcfg->start_transfer)
|
||||
bcfg->start_transfer(bcfg->board_data, ch,
|
||||
&sh_mobile_lcdc_sys_bus_ops);
|
||||
lcdc_write_chan(ch, LDSM2R, 1);
|
||||
dma_unmap_sg(info->dev, ch->sglist, nr_pages, DMA_TO_DEVICE);
|
||||
} else
|
||||
} else {
|
||||
if (bcfg->start_transfer)
|
||||
bcfg->start_transfer(bcfg->board_data, ch,
|
||||
&sh_mobile_lcdc_sys_bus_ops);
|
||||
lcdc_write_chan(ch, LDSM2R, 1);
|
||||
}
|
||||
}
|
||||
|
||||
static void sh_mobile_lcdc_deferred_io_touch(struct fb_info *info)
|
||||
|
|
|
@ -50,6 +50,8 @@ struct sh_mobile_lcdc_board_cfg {
|
|||
void *board_data;
|
||||
int (*setup_sys)(void *board_data, void *sys_ops_handle,
|
||||
struct sh_mobile_lcdc_sys_bus_ops *sys_ops);
|
||||
void (*start_transfer)(void *board_data, void *sys_ops_handle,
|
||||
struct sh_mobile_lcdc_sys_bus_ops *sys_ops);
|
||||
void (*display_on)(void *board_data);
|
||||
void (*display_off)(void *board_data);
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue