mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Thomas Zimmermann <tzimmermann@suse.de>
To: Chintan Patel <chintanlike@gmail.com>,
	linux-fbdev@vger.kernel.org, linux-staging@lists.linux.dev,
	linux-omap@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	andy@kernel.org, deller@gmx.de, gregkh@linuxfoundation.org
Subject: Re: [PATCH 1/3] fbtft: Make sysfs and dev_*() logging conditional on FB_DEVICE
Date: Tue, 9 Dec 2025 08:25:39 +0100	[thread overview]
Message-ID: <329423e8-d778-4f30-904a-825b1be72ce2@suse.de> (raw)
In-Reply-To: <20251209042744.7875-2-chintanlike@gmail.com>

Hi

Am 09.12.25 um 05:27 schrieb Chintan Patel:
> The fbtft core and sysfs implementation unconditionally dereference
> fb_info->dev and register sysfs attributes. When FB_DEVICE=n, these
> fields are unavailable, leading to build failures.
>
> This patch wraps all sysfs attribute creation/removal and dev_dbg/dev_info
> logging in #ifdef CONFIG_FB_DEVICE, with pr_*() fallbacks for the
> non-FB_DEVICE case. This makes fbtft fully buildable when FB_DEVICE is
> disabled.
>
> Signed-off-by: Chintan Patel <chintanlike@gmail.com>
> ---
>   drivers/staging/fbtft/fbtft-core.c  | 20 ++++++++++++++++++--
>   drivers/staging/fbtft/fbtft-sysfs.c |  8 ++++++++
>   2 files changed, 26 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/staging/fbtft/fbtft-core.c b/drivers/staging/fbtft/fbtft-core.c
> index 9e7b84071174..dc967bdeabe8 100644
> --- a/drivers/staging/fbtft/fbtft-core.c
> +++ b/drivers/staging/fbtft/fbtft-core.c
> @@ -365,9 +365,14 @@ static int fbtft_fb_setcolreg(unsigned int regno, unsigned int red,
>   	unsigned int val;
>   	int ret = 1;
>   
> +#ifdef CONFIG_FB_DEVICE
>   	dev_dbg(info->dev,

Rather use fb_dbg() [1] and similar helpers for logging. They only need 
the info pointer and do the correct output by themselves.

[1] https://elixir.bootlin.com/linux/v6.18/source/include/linux/fb.h#L895

>   		"%s(regno=%u, red=0x%X, green=0x%X, blue=0x%X, trans=0x%X)\n",
>   		__func__, regno, red, green, blue, transp);
> +#else
> +	pr_debug("%s(regno=%u, red=0x%X, green=0x%X, blue=0x%X, trans=0x%X)\n",
> +		 __func__, regno, red, green, blue, transp);
> +#endif
>   
>   	switch (info->fix.visual) {
>   	case FB_VISUAL_TRUECOLOR:
> @@ -391,8 +396,11 @@ 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);
> +#ifdef CONFIG_FB_DEVICE
> +	dev_dbg(info->dev, "%s(blank=%d)\n", __func__, blank);
> +#else
> +	pr_debug("%s(blank=%d)\n", __func__, blank);
> +#endif
>   
>   	if (!par->fbtftops.blank)
>   		return ret;
> @@ -793,6 +801,8 @@ 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);
> +
> +#ifdef CONFIG_FB_DEVICE
>   	dev_info(fb_info->dev,

Same here with fb_info().

Best regards
Thomas

>   		 "%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,
> @@ -804,6 +814,12 @@ int fbtft_register_framebuffer(struct fb_info *fb_info)
>   		fb_info->bl_dev->props.power = BACKLIGHT_POWER_ON;
>   		fb_info->bl_dev->ops->update_status(fb_info->bl_dev);
>   	}
> +#else
> +	pr_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);
> +#endif
>   
>   	return 0;
>   
> diff --git a/drivers/staging/fbtft/fbtft-sysfs.c b/drivers/staging/fbtft/fbtft-sysfs.c
> index e45c90a03a90..944f74f592d0 100644
> --- a/drivers/staging/fbtft/fbtft-sysfs.c
> +++ b/drivers/staging/fbtft/fbtft-sysfs.c
> @@ -89,6 +89,7 @@ int fbtft_gamma_parse_str(struct fbtft_par *par, u32 *curves,
>   	return ret;
>   }
>   
> +#ifdef CONFIG_FB_DEVICE
>   static ssize_t
>   sprintf_gamma(struct fbtft_par *par, u32 *curves, char *buf)
>   {
> @@ -145,6 +146,7 @@ static ssize_t show_gamma_curve(struct device *device,
>   static struct device_attribute gamma_device_attrs[] = {
>   	__ATTR(gamma, 0660, show_gamma_curve, store_gamma_curve),
>   };
> +#endif
>   
>   void fbtft_expand_debug_value(unsigned long *debug)
>   {
> @@ -173,6 +175,7 @@ void fbtft_expand_debug_value(unsigned long *debug)
>   	}
>   }
>   
> +#ifdef CONFIG_FB_DEVICE
>   static ssize_t store_debug(struct device *device,
>   			   struct device_attribute *attr,
>   			   const char *buf, size_t count)
> @@ -200,17 +203,22 @@ static ssize_t show_debug(struct device *device,
>   
>   static struct device_attribute debug_device_attr =
>   	__ATTR(debug, 0660, show_debug, store_debug);
> +#endif
>   
>   void fbtft_sysfs_init(struct fbtft_par *par)
>   {
> +#ifdef CONFIG_FB_DEVICE
>   	device_create_file(par->info->dev, &debug_device_attr);
>   	if (par->gamma.curves && par->fbtftops.set_gamma)
>   		device_create_file(par->info->dev, &gamma_device_attrs[0]);
> +#endif
>   }
>   
>   void fbtft_sysfs_exit(struct fbtft_par *par)
>   {
> +#ifdef CONFIG_FB_DEVICE
>   	device_remove_file(par->info->dev, &debug_device_attr);
>   	if (par->gamma.curves && par->fbtftops.set_gamma)
>   		device_remove_file(par->info->dev, &gamma_device_attrs[0]);
> +#endif
>   }

-- 
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)



  reply	other threads:[~2025-12-09  7:25 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-09  4:27 [PATCH 0/3] fbdev: Guard sysfs interfaces under CONFIG_FB_DEVICE Chintan Patel
2025-12-09  4:27 ` [PATCH 1/3] fbtft: Make sysfs and dev_*() logging conditional on FB_DEVICE Chintan Patel
2025-12-09  7:25   ` Thomas Zimmermann [this message]
2025-12-10  4:24     ` Chintan Patel
2025-12-09  4:27 ` [PATCH 2/3] omapfb: Guard sysfs code under CONFIG_FB_DEVICE Chintan Patel
2025-12-09  4:27 ` [PATCH 3/3] sh_mobile_lcdc: Guard overlay sysfs interfaces " Chintan Patel
2025-12-09  7:27 ` [PATCH 0/3] fbdev: Guard " Thomas Zimmermann
2025-12-09  8:22   ` Helge Deller
2025-12-09  8:42     ` Thomas Zimmermann
2025-12-09 14:25     ` Andy Shevchenko
2025-12-10  4:26       ` Chintan Patel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=329423e8-d778-4f30-904a-825b1be72ce2@suse.de \
    --to=tzimmermann@suse.de \
    --cc=andy@kernel.org \
    --cc=chintanlike@gmail.com \
    --cc=deller@gmx.de \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-staging@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®