this function is shared by several boards and thus can be factorized Signed-off-by: Eric Bénard <eric@eukrea.com> Acked-by: Eric Nelson <eric.nelson@boundarydevices.com> Acked-by: Stefano Babic <sbabic@denx.de>master
parent
1b82491ee6
commit
93ad66ced3
@ -0,0 +1,55 @@ |
||||
/*
|
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <asm/errno.h> |
||||
#include <asm/imx-common/video.h> |
||||
|
||||
extern struct display_info_t const displays[]; |
||||
extern size_t display_count; |
||||
|
||||
int board_video_skip(void) |
||||
{ |
||||
int i; |
||||
int ret; |
||||
char const *panel = getenv("panel"); |
||||
if (!panel) { |
||||
for (i = 0; i < display_count; i++) { |
||||
struct display_info_t const *dev = displays+i; |
||||
if (dev->detect && dev->detect(dev)) { |
||||
panel = dev->mode.name; |
||||
printf("auto-detected panel %s\n", panel); |
||||
break; |
||||
} |
||||
} |
||||
if (!panel) { |
||||
panel = displays[0].mode.name; |
||||
printf("No panel detected: default to %s\n", panel); |
||||
i = 0; |
||||
} |
||||
} else { |
||||
for (i = 0; i < display_count; i++) { |
||||
if (!strcmp(panel, displays[i].mode.name)) |
||||
break; |
||||
} |
||||
} |
||||
if (i < display_count) { |
||||
ret = ipuv3_fb_init(&displays[i].mode, 0, |
||||
displays[i].pixfmt); |
||||
if (!ret) { |
||||
displays[i].enable(displays+i); |
||||
printf("Display: %s (%ux%u)\n", |
||||
displays[i].mode.name, |
||||
displays[i].mode.xres, |
||||
displays[i].mode.yres); |
||||
} else |
||||
printf("LCD %s cannot be configured: %d\n", |
||||
displays[i].mode.name, ret); |
||||
} else { |
||||
printf("unsupported panel %s\n", panel); |
||||
return -EINVAL; |
||||
} |
||||
|
||||
return 0; |
||||
} |
@ -0,0 +1,20 @@ |
||||
/*
|
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
#ifndef __IMX_VIDEO_H_ |
||||
#define __IMX_VIDEO_H_ |
||||
|
||||
#include <linux/fb.h> |
||||
#include <ipu_pixfmt.h> |
||||
|
||||
struct display_info_t { |
||||
int bus; |
||||
int addr; |
||||
int pixfmt; |
||||
int (*detect)(struct display_info_t const *dev); |
||||
void (*enable)(struct display_info_t const *dev); |
||||
struct fb_videomode mode; |
||||
}; |
||||
|
||||
#endif |
Loading…
Reference in new issue