Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 271258
b: refs/heads/master
c: 8be90b0
h: refs/heads/master
v: v3
  • Loading branch information
Manuel Lauss authored and Paul Mundt committed Jun 15, 2011
1 parent aea4f37 commit be4cf06
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 15 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 98707fcc044c2e6120448041bf738d1b134cfaa4
refs/heads/master: 8be90b07ac2a07b4f1eb685caa97e88b9f85ef27
53 changes: 39 additions & 14 deletions trunk/drivers/video/au1200fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,6 @@
#include <asm/mach-au1x00/au1000.h>
#include "au1200fb.h"

#ifndef CONFIG_FB_AU1200_DEVS
#define CONFIG_FB_AU1200_DEVS 4
#endif

#define DRIVER_NAME "au1200fb"
#define DRIVER_DESC "LCD controller driver for AU1200 processors"

Expand Down Expand Up @@ -154,7 +150,6 @@ struct au1200fb_device {
dma_addr_t fb_phys;
};

static struct fb_info *_au1200fb_infos[CONFIG_FB_AU1200_DEVS];
/********************************************************************/

/* LCD controller restrictions */
Expand All @@ -167,10 +162,18 @@ static struct fb_info *_au1200fb_infos[CONFIG_FB_AU1200_DEVS];
/* Default number of visible screen buffer to allocate */
#define AU1200FB_NBR_VIDEO_BUFFERS 1

/* Default maximum number of fb devices to create */
#define MAX_DEVICE_COUNT 4

/* Default window configuration entry to use (see windows[]) */
#define DEFAULT_WINDOW_INDEX 2

/********************************************************************/

static struct fb_info *_au1200fb_infos[MAX_DEVICE_COUNT];
static struct au1200_lcd *lcd = (struct au1200_lcd *) AU1200_LCD_ADDR;
static int window_index = 2; /* default is zero */
static int device_count = MAX_DEVICE_COUNT;
static int window_index = DEFAULT_WINDOW_INDEX; /* default is zero */
static int panel_index = 2; /* default is zero */
static struct window_settings *win;
static struct panel_settings *panel;
Expand Down Expand Up @@ -683,7 +686,7 @@ static int fbinfo2index (struct fb_info *fb_info)
{
int i;

for (i = 0; i < CONFIG_FB_AU1200_DEVS; ++i) {
for (i = 0; i < device_count; ++i) {
if (fb_info == _au1200fb_infos[i])
return i;
}
Expand Down Expand Up @@ -1599,7 +1602,7 @@ static int __devinit au1200fb_drv_probe(struct platform_device *dev)
/* Kickstart the panel */
au1200_setpanel(panel);

for (plane = 0; plane < CONFIG_FB_AU1200_DEVS; ++plane) {
for (plane = 0; plane < device_count; ++plane) {
bpp = winbpp(win->w[plane].mode_winctrl1);
if (win->w[plane].xres == 0)
win->w[plane].xres = panel->Xres;
Expand Down Expand Up @@ -1699,7 +1702,7 @@ static int __devexit au1200fb_drv_remove(struct platform_device *dev)
/* Turn off the panel */
au1200_setpanel(NULL);

for (plane = 0; plane < CONFIG_FB_AU1200_DEVS; ++plane) {
for (plane = 0; plane < device_count; ++plane) {
fbi = _au1200fb_infos[plane];
fbdev = fbi->par;

Expand Down Expand Up @@ -1741,7 +1744,7 @@ static int au1200fb_drv_resume(struct device *dev)
/* Kickstart the panel */
au1200_setpanel(panel);

for (i = 0; i < CONFIG_FB_AU1200_DEVS; i++) {
for (i = 0; i < device_count; i++) {
fbi = _au1200fb_infos[i];
au1200fb_fb_set_par(fbi);
}
Expand Down Expand Up @@ -1776,10 +1779,10 @@ static struct platform_driver au1200fb_driver = {

/* Kernel driver */

static void au1200fb_setup(void)
static int au1200fb_setup(void)
{
char* options = NULL;
char* this_opt;
char *options = NULL;
char *this_opt, *endptr;
int num_panels = ARRAY_SIZE(known_lcd_panels);
int panel_idx = -1;

Expand Down Expand Up @@ -1824,20 +1827,42 @@ static void au1200fb_setup(void)
nohwcursor = 1;
}

else if (strncmp(this_opt, "devices:", 8) == 0) {
this_opt += 8;
device_count = simple_strtol(this_opt,
&endptr, 0);
if ((device_count < 0) ||
(device_count > MAX_DEVICE_COUNT))
device_count = MAX_DEVICE_COUNT;
}

else if (strncmp(this_opt, "wincfg:", 7) == 0) {
this_opt += 7;
window_index = simple_strtol(this_opt,
&endptr, 0);
if ((window_index < 0) ||
(window_index >= ARRAY_SIZE(windows)))
window_index = DEFAULT_WINDOW_INDEX;
}

else if (strncmp(this_opt, "off", 3) == 0)
return 1;
/* Unsupported option */
else {
print_warn("Unsupported option \"%s\"", this_opt);
}
}
}
return 0;
}

static int __init au1200fb_init(void)
{
print_info("" DRIVER_DESC "");

/* Setup driver with options */
au1200fb_setup();
if (au1200fb_setup())
return -ENODEV;

/* Point to the panel selected */
panel = &known_lcd_panels[panel_index];
Expand Down

0 comments on commit be4cf06

Please sign in to comment.