diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2021-02-22 10:39:39 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2021-02-22 10:39:39 +0100 |
commit | 2b1f426e511bf5b41c84d05ec09949ebd5dc216e (patch) | |
tree | fcf06dba00432686c8c0bd5137357d2aabf356f8 /drivers/video | |
parent | 774f731a63500deec5d529bb17a75a983f3a4629 (diff) | |
parent | fdb315c4a0764c43916236363a0060972108f5d5 (diff) | |
download | barebox-2b1f426e511bf5b41c84d05ec09949ebd5dc216e.tar.gz barebox-2b1f426e511bf5b41c84d05ec09949ebd5dc216e.tar.xz |
Merge branch 'for-next/sound'
Diffstat (limited to 'drivers/video')
-rw-r--r-- | drivers/video/Kconfig | 1 | ||||
-rw-r--r-- | drivers/video/sdl.c | 37 |
2 files changed, 24 insertions, 14 deletions
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index 9ec6ea4248..b6d468c63c 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -82,6 +82,7 @@ endif config DRIVER_VIDEO_SDL bool "SDL framebuffer driver" depends on SANDBOX + select SDL config DRIVER_VIDEO_PXA bool "PXA27x framebuffer driver" diff --git a/drivers/video/sdl.c b/drivers/video/sdl.c index 9811b2cf12..e9debc51b1 100644 --- a/drivers/video/sdl.c +++ b/drivers/video/sdl.c @@ -13,23 +13,25 @@ #include <errno.h> #include <gui/graphic_utils.h> +#define to_mask(color) GENMASK(color.length - 1, color.offset) + static void sdlfb_enable(struct fb_info *info) { - int ret; - - ret = sdl_open(info->xres, info->yres, info->bits_per_pixel, - info->screen_base); - if (ret) - return; - sdl_get_bitfield_rgba(&info->red, &info->green, &info->blue, &info->transp); - - sdl_start_timer(); + struct sdl_fb_info sdl_info = { + .screen_base = info->screen_base, + .xres = info->xres, .yres = info->yres, .bpp = info->bits_per_pixel, + .rmask = to_mask(info->red), + .gmask = to_mask(info->green), + .bmask = to_mask(info->blue), + .amask = to_mask(info->transp), + }; + + sdl_video_open(&sdl_info); } static void sdlfb_disable(struct fb_info *info) { - sdl_stop_timer(); - sdl_close(); + sdl_video_close(); } static struct fb_ops sdlfb_ops = { @@ -48,10 +50,19 @@ static int sdlfb_probe(struct device_d *dev) fb = xzalloc(sizeof(*fb)); fb->modes.modes = fb->mode = dev->platform_data; fb->modes.num_modes = 1; - fb->bits_per_pixel = 4 << 3; fb->xres = fb->mode->xres; fb->yres = fb->mode->yres; + fb->bits_per_pixel = 32; + fb->transp.length = 8; + fb->red.length = 8; + fb->green.length = 8; + fb->blue.length = 8; + fb->transp.offset = 24; + fb->red.offset = 16; + fb->green.offset = 8; + fb->blue.offset = 0; + fb->priv = fb; fb->fbops = &sdlfb_ops; @@ -68,7 +79,6 @@ static int sdlfb_probe(struct device_d *dev) kfree(fb->screen_base); kfree(fb); - sdl_close(); return ret; } @@ -78,7 +88,6 @@ static void sdlfb_remove(struct device_d *dev) kfree(fb->screen_base); kfree(fb); - sdl_close(); } static struct driver_d sdlfb_driver = { |