From cbb594dcbc64d4e91304e500524b59bc5e2ee44d Mon Sep 17 00:00:00 2001 From: wangbowen6 Date: Mon, 10 Apr 2023 10:57:57 +0800 Subject: [PATCH] sim: add set/get_power for sim_framebuffer.c add set/get_power operation for sim_framebuffer to avoid assert in fb_ioctl(cmd= FBIOSET_POWER/FBIOGET_POWER) Signed-off-by: wangbowen6 --- arch/sim/src/sim/sim_framebuffer.c | 36 ++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/arch/sim/src/sim/sim_framebuffer.c b/arch/sim/src/sim/sim_framebuffer.c index 66c2784164..6ed5234c09 100644 --- a/arch/sim/src/sim/sim_framebuffer.c +++ b/arch/sim/src/sim/sim_framebuffer.c @@ -100,6 +100,11 @@ static int sim_setcursor(struct fb_vtable_s *vtable, static int sim_openwindow(struct fb_vtable_s *vtable); static int sim_closewindow(struct fb_vtable_s *vtable); +/* Get/set the panel power status (0: full off). */ + +static int sim_getpower(struct fb_vtable_s *vtable); +static int sim_setpower(struct fb_vtable_s *vtable, int power); + /**************************************************************************** * Private Data ****************************************************************************/ @@ -110,6 +115,8 @@ static int sim_closewindow(struct fb_vtable_s *vtable); static uint8_t g_fb[FB_SIZE]; #endif +static int g_fb_power = 100; + /* This structure describes the simulated video controller */ static const struct fb_videoinfo_s g_videoinfo = @@ -168,6 +175,8 @@ static struct fb_vtable_s g_fbobject = .open = sim_openwindow, .close = sim_closewindow, + .getpower = sim_getpower, + .setpower = sim_setpower, }; /**************************************************************************** @@ -372,6 +381,33 @@ static int sim_setcursor(struct fb_vtable_s *vtable, } #endif +/**************************************************************************** + * Name: sim_getpower + ****************************************************************************/ + +static int sim_getpower(struct fb_vtable_s *vtable) +{ + ginfo("vtable=%p power=%d\n", vtable, g_fb_power); + return g_fb_power; +} + +/**************************************************************************** + * Name: sim_setpower + ****************************************************************************/ + +static int sim_setpower(struct fb_vtable_s *vtable, int power) +{ + ginfo("vtable=%p power=%d\n", vtable, power); + if (power < 0) + { + gerr("ERROR: power=%d < 0\n", power); + return -EINVAL; + } + + g_fb_power = power; + return OK; +} + /**************************************************************************** * Public Functions ****************************************************************************/