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