[PATCH] staging: fbtft: remove sysfs debug interface

Harshit Shaw posted 1 patch 1 month ago
drivers/staging/fbtft/fbtft-core.c  |   3 -
drivers/staging/fbtft/fbtft-sysfs.c | 111 ----------------------------
drivers/staging/fbtft/internal.h    |   2 -
3 files changed, 116 deletions(-)
[PATCH] staging: fbtft: remove sysfs debug interface
Posted by Harshit Shaw 1 month ago
The debug sysfs entry exposed via device_create_file() is not the
correct approach. Remove fbtft_sysfs_init() and fbtft_sysfs_exit()
along with the debug sysfs attribute. Drivers should use the standard
kernel debug API (dev_dbg/pr_debug) instead.

Signed-off-by: Harshit Shaw <shawharshit116@gmail.com>
---
 drivers/staging/fbtft/fbtft-core.c  |   3 -
 drivers/staging/fbtft/fbtft-sysfs.c | 111 ----------------------------
 drivers/staging/fbtft/internal.h    |   2 -
 3 files changed, 116 deletions(-)

diff --git a/drivers/staging/fbtft/fbtft-core.c b/drivers/staging/fbtft/fbtft-core.c
index 3da42c8ca6e3..e6d33127cecc 100644
--- a/drivers/staging/fbtft/fbtft-core.c
+++ b/drivers/staging/fbtft/fbtft-core.c
@@ -782,8 +782,6 @@ int fbtft_register_framebuffer(struct fb_info *fb_info)
 	if (ret < 0)
 		goto reg_fail;
 
-	fbtft_sysfs_init(par);
-
 	if (par->txbuf.buf && par->txbuf.len >= 1024)
 		sprintf(text1, ", %zu KiB buffer memory", par->txbuf.len >> 10);
 	if (spi)
@@ -826,7 +824,6 @@ int fbtft_unregister_framebuffer(struct fb_info *fb_info)
 
 	if (par->fbtftops.unregister_backlight)
 		par->fbtftops.unregister_backlight(par);
-	fbtft_sysfs_exit(par);
 	unregister_framebuffer(fb_info);
 
 	return 0;
diff --git a/drivers/staging/fbtft/fbtft-sysfs.c b/drivers/staging/fbtft/fbtft-sysfs.c
index d05599d80011..925b6c699599 100644
--- a/drivers/staging/fbtft/fbtft-sysfs.c
+++ b/drivers/staging/fbtft/fbtft-sysfs.c
@@ -89,63 +89,6 @@ int fbtft_gamma_parse_str(struct fbtft_par *par, u32 *curves,
 	return ret;
 }
 
-static ssize_t
-sprintf_gamma(struct fbtft_par *par, u32 *curves, char *buf)
-{
-	ssize_t len = 0;
-	unsigned int i, j;
-
-	mutex_lock(&par->gamma.lock);
-	for (i = 0; i < par->gamma.num_curves; i++) {
-		for (j = 0; j < par->gamma.num_values; j++)
-			len += scnprintf(&buf[len], PAGE_SIZE,
-			     "%04x ", curves[i * par->gamma.num_values + j]);
-		buf[len - 1] = '\n';
-	}
-	mutex_unlock(&par->gamma.lock);
-
-	return len;
-}
-
-static ssize_t store_gamma_curve(struct device *device,
-				 struct device_attribute *attr,
-				 const char *buf, size_t count)
-{
-	struct fb_info *fb_info = dev_get_drvdata(device);
-	struct fbtft_par *par = fb_info->par;
-	u32 tmp_curves[FBTFT_GAMMA_MAX_VALUES_TOTAL];
-	int ret;
-
-	ret = fbtft_gamma_parse_str(par, tmp_curves, buf, count);
-	if (ret)
-		return ret;
-
-	ret = par->fbtftops.set_gamma(par, tmp_curves);
-	if (ret)
-		return ret;
-
-	mutex_lock(&par->gamma.lock);
-	memcpy(par->gamma.curves, tmp_curves,
-	       par->gamma.num_curves * par->gamma.num_values *
-	       sizeof(tmp_curves[0]));
-	mutex_unlock(&par->gamma.lock);
-
-	return count;
-}
-
-static ssize_t show_gamma_curve(struct device *device,
-				struct device_attribute *attr, char *buf)
-{
-	struct fb_info *fb_info = dev_get_drvdata(device);
-	struct fbtft_par *par = fb_info->par;
-
-	return sprintf_gamma(par, par->gamma.curves, buf);
-}
-
-static struct device_attribute gamma_device_attrs[] = {
-	__ATTR(gamma, 0660, show_gamma_curve, store_gamma_curve),
-};
-
 void fbtft_expand_debug_value(unsigned long *debug)
 {
 	switch (*debug & 0x7) {
@@ -172,57 +115,3 @@ void fbtft_expand_debug_value(unsigned long *debug)
 		break;
 	}
 }
-
-static ssize_t store_debug(struct device *device,
-			   struct device_attribute *attr,
-			   const char *buf, size_t count)
-{
-	struct fb_info *fb_info = dev_get_drvdata(device);
-	struct fbtft_par *par = fb_info->par;
-	int ret;
-
-	ret = kstrtoul(buf, 10, &par->debug);
-	if (ret)
-		return ret;
-	fbtft_expand_debug_value(&par->debug);
-
-	return count;
-}
-
-static ssize_t show_debug(struct device *device,
-			  struct device_attribute *attr, char *buf)
-{
-	struct fb_info *fb_info = dev_get_drvdata(device);
-	struct fbtft_par *par = fb_info->par;
-
-	return sysfs_emit(buf, "%lu\n", par->debug);
-}
-
-static struct device_attribute debug_device_attr =
-	__ATTR(debug, 0660, show_debug, store_debug);
-
-void fbtft_sysfs_init(struct fbtft_par *par)
-{
-	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(dev, &gamma_device_attrs[0]);
-}
-
-void fbtft_sysfs_exit(struct fbtft_par *par)
-{
-	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(dev, &gamma_device_attrs[0]);
-}
diff --git a/drivers/staging/fbtft/internal.h b/drivers/staging/fbtft/internal.h
index ae2ff4a4a472..7869cf8dbf2a 100644
--- a/drivers/staging/fbtft/internal.h
+++ b/drivers/staging/fbtft/internal.h
@@ -4,8 +4,6 @@
 #ifndef __LINUX_FBTFT_INTERNAL_H
 #define __LINUX_FBTFT_INTERNAL_H
 
-void fbtft_sysfs_init(struct fbtft_par *par);
-void fbtft_sysfs_exit(struct fbtft_par *par);
 void fbtft_expand_debug_value(unsigned long *debug);
 int fbtft_gamma_parse_str(struct fbtft_par *par, u32 *curves,
 			  const char *str, int size);
-- 
2.53.0
Re: [PATCH] staging: fbtft: remove sysfs debug interface
Posted by Greg KH 1 month ago
On Mon, May 11, 2026 at 06:09:12PM +0000, Harshit Shaw wrote:
> The debug sysfs entry exposed via device_create_file() is not the
> correct approach. Remove fbtft_sysfs_init() and fbtft_sysfs_exit()
> along with the debug sysfs attribute. Drivers should use the standard
> kernel debug API (dev_dbg/pr_debug) instead.
> 
> Signed-off-by: Harshit Shaw <shawharshit116@gmail.com>
> ---
>  drivers/staging/fbtft/fbtft-core.c  |   3 -
>  drivers/staging/fbtft/fbtft-sysfs.c | 111 ----------------------------
>  drivers/staging/fbtft/internal.h    |   2 -
>  3 files changed, 116 deletions(-)
> 
> diff --git a/drivers/staging/fbtft/fbtft-core.c b/drivers/staging/fbtft/fbtft-core.c
> index 3da42c8ca6e3..e6d33127cecc 100644
> --- a/drivers/staging/fbtft/fbtft-core.c
> +++ b/drivers/staging/fbtft/fbtft-core.c
> @@ -782,8 +782,6 @@ int fbtft_register_framebuffer(struct fb_info *fb_info)
>  	if (ret < 0)
>  		goto reg_fail;
>  
> -	fbtft_sysfs_init(par);
> -
>  	if (par->txbuf.buf && par->txbuf.len >= 1024)
>  		sprintf(text1, ", %zu KiB buffer memory", par->txbuf.len >> 10);
>  	if (spi)
> @@ -826,7 +824,6 @@ int fbtft_unregister_framebuffer(struct fb_info *fb_info)
>  
>  	if (par->fbtftops.unregister_backlight)
>  		par->fbtftops.unregister_backlight(par);
> -	fbtft_sysfs_exit(par);
>  	unregister_framebuffer(fb_info);
>  
>  	return 0;
> diff --git a/drivers/staging/fbtft/fbtft-sysfs.c b/drivers/staging/fbtft/fbtft-sysfs.c
> index d05599d80011..925b6c699599 100644
> --- a/drivers/staging/fbtft/fbtft-sysfs.c
> +++ b/drivers/staging/fbtft/fbtft-sysfs.c
> @@ -89,63 +89,6 @@ int fbtft_gamma_parse_str(struct fbtft_par *par, u32 *curves,
>  	return ret;
>  }
>  
> -static ssize_t
> -sprintf_gamma(struct fbtft_par *par, u32 *curves, char *buf)
> -{
> -	ssize_t len = 0;
> -	unsigned int i, j;
> -
> -	mutex_lock(&par->gamma.lock);
> -	for (i = 0; i < par->gamma.num_curves; i++) {
> -		for (j = 0; j < par->gamma.num_values; j++)
> -			len += scnprintf(&buf[len], PAGE_SIZE,
> -			     "%04x ", curves[i * par->gamma.num_values + j]);
> -		buf[len - 1] = '\n';
> -	}
> -	mutex_unlock(&par->gamma.lock);
> -
> -	return len;
> -}
> -
> -static ssize_t store_gamma_curve(struct device *device,
> -				 struct device_attribute *attr,
> -				 const char *buf, size_t count)
> -{
> -	struct fb_info *fb_info = dev_get_drvdata(device);
> -	struct fbtft_par *par = fb_info->par;
> -	u32 tmp_curves[FBTFT_GAMMA_MAX_VALUES_TOTAL];
> -	int ret;
> -
> -	ret = fbtft_gamma_parse_str(par, tmp_curves, buf, count);
> -	if (ret)
> -		return ret;
> -
> -	ret = par->fbtftops.set_gamma(par, tmp_curves);
> -	if (ret)
> -		return ret;
> -
> -	mutex_lock(&par->gamma.lock);
> -	memcpy(par->gamma.curves, tmp_curves,
> -	       par->gamma.num_curves * par->gamma.num_values *
> -	       sizeof(tmp_curves[0]));
> -	mutex_unlock(&par->gamma.lock);
> -
> -	return count;
> -}
> -
> -static ssize_t show_gamma_curve(struct device *device,
> -				struct device_attribute *attr, char *buf)
> -{
> -	struct fb_info *fb_info = dev_get_drvdata(device);
> -	struct fbtft_par *par = fb_info->par;
> -
> -	return sprintf_gamma(par, par->gamma.curves, buf);
> -}
> -
> -static struct device_attribute gamma_device_attrs[] = {
> -	__ATTR(gamma, 0660, show_gamma_curve, store_gamma_curve),
> -};

This is not a debugging log level attribute, why remove that?

Again, first turn this into using the correct api (an attribute group),
then fix up the debugging functions that use the "debug" variable to not
do that, and then remove the debug attribute.

thanks,

greg k-h