Re: [PATCH v4 2/4] staging: fbtft: Make FB_DEVICE dependency optional

Thomas Zimmermann
2026-01-07T07:33:09Z

Am 07.01.26 um 05:42 schrieb Chintan Patel:
> fbtft provides sysfs interfaces for debugging and gamma configuration,
> but these are not required for the core driver.
>
> Drop the hard dependency on CONFIG_FB_DEVICE and make sysfs support
> optional by using dev_of_fbinfo() at runtime. When FB_DEVICE is disabled,
> sysfs operations are skipped while the code remains buildable and
> type-checked.
>
> Suggested-by: Thomas Zimmermann <tzimmermann@suse.de>
> Suggested-by: Helge Deller <deller@gmx.de>
> Reviewed-by: Helge Deller <deller@gmx.de>
> Signed-off-by: Chintan Patel <chintanlike@gmail.com>

Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>

> ---
> drivers/staging/fbtft/Kconfig | 5 ++++-
> drivers/staging/fbtft/fbtft-sysfs.c | 20 ++++++++++++++++----
> 2 files changed, 20 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/staging/fbtft/Kconfig b/drivers/staging/fbtft/Kconfig
> index c2655768209a..578412a2f379 100644
> --- a/drivers/staging/fbtft/Kconfig
> +++ b/drivers/staging/fbtft/Kconfig
> @@ -2,11 +2,14 @@
> menuconfig FB_TFT
> tristate "Support for small TFT LCD display modules"
> depends on FB && SPI
> - depends on FB_DEVICE
> depends on BACKLIGHT_CLASS_DEVICE
> depends on GPIOLIB || COMPILE_TEST
> select FB_BACKLIGHT
> select FB_SYSMEM_HELPERS_DEFERRED
> + help
> + Support for small TFT LCD display modules over SPI bus. FB_DEVICE
> + is not required, but if enabled, provides sysfs interface for debugging
> + and gamma curve configuration.
>
> if FB_TFT
>
> diff --git a/drivers/staging/fbtft/fbtft-sysfs.c b/drivers/staging/fbtft/fbtft-sysfs.c
> index e45c90a03a90..d05599d80011 100644
> --- a/drivers/staging/fbtft/fbtft-sysfs.c
> +++ b/drivers/staging/fbtft/fbtft-sysfs.c
> @@ -203,14 +203,26 @@ static struct device_attribute debug_device_attr =
>
> void fbtft_sysfs_init(struct fbtft_par *par)
> {
> - device_create_file(par->info->dev, &debug_device_attr);
> + struct device *dev;
> +
> + dev = dev_of_fbinfo(par->info);
> + if (!dev)
> + return;
> +
> + device_create_file(dev, &debug_device_attr);
> if (par->gamma.curves && par->fbtftops.set_gamma)
> - device_create_file(par->info->dev, &gamma_device_attrs[0]);
> + device_create_file(dev, &gamma_device_attrs[0]);
> }
>
> void fbtft_sysfs_exit(struct fbtft_par *par)
> {
> - device_remove_file(par->info->dev, &debug_device_attr);
> + struct device *dev;
> +
> + dev = dev_of_fbinfo(par->info);
> + if (!dev)
> + return;
> +
> + device_remove_file(dev, &debug_device_attr);
> if (par->gamma.curves && par->fbtftops.set_gamma)
> - device_remove_file(par->info->dev, &gamma_device_attrs[0]);
> + device_remove_file(dev, &gamma_device_attrs[0]);
> }

--
--
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)