Skip to content

Commit

Permalink
imxfb: add platform specific init/exit functions
Browse files Browse the repository at this point in the history
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
  • Loading branch information
Sascha Hauer committed Mar 13, 2009
1 parent 879fea1 commit c0b90a3
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 0 deletions.
3 changes: 3 additions & 0 deletions arch/arm/plat-mxc/include/mach/imxfb.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,9 @@ struct imx_fb_platform_data {
u_char * fixed_screen_cpu;
dma_addr_t fixed_screen_dma;

int (*init)(struct platform_device*);
int (*exit)(struct platform_device*);

void (*lcd_power)(int);
void (*backlight_power)(int);
};
Expand Down
14 changes: 14 additions & 0 deletions drivers/video/imxfb.c
Original file line number Diff line number Diff line change
Expand Up @@ -650,6 +650,12 @@ static int __init imxfb_probe(struct platform_device *pdev)
info->fix.smem_start = fbi->screen_dma;
}

if (pdata->init) {
ret = pdata->init(fbi->pdev);
if (ret)
goto failed_platform_init;
}

/*
* This makes sure that our colour bitfield
* descriptors are correctly initialised.
Expand All @@ -674,6 +680,9 @@ static int __init imxfb_probe(struct platform_device *pdev)
failed_register:
fb_dealloc_cmap(&info->cmap);
failed_cmap:
if (pdata->exit)
pdata->exit(fbi->pdev);
failed_platform_init:
if (!pdata->fixed_screen_cpu)
dma_free_writecombine(&pdev->dev,fbi->map_size,fbi->map_cpu,
fbi->map_dma);
Expand All @@ -691,6 +700,7 @@ static int __init imxfb_probe(struct platform_device *pdev)

static int __devexit imxfb_remove(struct platform_device *pdev)
{
struct imx_fb_platform_data *pdata;
struct fb_info *info = platform_get_drvdata(pdev);
struct imxfb_info *fbi = info->par;
struct resource *res;
Expand All @@ -701,6 +711,10 @@ static int __devexit imxfb_remove(struct platform_device *pdev)

unregister_framebuffer(info);

pdata = pdev->dev.platform_data;
if (pdata->exit)
pdata->exit(fbi->pdev);

fb_dealloc_cmap(&info->cmap);
kfree(info->pseudo_palette);
framebuffer_release(info);
Expand Down

0 comments on commit c0b90a3

Please sign in to comment.