When CONFIG_FB_DEVICE is disabled, struct fb_info does
not provide a valid dev pointer. Direct dereferences of
fb_info->dev therefore result in build failures.

Fix this by avoiding direct accesses to fb_info->dev and
switching the affected debug logging to framebuffer helpers
that do not rely on a device pointer.

This fixes the following build failure reported by the
kernel test robot.

Fixes: a06d03f9f238 ("staging: fbtft: Make FB_DEVICE dependency optional")
Reported-by: kernel test robot <[email protected]>
Closes: 
https://lore.kernel.org/oe-kbuild-all/[email protected]
Reviewed-by: Andy Shevchenko <[email protected]>
Signed-off-by: Chintan Patel <[email protected]>

---
Changes in v8:
- Add Reviewed-by tag from Andy Shevchenko.

Changes in v7:
- Split logging cleanups into a separate patch
- Limit this patch to the CONFIG_FB_DEVICE=n build fix only

Changes in v6:
- Switch debug/info logging to fb_dbg() and fb_info()(suggested by Thomas 
Zimmermann)
- Drop dev_of_fbinfo() usage in favor of framebuffer helpers that implicitly
  handle the debug/info context.
- Drop __func__ usage per review feedback(suggested by greg k-h)
- Add Fixes tag for a06d03f9f238 ("staging: fbtft: Make FB_DEVICE dependency 
optional")
  (suggested by Andy Shevchenko)

Changes in v5:
- Initial attempt to replace info->dev accesses using
  dev_of_fbinfo() helper

 drivers/staging/fbtft/fbtft-core.c | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/drivers/staging/fbtft/fbtft-core.c 
b/drivers/staging/fbtft/fbtft-core.c
index 8a5ccc8ae0a1..1b3b62950205 100644
--- a/drivers/staging/fbtft/fbtft-core.c
+++ b/drivers/staging/fbtft/fbtft-core.c
@@ -365,9 +365,9 @@ static int fbtft_fb_setcolreg(unsigned int regno, unsigned 
int red,
        unsigned int val;
        int ret = 1;
 
-       dev_dbg(info->dev,
-               "%s(regno=%u, red=0x%X, green=0x%X, blue=0x%X, trans=0x%X)\n",
-               __func__, regno, red, green, blue, transp);
+       fb_dbg(info,
+              "regno=%u, red=0x%X, green=0x%X, blue=0x%X, trans=0x%X\n",
+              regno, red, green, blue, transp);
 
        switch (info->fix.visual) {
        case FB_VISUAL_TRUECOLOR:
@@ -391,8 +391,7 @@ static int fbtft_fb_blank(int blank, struct fb_info *info)
        struct fbtft_par *par = info->par;
        int ret = -EINVAL;
 
-       dev_dbg(info->dev, "%s(blank=%d)\n",
-               __func__, blank);
+       fb_dbg(info, "blank=%d\n", blank);
 
        if (!par->fbtftops.blank)
                return ret;
@@ -793,11 +792,11 @@ int fbtft_register_framebuffer(struct fb_info *fb_info)
        if (spi)
                sprintf(text2, ", spi%d.%d at %d MHz", spi->controller->bus_num,
                        spi_get_chipselect(spi, 0), spi->max_speed_hz / 
1000000);
-       dev_info(fb_info->dev,
-                "%s frame buffer, %dx%d, %d KiB video memory%s, fps=%lu%s\n",
-                fb_info->fix.id, fb_info->var.xres, fb_info->var.yres,
-                fb_info->fix.smem_len >> 10, text1,
-                HZ / fb_info->fbdefio->delay, text2);
+       fb_info(fb_info,
+               "%s frame buffer, %dx%d, %d KiB video memory%s, fps=%lu%s\n",
+               fb_info->fix.id, fb_info->var.xres, fb_info->var.yres,
+               fb_info->fix.smem_len >> 10, text1,
+               HZ / fb_info->fbdefio->delay, text2);
 
        /* Turn on backlight if available */
        if (fb_info->bl_dev) {
-- 
2.43.0

Reply via email to