From: Thomas Zimmermann <tzimmermann@suse.de> Date: 2024-02-12 10:17:21
Remove unnecessary dependencies in the include statements of the
header file <linux/fb.h>. Several files throughout the kernel include
the fbdev header, so reducing dependencies positively affects other
subsystems as well. Also fix up nouveau, which needs backlight.h in
one of its source files.
Thomas Zimmermann (7):
drm/nouveau: Include <linux/backlight.h>
fbdev: Do not include <linux/backlight.h> in header
fbdev: Do not include <linux/fs.h> in header
fbdev: Do not include <linux/notifier.h> in header
fbdev: Do not include <linux/slab.h> in header
fbdev: Clean up forward declarations in header file
fbdev: Clean up include statements in header file
drivers/gpu/drm/nouveau/dispnv50/disp.c | 1 +
include/linux/fb.h | 24 +++++++++++++-----------
2 files changed, 14 insertions(+), 11 deletions(-)
--
2.43.0
From: Thomas Zimmermann <tzimmermann@suse.de> Date: 2024-02-12 10:17:28
Resolved the proxy include via <linux/fb.h>, which does not require the
backlight header.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/nouveau/dispnv50/disp.c | 1 +
1 file changed, 1 insertion(+)
From: Thomas Zimmermann <tzimmermann@suse.de> Date: 2024-02-12 10:17:31
Add forward declarations for struct i2c_adapter and struct module, and
sort the list alphabetically.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
include/linux/fb.h | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
@@ -15,15 +15,17 @@#include<asm/fb.h>structbacklight_device;-structvm_area_struct;-structfb_info;structdevice;+structdevice_node;+structfb_info;structfile;+structi2c_adapter;structinode;+structmodule;structnotifier_block;structpage;structvideomode;-structdevice_node;+structvm_area_struct;/* Definitions below are used in the parsed monitor specs */#define FB_DPMS_ACTIVE_OFF 1
From: Thomas Zimmermann <tzimmermann@suse.de> Date: 2024-02-12 10:17:38
Include mutex.h, printk.h and types.h, remove several unnecessary
include statements, and sort the list alphabetically.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
include/linux/fb.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
From: Jani Nikula <jani.nikula@linux.intel.com> Date: 2024-02-12 10:24:23
On Mon, 12 Feb 2024, Thomas Zimmermann [off-list ref] wrote:
Remove unnecessary dependencies in the include statements of the
header file <linux/fb.h>. Several files throughout the kernel include
the fbdev header, so reducing dependencies positively affects other
subsystems as well. Also fix up nouveau, which needs backlight.h in
one of its source files.
On the series,
Reviewed-by: Jani Nikula <redacted>
Thomas Zimmermann (7):
drm/nouveau: Include <linux/backlight.h>
fbdev: Do not include <linux/backlight.h> in header
fbdev: Do not include <linux/fs.h> in header
fbdev: Do not include <linux/notifier.h> in header
fbdev: Do not include <linux/slab.h> in header
fbdev: Clean up forward declarations in header file
fbdev: Clean up include statements in header file
drivers/gpu/drm/nouveau/dispnv50/disp.c | 1 +
include/linux/fb.h | 24 +++++++++++++-----------
2 files changed, 14 insertions(+), 11 deletions(-)
drivers/staging/fbtft/fb_ssd1351.c:192:33: warning: initialization of 'struct fbtft_par *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
In file included from include/linux/device.h:15,
from include/linux/acpi.h:14,
from include/linux/spi/spi.h:9,
from drivers/staging/fbtft/fb_ssd1351.c:5:
drivers/staging/fbtft/fb_ssd1351.c:197:35: error: invalid use of undefined type 'struct backlight_device'
197 | __func__, bd->props.power, bd->props.fb_blank);
| ^~
include/linux/dev_printk.h:110:37: note: in definition of macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:433:17: note: in expansion of macro 'dev_info'
433 | dev_info((par)->info->device, format, ##arg); \
| ^~~~~~~~
drivers/staging/fbtft/fb_ssd1351.c:195:9: note: in expansion of macro 'fbtft_par_dbg'
195 | fbtft_par_dbg(DEBUG_BACKLIGHT, par,
| ^~~~~~~~~~~~~
drivers/staging/fbtft/fb_ssd1351.c:197:52: error: invalid use of undefined type 'struct backlight_device'
197 | __func__, bd->props.power, bd->props.fb_blank);
| ^~
include/linux/dev_printk.h:110:37: note: in definition of macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
drivers/staging/fbtft/fbtft.h:433:17: note: in expansion of macro 'dev_info'
433 | dev_info((par)->info->device, format, ##arg); \
| ^~~~~~~~
drivers/staging/fbtft/fb_ssd1351.c:195:9: note: in expansion of macro 'fbtft_par_dbg'
195 | fbtft_par_dbg(DEBUG_BACKLIGHT, par,
| ^~~~~~~~~~~~~
drivers/staging/fbtft/fb_ssd1351.c:199:15: error: implicit declaration of function 'backlight_is_blank' [-Werror=implicit-function-declaration]
199 | on = !backlight_is_blank(bd);
| ^~~~~~~~~~~~~~~~~~
drivers/staging/fbtft/fb_ssd1351.c: At top level:
drivers/staging/fbtft/fb_ssd1351.c:206:21: error: variable 'bl_ops' has initializer but incomplete type
206 | static const struct backlight_ops bl_ops = {
| ^~~~~~~~~~~~~
drivers/staging/fbtft/fb_ssd1351.c:207:10: error: 'const struct backlight_ops' has no member named 'update_status'
207 | .update_status = update_onboard_backlight,
| ^~~~~~~~~~~~~
quoted
drivers/staging/fbtft/fb_ssd1351.c:207:26: warning: excess elements in struct initializer
207 | .update_status = update_onboard_backlight,
| ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/staging/fbtft/fb_ssd1351.c:207:26: note: (near initialization for 'bl_ops')
drivers/staging/fbtft/fb_ssd1351.c: In function 'register_onboard_backlight':
drivers/staging/fbtft/fb_ssd1351.c:213:16: error: variable 'bl_props' has initializer but incomplete type
213 | struct backlight_properties bl_props = { 0, };
| ^~~~~~~~~~~~~~~~~~~~
drivers/staging/fbtft/fb_ssd1351.c:213:50: warning: excess elements in struct initializer
213 | struct backlight_properties bl_props = { 0, };
| ^
drivers/staging/fbtft/fb_ssd1351.c:213:50: note: (near initialization for 'bl_props')
drivers/staging/fbtft/fb_ssd1351.c:213:37: error: storage size of 'bl_props' isn't known
213 | struct backlight_properties bl_props = { 0, };
| ^~~~~~~~
drivers/staging/fbtft/fb_ssd1351.c:215:25: error: 'BACKLIGHT_RAW' undeclared (first use in this function); did you mean 'FB_BACKLIGHT_MAX'?
215 | bl_props.type = BACKLIGHT_RAW;
| ^~~~~~~~~~~~~
| FB_BACKLIGHT_MAX
drivers/staging/fbtft/fb_ssd1351.c:215:25: note: each undeclared identifier is reported only once for each function it appears in
drivers/staging/fbtft/fb_ssd1351.c:218:14: error: implicit declaration of function 'backlight_device_register'; did you mean 'root_device_register'? [-Werror=implicit-function-declaration]
218 | bd = backlight_device_register(dev_driver_string(par->info->device),
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| root_device_register
drivers/staging/fbtft/fb_ssd1351.c:192:26: error: call to undeclared function 'bl_get_data'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
drivers/staging/fbtft/fb_ssd1351.c:192:20: error: incompatible integer to pointer conversion initializing 'struct fbtft_par *' with an expression of type 'int' [-Wint-conversion]
drivers/staging/fbtft/fb_ssd1351.c:199:8: error: call to undeclared function 'backlight_is_blank'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
199 | on = !backlight_is_blank(bd);
| ^
quoted
drivers/staging/fbtft/fb_ssd1351.c:206:35: error: variable has incomplete type 'const struct backlight_ops'
drivers/staging/fbtft/fb_ssd1351.c:215:18: error: use of undeclared identifier 'BACKLIGHT_RAW'
215 | bl_props.type = BACKLIGHT_RAW;
| ^
quoted
drivers/staging/fbtft/fb_ssd1351.c:218:7: error: call to undeclared function 'backlight_device_register'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
218 | bd = backlight_device_register(dev_driver_string(par->info->device),
| ^
drivers/staging/fbtft/fb_ssd1351.c:218:7: note: did you mean '__root_device_register'?
include/linux/device.h:1143:16: note: '__root_device_register' declared here
1143 | struct device *__root_device_register(const char *name, struct module *owner);
| ^
9 errors generated.
vim +197 drivers/staging/fbtft/fb_ssd1351.c
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 189
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 190 static int update_onboard_backlight(struct backlight_device *bd)
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 191 {
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 @192 struct fbtft_par *par = bl_get_data(bd);
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 193 bool on;
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 194
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 195 fbtft_par_dbg(DEBUG_BACKLIGHT, par,
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 196 "%s: power=%d, fb_blank=%d\n",
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 @197 __func__, bd->props.power, bd->props.fb_blank);
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 198
66d653c37228cb Stephen Kitt 2022-06-07 @199 on = !backlight_is_blank(bd);
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 200 /* Onboard backlight connected to GPIO0 on SSD1351, GPIO1 unused */
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 201 write_reg(par, 0xB5, on ? 0x03 : 0x02);
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 202
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 203 return 0;
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 204 }
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 205
23801e3438f6ce Mike Rapoport 2015-09-03 @206 static const struct backlight_ops bl_ops = {
23801e3438f6ce Mike Rapoport 2015-09-03 207 .update_status = update_onboard_backlight,
23801e3438f6ce Mike Rapoport 2015-09-03 208 };
23801e3438f6ce Mike Rapoport 2015-09-03 209
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 210 static void register_onboard_backlight(struct fbtft_par *par)
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 211 {
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 212 struct backlight_device *bd;
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 @213 struct backlight_properties bl_props = { 0, };
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 214
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 @215 bl_props.type = BACKLIGHT_RAW;
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 216 bl_props.power = FB_BLANK_POWERDOWN;
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 217
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 @218 bd = backlight_device_register(dev_driver_string(par->info->device),
333c7b940526be Leonardo Brás 2018-08-07 219 par->info->device, par, &bl_ops,
333c7b940526be Leonardo Brás 2018-08-07 220 &bl_props);
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 221 if (IS_ERR(bd)) {
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 222 dev_err(par->info->device,
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 223 "cannot register backlight device (%ld)\n",
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 224 PTR_ERR(bd));
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 225 return;
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 226 }
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 227 par->info->bl_dev = bd;
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 228
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 229 if (!par->fbtftops.unregister_backlight)
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 230 par->fbtftops.unregister_backlight = fbtft_unregister_backlight;
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 231 }
883daf0a5c35c8 Thomas Petazzoni 2014-12-31 232
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
From: kernel test robot <hidden> Date: 2024-02-13 05:44:25
Hi Thomas,
kernel test robot noticed the following build warnings:
[auto build test WARNING on drm-misc/drm-misc-next]
[also build test WARNING on linus/master v6.8-rc4 next-20240212]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Thomas-Zimmermann/drm-nouveau-Include-linux-backlight-h/20240212-181930
base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link: https://lore.kernel.org/r/20240212101712.23675-3-tzimmermann%40suse.de
patch subject: [PATCH 2/7] fbdev: Do not include <linux/backlight.h> in header
config: powerpc-ppc6xx_defconfig (https://download.01.org/0day-ci/archive/20240213/202402131349.eg8DJ3MB-lkp@intel.com/config)
compiler: powerpc-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240213/202402131349.eg8DJ3MB-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot [off-list ref]
| Closes: https://lore.kernel.org/oe-kbuild-all/202402131349.eg8DJ3MB-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/macintosh/via-pmu-backlight.c: In function '__pmu_backlight_update_status':
drivers/macintosh/via-pmu-backlight.c:74:21: error: implicit declaration of function 'backlight_get_brightness'; did you mean 'pmu_backlight_get_level_brightness'? [-Werror=implicit-function-declaration]
74 | int level = backlight_get_brightness(bd);
| ^~~~~~~~~~~~~~~~~~~~~~~~
| pmu_backlight_get_level_brightness
drivers/macintosh/via-pmu-backlight.c: At top level:
drivers/macintosh/via-pmu-backlight.c:108:21: error: variable 'pmu_backlight_data' has initializer but incomplete type
108 | static const struct backlight_ops pmu_backlight_data = {
| ^~~~~~~~~~~~~
drivers/macintosh/via-pmu-backlight.c:109:10: error: 'const struct backlight_ops' has no member named 'update_status'
109 | .update_status = pmu_backlight_update_status,
| ^~~~~~~~~~~~~
quoted
drivers/macintosh/via-pmu-backlight.c:109:27: warning: excess elements in struct initializer
109 | .update_status = pmu_backlight_update_status,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/macintosh/via-pmu-backlight.c:109:27: note: (near initialization for 'pmu_backlight_data')
drivers/macintosh/via-pmu-backlight.c: In function 'pmu_backlight_init':
drivers/macintosh/via-pmu-backlight.c:136:37: error: storage size of 'props' isn't known
136 | struct backlight_properties props;
| ^~~~~
drivers/macintosh/via-pmu-backlight.c:154:34: error: invalid application of 'sizeof' to incomplete type 'struct backlight_properties'
154 | memset(&props, 0, sizeof(struct backlight_properties));
| ^~~~~~
drivers/macintosh/via-pmu-backlight.c:155:22: error: 'BACKLIGHT_PLATFORM' undeclared (first use in this function)
155 | props.type = BACKLIGHT_PLATFORM;
| ^~~~~~~~~~~~~~~~~~
drivers/macintosh/via-pmu-backlight.c:155:22: note: each undeclared identifier is reported only once for each function it appears in
drivers/macintosh/via-pmu-backlight.c:157:14: error: implicit declaration of function 'backlight_device_register'; did you mean 'root_device_register'? [-Werror=implicit-function-declaration]
157 | bd = backlight_device_register(name, NULL, NULL, &pmu_backlight_data,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| root_device_register
drivers/macintosh/via-pmu-backlight.c:166:19: error: invalid use of undefined type 'struct backlight_device'
166 | level = bd->props.max_brightness;
| ^~
drivers/macintosh/via-pmu-backlight.c:176:35: error: invalid use of undefined type 'struct backlight_device'
176 | bd->props.max_brightness / 15);
| ^~
drivers/macintosh/via-pmu-backlight.c:179:11: error: invalid use of undefined type 'struct backlight_device'
179 | bd->props.brightness = level;
| ^~
drivers/macintosh/via-pmu-backlight.c:180:11: error: invalid use of undefined type 'struct backlight_device'
180 | bd->props.power = FB_BLANK_UNBLANK;
| ^~
drivers/macintosh/via-pmu-backlight.c:181:9: error: implicit declaration of function 'backlight_update_status'; did you mean 'pmu_backlight_update_status'? [-Werror=implicit-function-declaration]
181 | backlight_update_status(bd);
| ^~~~~~~~~~~~~~~~~~~~~~~
| pmu_backlight_update_status