Thread (11 messages) 11 messages, 2 authors, 2025-12-28

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

From: Andy Shevchenko <hidden>
Date: 2025-12-27 14:16:00
Also in: dri-devel, linux-fbdev, linux-omap, linux-staging

On Fri, Dec 19, 2025 at 7:43 AM Chintan Patel [off-list ref] wrote:
quoted hunk ↗ jump to hunk
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.

v2:
- Replace CONFIG_FB_DEVICE ifdefs with runtime checks
- Use dev_of_fbinfo() to guard sysfs creation and removal

Suggested-by: Thomas Zimmermann <tzimmermann@suse.de>
Suggested-by: Helge Deller <deller@gmx.de>
Signed-off-by: Chintan Patel <redacted>
---
 drivers/staging/fbtft/Kconfig       |  5 ++++-
 drivers/staging/fbtft/fbtft-sysfs.c | 18 ++++++++++++++----
 2 files changed, 18 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..848702fc871a 100644
--- a/drivers/staging/fbtft/fbtft-sysfs.c
+++ b/drivers/staging/fbtft/fbtft-sysfs.c
@@ -203,14 +203,24 @@ 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_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_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]);
 }
--
2.43.0

-- 
With Best Regards,
Andy Shevchenko
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help