lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <202509270454.lBuADO4l-lkp@intel.com>
Date: Sat, 27 Sep 2025 04:58:56 +0800
From: kernel test robot <lkp@...el.com>
To: Sukrut Heroorkar <hsukrut3@...il.com>, Helge Deller <deller@....de>,
	Bernie Thompson <bernie@...gable.com>,
	Thomas Zimmermann <tzimmermann@...e.de>,
	Arnd Bergmann <arnd@...db.de>, Randy Dunlap <rdunlap@...radead.org>,
	Bartosz Golaszewski <bartosz.golaszewski@...aro.org>,
	Zsolt Kajtar <soci@....rulez.org>,
	Gonzalo Silvalde Blanco <gonzalo.silvalde@...il.com>,
	linux-fbdev@...r.kernel.org, dri-devel@...ts.freedesktop.org,
	linux-kernel@...r.kernel.org
Cc: oe-kbuild-all@...ts.linux.dev, skhan@...uxfoundation.org,
	david.hunter.linux@...il.com
Subject: Re: [PATCH] fbdev: udlfb: make CONFIG_FB_DEVICE optional

Hi Sukrut,

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.17-rc7 next-20250926]
[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/Sukrut-Heroorkar/fbdev-udlfb-make-CONFIG_FB_DEVICE-optional/20250925-015939
base:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link:    https://lore.kernel.org/r/20250924175743.6790-1-hsukrut3%40gmail.com
patch subject: [PATCH] fbdev: udlfb: make CONFIG_FB_DEVICE optional
config: x86_64-randconfig-075-20250927 (https://download.01.org/0day-ci/archive/20250927/202509270454.lBuADO4l-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250927/202509270454.lBuADO4l-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 <lkp@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202509270454.lBuADO4l-lkp@intel.com/

All warnings (new ones prefixed by >>):

     933 |         dev_dbg(info->dev, "open, user=%d fb_info=%p count=%d\n",
         |                     ^~
   include/linux/dynamic_debug.h:224:29: note: in definition of macro '__dynamic_func_call_cls'
     224 |                 func(&id, ##__VA_ARGS__);                       \
         |                             ^~~~~~~~~~~
   include/linux/dynamic_debug.h:250:9: note: in expansion of macro '_dynamic_func_call_cls'
     250 |         _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/dynamic_debug.h:273:9: note: in expansion of macro '_dynamic_func_call'
     273 |         _dynamic_func_call(fmt, __dynamic_dev_dbg,              \
         |         ^~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:165:9: note: in expansion of macro 'dynamic_dev_dbg'
     165 |         dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~
   drivers/video/fbdev/udlfb.c:933:9: note: in expansion of macro 'dev_dbg'
     933 |         dev_dbg(info->dev, "open, user=%d fb_info=%p count=%d\n",
         |         ^~~~~~~
   drivers/video/fbdev/udlfb.c: In function 'dlfb_ops_release':
   drivers/video/fbdev/udlfb.c:986:21: error: 'struct fb_info' has no member named 'dev'
     986 |         dev_dbg(info->dev, "release, user=%d count=%d\n", user, dlfb->fb_count);
         |                     ^~
   include/linux/dynamic_debug.h:224:29: note: in definition of macro '__dynamic_func_call_cls'
     224 |                 func(&id, ##__VA_ARGS__);                       \
         |                             ^~~~~~~~~~~
   include/linux/dynamic_debug.h:250:9: note: in expansion of macro '_dynamic_func_call_cls'
     250 |         _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/dynamic_debug.h:273:9: note: in expansion of macro '_dynamic_func_call'
     273 |         _dynamic_func_call(fmt, __dynamic_dev_dbg,              \
         |         ^~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:165:9: note: in expansion of macro 'dynamic_dev_dbg'
     165 |         dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~
   drivers/video/fbdev/udlfb.c:986:9: note: in expansion of macro 'dev_dbg'
     986 |         dev_dbg(info->dev, "release, user=%d count=%d\n", user, dlfb->fb_count);
         |         ^~~~~~~
   drivers/video/fbdev/udlfb.c: In function 'dlfb_ops_blank':
   drivers/video/fbdev/udlfb.c:1099:21: error: 'struct fb_info' has no member named 'dev'
    1099 |         dev_dbg(info->dev, "blank, mode %d --> %d\n",
         |                     ^~
   include/linux/dynamic_debug.h:224:29: note: in definition of macro '__dynamic_func_call_cls'
     224 |                 func(&id, ##__VA_ARGS__);                       \
         |                             ^~~~~~~~~~~
   include/linux/dynamic_debug.h:250:9: note: in expansion of macro '_dynamic_func_call_cls'
     250 |         _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/dynamic_debug.h:273:9: note: in expansion of macro '_dynamic_func_call'
     273 |         _dynamic_func_call(fmt, __dynamic_dev_dbg,              \
         |         ^~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:165:9: note: in expansion of macro 'dynamic_dev_dbg'
     165 |         dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~
   drivers/video/fbdev/udlfb.c:1099:9: note: in expansion of macro 'dev_dbg'
    1099 |         dev_dbg(info->dev, "blank, mode %d --> %d\n",
         |         ^~~~~~~
   In file included from include/linux/device.h:15,
                    from include/linux/usb.h:19,
                    from drivers/video/fbdev/udlfb.c:19:
   drivers/video/fbdev/udlfb.c: In function 'dlfb_realloc_framebuffer':
   drivers/video/fbdev/udlfb.c:1193:37: error: 'struct fb_info' has no member named 'dev'
    1193 |                         dev_err(info->dev, "Virtual framebuffer alloc failed\n");
         |                                     ^~
   include/linux/dev_printk.h:110:25: note: in definition of macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                         ^~~
   drivers/video/fbdev/udlfb.c:1193:25: note: in expansion of macro 'dev_err'
    1193 |                         dev_err(info->dev, "Virtual framebuffer alloc failed\n");
         |                         ^~~~~~~
   drivers/video/fbdev/udlfb.c:1217:38: error: 'struct fb_info' has no member named 'dev'
    1217 |                         dev_info(info->dev,
         |                                      ^~
   include/linux/dev_printk.h:110:25: note: in definition of macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                         ^~~
   drivers/video/fbdev/udlfb.c:1217:25: note: in expansion of macro 'dev_info'
    1217 |                         dev_info(info->dev,
         |                         ^~~~~~~~
   drivers/video/fbdev/udlfb.c: In function 'dlfb_setup_modes':
   drivers/video/fbdev/udlfb.c:1251:17: error: 'struct fb_info' has no member named 'dev'
    1251 |         if (info->dev) {
         |                 ^~
   drivers/video/fbdev/udlfb.c:1255:27: error: 'struct fb_info' has no member named 'dev'
    1255 |                 dev = info->dev;
         |                           ^~
   drivers/video/fbdev/udlfb.c:1379:17: error: 'struct fb_info' has no member named 'dev'
    1379 |         if (info->dev)
         |                 ^~
   drivers/video/fbdev/udlfb.c: In function 'dlfb_usb_probe':
   drivers/video/fbdev/udlfb.c:1720:45: error: 'struct fb_info' has no member named 'dev'
    1720 |         retval = device_create_bin_file(info->dev, &edid_attr);
         |                                             ^~
   drivers/video/fbdev/udlfb.c:1727:31: error: 'struct fb_info' has no member named 'dev'
    1727 |                  dev_name(info->dev), info->var.xres, info->var.yres,
         |                               ^~
   include/linux/dev_printk.h:110:37: note: in definition of macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                                     ^~~~~~~~~~~
   drivers/video/fbdev/udlfb.c:1725:9: note: in expansion of macro 'dev_info'
    1725 |         dev_info(info->device,
         |         ^~~~~~~~
>> drivers/video/fbdev/udlfb.c:1605:40: warning: unused variable 'attr' [-Wunused-variable]
    1605 |         const struct device_attribute *attr;
         |                                        ^~~~
>> drivers/video/fbdev/udlfb.c:1604:13: warning: unused variable 'i' [-Wunused-variable]
    1604 |         int i;
         |             ^
   drivers/video/fbdev/udlfb.c: In function 'dlfb_usb_disconnect':
   drivers/video/fbdev/udlfb.c:1767:36: error: 'struct fb_info' has no member named 'dev'
    1767 |         device_remove_bin_file(info->dev, &edid_attr);
         |                                    ^~
   drivers/video/fbdev/udlfb.c:1746:13: warning: unused variable 'i' [-Wunused-variable]
    1746 |         int i;
         |             ^
   drivers/video/fbdev/udlfb.c: At top level:
>> drivers/video/fbdev/udlfb.c:1468:16: warning: 'metrics_reset_store' defined but not used [-Wunused-function]
    1468 | static ssize_t metrics_reset_store(struct device *fbdev,
         |                ^~~~~~~~~~~~~~~~~~~


vim +/attr +1605 drivers/video/fbdev/udlfb.c

7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1467  
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15 @1468  static ssize_t metrics_reset_store(struct device *fbdev,
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1469  			   struct device_attribute *attr,
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1470  			   const char *buf, size_t count)
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1471  {
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1472  	struct fb_info *fb_info = dev_get_drvdata(fbdev);
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1473  	struct dlfb_data *dlfb = fb_info->par;
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1474  
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1475  	atomic_set(&dlfb->bytes_rendered, 0);
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1476  	atomic_set(&dlfb->bytes_identical, 0);
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1477  	atomic_set(&dlfb->bytes_sent, 0);
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1478  	atomic_set(&dlfb->cpu_kcycles_used, 0);
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1479  
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1480  	return count;
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1481  }
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1482  
598b2eedfc3fbe drivers/video/fbdev/udlfb.c   Bhumika Goyal      2017-08-18  1483  static const struct bin_attribute edid_attr = {
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1484  	.attr.name = "edid",
8ef8cc4fca4a92 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1485  	.attr.mode = 0666,
b9f03a3cd06c6f drivers/video/udlfb.c         Paul Mundt         2011-01-06  1486  	.size = EDID_LENGTH,
2fbe82037ab251 drivers/video/fbdev/udlfb.c   Thomas Weißschuh   2025-05-30  1487  	.read = edid_show,
2fbe82037ab251 drivers/video/fbdev/udlfb.c   Thomas Weißschuh   2025-05-30  1488  	.write = edid_store
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1489  };
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1490  
00bab805c21a22 drivers/video/fbdev/udlfb.c   Sukrut Heroorkar   2025-09-24  1491  #ifdef CONFIG_FB_DEVICE
fa738a5c4b2a6b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1492  static const struct device_attribute fb_device_attrs[] = {
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1493  	__ATTR_RO(metrics_bytes_rendered),
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1494  	__ATTR_RO(metrics_bytes_identical),
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1495  	__ATTR_RO(metrics_bytes_sent),
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1496  	__ATTR_RO(metrics_cpu_kcycles_used),
926c11151e3b82 drivers/staging/udlfb/udlfb.c Greg Kroah-Hartman 2010-11-18  1497  	__ATTR(metrics_reset, S_IWUSR, NULL, metrics_reset_store),
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1498  };
00bab805c21a22 drivers/video/fbdev/udlfb.c   Sukrut Heroorkar   2025-09-24  1499  #endif
7d9485e2c53caa drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1500  
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1501  /*
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1502   * This is necessary before we can communicate with the display controller.
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1503   */
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1504  static int dlfb_select_std_channel(struct dlfb_data *dlfb)
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1505  {
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1506  	int ret;
45f580c42e5c12 drivers/video/fbdev/udlfb.c   Maksim Salau       2017-05-02  1507  	static const u8 set_def_chn[] = {
45f580c42e5c12 drivers/video/fbdev/udlfb.c   Maksim Salau       2017-05-02  1508  				0x57, 0xCD, 0xDC, 0xA7,
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1509  				0x1C, 0x88, 0x5E, 0x15,
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1510  				0x60, 0xFE, 0xC6, 0x97,
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1511  				0x16, 0x3D, 0x47, 0xF2  };
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1512  
537adba4083ed8 drivers/video/fbdev/udlfb.c   Helge Deller       2023-05-19  1513  	ret = usb_control_msg_send(dlfb->udev, 0, NR_USB_REQUEST_CHANNEL,
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1514  			(USB_DIR_OUT | USB_TYPE_VENDOR), 0, 0,
537adba4083ed8 drivers/video/fbdev/udlfb.c   Helge Deller       2023-05-19  1515  			&set_def_chn, sizeof(set_def_chn), USB_CTRL_SET_TIMEOUT,
537adba4083ed8 drivers/video/fbdev/udlfb.c   Helge Deller       2023-05-19  1516  			GFP_KERNEL);
45f580c42e5c12 drivers/video/fbdev/udlfb.c   Maksim Salau       2017-05-02  1517  
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1518  	return ret;
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1519  }
cc403dc67d10b8 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1520  
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1521  static int dlfb_parse_vendor_descriptor(struct dlfb_data *dlfb,
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1522  					struct usb_interface *intf)
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1523  {
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1524  	char *desc;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1525  	char *buf;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1526  	char *desc_end;
f63cb8d7aa31e7 drivers/video/fbdev/udlfb.c   Alexey Klimov      2015-06-08  1527  	int total_len;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1528  
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1529  	buf = kzalloc(MAX_VENDOR_DESCRIPTOR_SIZE, GFP_KERNEL);
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1530  	if (!buf)
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1531  		return false;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1532  	desc = buf;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1533  
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1534  	total_len = usb_get_descriptor(interface_to_usbdev(intf),
f2e1fc9d5d12fb drivers/video/udlfb.c         Andrew Kephart     2011-08-21  1535  					0x5f, /* vendor specific */
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1536  					0, desc, MAX_VENDOR_DESCRIPTOR_SIZE);
f2e1fc9d5d12fb drivers/video/udlfb.c         Andrew Kephart     2011-08-21  1537  
f2e1fc9d5d12fb drivers/video/udlfb.c         Andrew Kephart     2011-08-21  1538  	/* if not found, look in configuration descriptor */
f2e1fc9d5d12fb drivers/video/udlfb.c         Andrew Kephart     2011-08-21  1539  	if (total_len < 0) {
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1540  		if (0 == usb_get_extra_descriptor(intf->cur_altsetting,
f2e1fc9d5d12fb drivers/video/udlfb.c         Andrew Kephart     2011-08-21  1541  			0x5f, &desc))
f2e1fc9d5d12fb drivers/video/udlfb.c         Andrew Kephart     2011-08-21  1542  			total_len = (int) desc[0];
f2e1fc9d5d12fb drivers/video/udlfb.c         Andrew Kephart     2011-08-21  1543  	}
f2e1fc9d5d12fb drivers/video/udlfb.c         Andrew Kephart     2011-08-21  1544  
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1545  	if (total_len > 5) {
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1546  		dev_info(&intf->dev,
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1547  			 "vendor descriptor length: %d data: %11ph\n",
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1548  			 total_len, desc);
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1549  
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1550  		if ((desc[0] != total_len) || /* descriptor length */
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1551  		    (desc[1] != 0x5f) ||   /* vendor descriptor type */
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1552  		    (desc[2] != 0x01) ||   /* version (2 bytes) */
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1553  		    (desc[3] != 0x00) ||
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1554  		    (desc[4] != total_len - 2)) /* length after type */
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1555  			goto unrecognized;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1556  
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1557  		desc_end = desc + total_len;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1558  		desc += 5; /* the fixed header we've already parsed */
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1559  
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1560  		while (desc < desc_end) {
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1561  			u8 length;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1562  			u16 key;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1563  
115e77597efcc9 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-03-12  1564  			key = *desc++;
115e77597efcc9 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-03-12  1565  			key |= (u16)*desc++ << 8;
115e77597efcc9 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-03-12  1566  			length = *desc++;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1567  
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1568  			switch (key) {
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1569  			case 0x0200: { /* max_area */
115e77597efcc9 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-03-12  1570  				u32 max_area = *desc++;
115e77597efcc9 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-03-12  1571  				max_area |= (u32)*desc++ << 8;
115e77597efcc9 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-03-12  1572  				max_area |= (u32)*desc++ << 16;
115e77597efcc9 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-03-12  1573  				max_area |= (u32)*desc++ << 24;
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1574  				dev_warn(&intf->dev,
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1575  					 "DL chip limited to %d pixel modes\n",
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1576  					 max_area);
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1577  				dlfb->sku_pixel_limit = max_area;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1578  				break;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1579  			}
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1580  			default:
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1581  				break;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1582  			}
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1583  			desc += length;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1584  		}
f2e1fc9d5d12fb drivers/video/udlfb.c         Andrew Kephart     2011-08-21  1585  	} else {
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1586  		dev_info(&intf->dev, "vendor descriptor not available (%d)\n",
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1587  			 total_len);
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1588  	}
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1589  
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1590  	goto success;
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1591  
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1592  unrecognized:
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1593  	/* allow udlfb to load for now even if firmware unrecognized */
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1594  	dev_err(&intf->dev, "Unrecognized vendor firmware descriptor\n");
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1595  
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1596  success:
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1597  	kfree(buf);
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1598  	return true;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1599  }
8d21547d3c9c3b drivers/video/udlfb.c         Bernie Thompson    2012-03-01  1600  
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1601  static int dlfb_usb_probe(struct usb_interface *intf,
59277b679f8b5c drivers/staging/udlfb/udlfb.c Bernie Thompson    2009-11-24  1602  			  const struct usb_device_id *id)
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-03  1603  {
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08 @1604  	int i;
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08 @1605  	const struct device_attribute *attr;
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1606  	struct dlfb_data *dlfb;
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1607  	struct fb_info *info;
aaf7dbe07385e0 drivers/video/fbdev/udlfb.c   Pavel Skripkin     2022-03-22  1608  	int retval;
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1609  	struct usb_device *usbdev = interface_to_usbdev(intf);
ed9de4ed398757 drivers/video/fbdev/udlfb.c   Alan Stern         2023-05-19  1610  	static u8 out_ep[] = {OUT_EP_NUM + USB_DIR_OUT, 0};
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-03  1611  
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1612  	/* usb initialization */
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1613  	dlfb = kzalloc(sizeof(*dlfb), GFP_KERNEL);
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1614  	if (!dlfb) {
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1615  		dev_err(&intf->dev, "%s: failed to allocate dlfb\n", __func__);
c143a559b073ae drivers/video/fbdev/udlfb.c   Dan Carpenter      2018-12-20  1616  		return -ENOMEM;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-03  1617  	}
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-03  1618  
7433914efd584b drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-07-25  1619  	INIT_LIST_HEAD(&dlfb->deferred_free);
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1620  
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1621  	dlfb->udev = usb_get_dev(usbdev);
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1622  	usb_set_intfdata(intf, dlfb);
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1623  
ed9de4ed398757 drivers/video/fbdev/udlfb.c   Alan Stern         2023-05-19  1624  	if (!usb_check_bulk_endpoints(intf, out_ep)) {
ed9de4ed398757 drivers/video/fbdev/udlfb.c   Alan Stern         2023-05-19  1625  		dev_err(&intf->dev, "Invalid DisplayLink device!\n");
ed9de4ed398757 drivers/video/fbdev/udlfb.c   Alan Stern         2023-05-19  1626  		retval = -EINVAL;
aaf7dbe07385e0 drivers/video/fbdev/udlfb.c   Pavel Skripkin     2022-03-22  1627  		goto error;
aaf7dbe07385e0 drivers/video/fbdev/udlfb.c   Pavel Skripkin     2022-03-22  1628  	}
aaf7dbe07385e0 drivers/video/fbdev/udlfb.c   Pavel Skripkin     2022-03-22  1629  
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1630  	dev_dbg(&intf->dev, "console enable=%d\n", console);
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1631  	dev_dbg(&intf->dev, "fb_defio enable=%d\n", fb_defio);
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1632  	dev_dbg(&intf->dev, "shadow enable=%d\n", shadow);
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1633  
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1634  	dlfb->sku_pixel_limit = 2048 * 1152; /* default to maximum */
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1635  
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1636  	if (!dlfb_parse_vendor_descriptor(dlfb, intf)) {
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1637  		dev_err(&intf->dev,
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1638  			"firmware not recognized, incompatible device?\n");
aaf7dbe07385e0 drivers/video/fbdev/udlfb.c   Pavel Skripkin     2022-03-22  1639  		retval = -ENODEV;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1640  		goto error;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1641  	}
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1642  
664c5f18490f25 drivers/video/udlfb.c         Ben Collins        2012-03-03  1643  	if (pixel_limit) {
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1644  		dev_warn(&intf->dev,
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1645  			 "DL chip limit of %d overridden to %d\n",
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1646  			 dlfb->sku_pixel_limit, pixel_limit);
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1647  		dlfb->sku_pixel_limit = pixel_limit;
664c5f18490f25 drivers/video/udlfb.c         Ben Collins        2012-03-03  1648  	}
664c5f18490f25 drivers/video/udlfb.c         Ben Collins        2012-03-03  1649  
664c5f18490f25 drivers/video/udlfb.c         Ben Collins        2012-03-03  1650  
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1651  	/* allocates framebuffer driver structure, not framebuffer memory */
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1652  	info = framebuffer_alloc(0, &dlfb->udev->dev);
aaf7dbe07385e0 drivers/video/fbdev/udlfb.c   Pavel Skripkin     2022-03-22  1653  	if (!info) {
aaf7dbe07385e0 drivers/video/fbdev/udlfb.c   Pavel Skripkin     2022-03-22  1654  		retval = -ENOMEM;
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1655  		goto error;
aaf7dbe07385e0 drivers/video/fbdev/udlfb.c   Pavel Skripkin     2022-03-22  1656  	}
33077b8d3042e0 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1657  
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1658  	dlfb->info = info;
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1659  	info->par = dlfb;
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1660  	info->pseudo_palette = dlfb->pseudo_palette;
2c29cfc3eaf117 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-07-25  1661  	dlfb->ops = dlfb_ops;
2c29cfc3eaf117 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-07-25  1662  	info->fbops = &dlfb->ops;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-03  1663  
babc250e278eac drivers/video/fbdev/udlfb.c   Mikulas Patocka    2019-04-01  1664  	mutex_init(&dlfb->render_mutex);
6b11f9d8433b47 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2019-04-01  1665  	dlfb_init_damage(dlfb);
6b11f9d8433b47 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2019-04-01  1666  	spin_lock_init(&dlfb->damage_lock);
6b11f9d8433b47 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2019-04-01  1667  	INIT_WORK(&dlfb->damage_work, dlfb_damage_work);
6b11f9d8433b47 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2019-04-01  1668  
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1669  	INIT_LIST_HEAD(&info->modelist);
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1670  
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1671  	if (!dlfb_alloc_urb_list(dlfb, WRITES_IN_FLIGHT, MAX_TRANSFER)) {
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1672  		retval = -ENOMEM;
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1673  		dev_err(&intf->dev, "unable to allocate urb list\n");
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1674  		goto error;
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1675  	}
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1676  
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1677  	/* We don't register a new USB class. Our client interface is dlfbev */
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1678  
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1679  	retval = fb_alloc_cmap(&info->cmap, 256, 0);
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1680  	if (retval < 0) {
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1681  		dev_err(info->device, "cmap allocation failed: %d\n", retval);
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1682  		goto error;
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1683  	}
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-03  1684  
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1685  	retval = dlfb_setup_modes(dlfb, info, NULL, 0);
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1686  	if (retval != 0) {
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1687  		dev_err(info->device,
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1688  			"unable to find common mode for display and adapter\n");
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1689  		goto error;
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1690  	}
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1691  
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1692  	/* ready to begin using device */
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-03  1693  
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1694  	atomic_set(&dlfb->usb_active, 1);
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1695  	dlfb_select_std_channel(dlfb);
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-03  1696  
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1697  	dlfb_ops_check_var(&info->var, info);
7433914efd584b drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-07-25  1698  	retval = dlfb_ops_set_par(info);
7433914efd584b drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-07-25  1699  	if (retval)
7433914efd584b drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-07-25  1700  		goto error;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-03  1701  
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1702  	retval = register_framebuffer(info);
59277b679f8b5c drivers/staging/udlfb/udlfb.c Bernie Thompson    2009-11-24  1703  	if (retval < 0) {
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1704  		dev_err(info->device, "unable to register framebuffer: %d\n",
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1705  			retval);
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1706  		goto error;
7316bc55ed20c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-10  1707  	}
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-03  1708  
00bab805c21a22 drivers/video/fbdev/udlfb.c   Sukrut Heroorkar   2025-09-24  1709  #ifdef CONFIG_FB_DEVICE
94cd1ae2fd251f drivers/video/udlfb.c         Liu Yuan           2011-04-18  1710  	for (i = 0; i < ARRAY_SIZE(fb_device_attrs); i++) {
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1711  		attr = &fb_device_attrs[i];
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1712  		retval = device_create_file(info->dev, attr);
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1713  		if (retval)
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1714  			dev_warn(info->device,
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1715  				 "failed to create '%s' attribute: %d\n",
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1716  				 attr->attr.name, retval);
94cd1ae2fd251f drivers/video/udlfb.c         Liu Yuan           2011-04-18  1717  	}
00bab805c21a22 drivers/video/fbdev/udlfb.c   Sukrut Heroorkar   2025-09-24  1718  #endif
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-03  1719  
94cd1ae2fd251f drivers/video/udlfb.c         Liu Yuan           2011-04-18  1720  	retval = device_create_bin_file(info->dev, &edid_attr);
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1721  	if (retval)
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1722  		dev_warn(info->device, "failed to create '%s' attribute: %d\n",
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1723  			 edid_attr.attr.name, retval);
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-03  1724  
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16 @1725  	dev_info(info->device,
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1726  		 "%s is DisplayLink USB device (%dx%d, %dK framebuffer memory)\n",
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16 @1727  		 dev_name(info->dev), info->var.xres, info->var.yres,
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1728  		 ((dlfb->backing_buffer) ?
18dffdf8913ab9 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1729  		 info->fix.smem_len * 2 : info->fix.smem_len) >> 10);
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1730  	return 0;
94cd1ae2fd251f drivers/video/udlfb.c         Liu Yuan           2011-04-18  1731  
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1732  error:
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1733  	if (dlfb->info) {
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1734  		dlfb_ops_destroy(dlfb->info);
c143a559b073ae drivers/video/fbdev/udlfb.c   Dan Carpenter      2018-12-20  1735  	} else {
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1736  		usb_put_dev(dlfb->udev);
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1737  		kfree(dlfb);
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1738  	}
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1739  	return retval;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-03  1740  }
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-03  1741  
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1742  static void dlfb_usb_disconnect(struct usb_interface *intf)
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-03  1743  {
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1744  	struct dlfb_data *dlfb;
59277b679f8b5c drivers/staging/udlfb/udlfb.c Bernie Thompson    2009-11-24  1745  	struct fb_info *info;
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1746  	int i;
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-03  1747  
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1748  	dlfb = usb_get_intfdata(intf);
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1749  	info = dlfb->info;
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1750  
5865889fe43194 drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-16  1751  	dev_dbg(&intf->dev, "USB disconnect starting\n");
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1752  
33077b8d3042e0 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1753  	/* we virtualize until all fb clients release. Then we free */
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1754  	dlfb->virtualized = true;
33077b8d3042e0 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1755  
33077b8d3042e0 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1756  	/* When non-active we'll update virtual framebuffer, but no new urbs */
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1757  	atomic_set(&dlfb->usb_active, 0);
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-03  1758  
8d21547d3c9c3b drivers/video/udlfb.c         Bernie Thompson    2012-03-01  1759  	/* this function will wait for all in-flight urbs to complete */
7ea46206d1706b drivers/video/fbdev/udlfb.c   Ladislav Michl     2018-01-15  1760  	dlfb_free_urb_list(dlfb);
8d21547d3c9c3b drivers/video/udlfb.c         Bernie Thompson    2012-03-01  1761  
00bab805c21a22 drivers/video/fbdev/udlfb.c   Sukrut Heroorkar   2025-09-24  1762  #ifdef CONFIG_FB_DEVICE
33077b8d3042e0 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-09-05  1763  	/* remove udlfb's sysfs interfaces */
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1764  	for (i = 0; i < ARRAY_SIZE(fb_device_attrs); i++)
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15  1765  		device_remove_file(info->dev, &fb_device_attrs[i]);
00bab805c21a22 drivers/video/fbdev/udlfb.c   Sukrut Heroorkar   2025-09-24  1766  #endif
2469d5dbcafe06 drivers/staging/udlfb/udlfb.c Bernie Thompson    2010-02-15 @1767  	device_remove_bin_file(info->dev, &edid_attr);
8d21547d3c9c3b drivers/video/udlfb.c         Bernie Thompson    2012-03-01  1768  
68a958a915ca91 drivers/video/fbdev/udlfb.c   Mikulas Patocka    2018-10-08  1769  	unregister_framebuffer(info);
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-03  1770  }
88e58b1a42f8c1 drivers/staging/udlfb/udlfb.c Roberto De Ioris   2009-06-03  1771  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ