Виртуальный Каменск

Тематические разделы => Всё о Linux/Unix => Тема начата: Ведметь от 04 Июля 2009, 04:28:17



Название: kernel-2.6.30 + udev-141+ китайский usb джойстик = задница
Отправлено: Ведметь от 04 Июля 2009, 04:28:17
Сабж не поднимает /dev/input/jsX. На другой машинке с 2.6.28 и тотже udev все нормально.  С модулями ядра все гуд. Есть варианты?


Название: Re: kernel-2.6.30 + udev-141+ китайский usb джойстик = задница
Отправлено: Ариец от 04 Июля 2009, 10:56:20
В конфиге ядра ничего не напортачил?


Название: Re: kernel-2.6.30 + udev-141+ китайский usb джойстик = задница
Отправлено: Ведметь от 04 Июля 2009, 11:26:01
В конфиге ядра ничего не напортачил?

Ариец, дык это, я его (конфиг) давно с закрытыми глазами.  На соседнем компе работает этот девайс через модуль joydev. Тут и модулем его собирал и встраивал в ядро - один фиг.

dmesg при вставке выдает.
Код:
usb 2-1: new low speed USB device using uhci_hcd and address 7
usb 2-1: New USB device found, idVendor=0079, idProduct=0006
usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 2-1: Product: Generic   USB  Joystick 
usb 2-1: Manufacturer: DragonRise Inc. 
usb 2-1: configuration #1 chosen from 1 choice

не eventX ни jsX устройства не появляются


Название: Re: kernel-2.6.30 + udev-141+ китайский usb джойстик = задница
Отправлено: Ариец от 04 Июля 2009, 11:40:11
в /dev/input смотрел? ;)


Название: Re: kernel-2.6.30 + udev-141+ китайский usb джойстик = задница
Отправлено: Ведметь от 04 Июля 2009, 12:02:36
в /dev/input смотрел? ;)

;D А где по твоему я их еще смотреть мог?
Виновато ядро оказалось. на 2.6.28 с тем же конфигом все заработало :(


Название: Re: kernel-2.6.30 + udev-141+ китайский usb джойстик = задница
Отправлено: Ариец от 04 Июля 2009, 12:08:56
Судя по ChangeLog'ам в 30ой версии именно в этом драйвере намутили, в том числе...

Сейчас качну сорцы, посмотрю что там вообще происходит. Мне, сидящему до сих пор на 2.6.26.x интересно даже стало... =)


Название: Re: kernel-2.6.30 + udev-141+ китайский usb джойстик = задница
Отправлено: Ариец от 04 Июля 2009, 12:11:16
вчера 2.6.30.1 вышло кстати, но в чейньчлоге ничего про joydev нет... =(


Название: Re: kernel-2.6.30 + udev-141+ китайский usb джойстик = задница
Отправлено: Ариец от 04 Июля 2009, 12:15:32
Кстати, какой (http://www.qbik.ch/usb/devices/showdevcat.php?w=d&id=93) джой-то?


Название: Re: kernel-2.6.30 + udev-141+ китайский usb джойстик = задница
Отправлено: Ведметь от 04 Июля 2009, 12:22:39
Я же написал
Shark Net    SN-GP 55    DragonRise Inc. Generic USB Joystick

По 30-му ченджлогу про joydev ненашел чтото


Название: Re: kernel-2.6.30 + udev-141+ китайский usb джойстик = задница
Отправлено: Ариец от 04 Июля 2009, 12:25:12
Я же написал
Shark Net    SN-GP 55    DragonRise Inc. Generic USB Joystick

По 30-му ченджлогу про joydev ненашел чтото


http://lkml.org/lkml/2009/5/11/696  :smile:


Название: Re: kernel-2.6.30 + udev-141+ китайский usb джойстик = задница
Отправлено: Ариец от 04 Июля 2009, 13:22:09
Однако:

Код:
--- joydev-2.6.28.10.c	2009-05-03 00:54:43.000000000 +0600
+++ joydev-2.6.30.1.c 2009-07-03 05:52:38.000000000 +0600
@@ -159,12 +159,9 @@
 
 static int joydev_fasync(int fd, struct file *file, int on)
 {
- int retval;
  struct joydev_client *client = file->private_data;
 
- retval = fasync_helper(fd, file, on, &client->fasync);
-
- return retval < 0 ? retval : 0;
+ return fasync_helper(fd, file, on, &client->fasync);
 }
 
 static void joydev_free(struct device *dev)
@@ -800,7 +797,7 @@
  }
  }
 
- strlcpy(joydev->dev.bus_id, joydev->name, sizeof(joydev->dev.bus_id));
+ dev_set_name(&joydev->dev, joydev->name);
  joydev->dev.devt = MKDEV(INPUT_MAJOR, JOYDEV_MINOR_BASE + minor);
  joydev->dev.class = &input_class;
  joydev->dev.parent = &dev->dev;
@@ -846,7 +843,13 @@
  INPUT_DEVICE_ID_MATCH_KEYBIT,
  .evbit = { BIT_MASK(EV_KEY) },
  .keybit = { [BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH) },
- }, /* Avoid itouchpads, touchscreens and tablets */
+ }, /* Avoid itouchpads and touchscreens */
+ {
+ .flags = INPUT_DEVICE_ID_MATCH_EVBIT |
+ INPUT_DEVICE_ID_MATCH_KEYBIT,
+ .evbit = { BIT_MASK(EV_KEY) },
+ .keybit = { [BIT_WORD(BTN_DIGI)] = BIT_MASK(BTN_DIGI) },
+ }, /* Avoid tablets, digitisers and similar devices */
  { } /* Terminating entry */
 };
 



Название: Re: kernel-2.6.30 + udev-141+ китайский usb джойстик = задница
Отправлено: Ведметь от 04 Июля 2009, 14:17:46
Однако:

Код:
--- joydev-2.6.28.10.c	2009-05-03 00:54:43.000000000 +0600
+++ joydev-2.6.30.1.c 2009-07-03 05:52:38.000000000 +0600
@@ -159,12 +159,9 @@
 
 static int joydev_fasync(int fd, struct file *file, int on)
 {
- int retval;
  struct joydev_client *client = file->private_data;
 
- retval = fasync_helper(fd, file, on, &client->fasync);
-
- return retval < 0 ? retval : 0;
+ return fasync_helper(fd, file, on, &client->fasync);
 }
 
 static void joydev_free(struct device *dev)
@@ -800,7 +797,7 @@
  }
  }
 
- strlcpy(joydev->dev.bus_id, joydev->name, sizeof(joydev->dev.bus_id));
+ dev_set_name(&joydev->dev, joydev->name);
  joydev->dev.devt = MKDEV(INPUT_MAJOR, JOYDEV_MINOR_BASE + minor);
  joydev->dev.class = &input_class;
  joydev->dev.parent = &dev->dev;
@@ -846,7 +843,13 @@
  INPUT_DEVICE_ID_MATCH_KEYBIT,
  .evbit = { BIT_MASK(EV_KEY) },
  .keybit = { [BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH) },
- }, /* Avoid itouchpads, touchscreens and tablets */
+ }, /* Avoid itouchpads and touchscreens */
+ {
+ .flags = INPUT_DEVICE_ID_MATCH_EVBIT |
+ INPUT_DEVICE_ID_MATCH_KEYBIT,
+ .evbit = { BIT_MASK(EV_KEY) },
+ .keybit = { [BIT_WORD(BTN_DIGI)] = BIT_MASK(BTN_DIGI) },
+ }, /* Avoid tablets, digitisers and similar devices */
  { } /* Terminating entry */
 };
 


Асилил.... пропатчу. Вот че они багрепорты по русски не принимают :(


Название: Re: kernel-2.6.30 + udev-141+ китайский usb джойстик = задница
Отправлено: Ариец от 04 Июля 2009, 14:42:03
Тебе наобормот патчить надо... =)


Название: Re: kernel-2.6.30 + udev-141+ китайский usb джойстик = задница
Отправлено: Ведметь от 04 Июля 2009, 15:40:32
Дык эта, фкурсе.  :smile:


Название: Re: kernel-2.6.30 + udev-141+ китайский usb джойстик = задница
Отправлено: Ведметь от 04 Июля 2009, 16:08:38
Не все так просто... во первых там еще поменяли структуру device в include/linux/device.h, так что еще пришлось это оставить, ибо device.bus_id закаментили. Хотя сама функция dev_set_name в 2.6.28 была уже. (устаревший код?)
Код:
-	strlcpy(joydev->dev.bus_id, joydev->name, sizeof(joydev->dev.bus_id));
+ dev_set_name(&joydev->dev, joydev->name);

Во вторых один хрен не заработало. Правильнее будет искать косяк в 2.6.30. 

 vis НЕКОГДА!!!


Название: Re: kernel-2.6.30 + udev-141+ китайский usb джойстик = задница
Отправлено: Ведметь от 04 Июля 2009, 18:24:13
покопал еще... пришел к выводу что трабла в драйвере HID...


Название: Re: kernel-2.6.30 + udev-141+ китайский usb джойстик = задница
Отправлено: Ведметь от 04 Июля 2009, 23:37:01
Разобрался. Прикрутили к этому контроллеру новые фишки (force feedback)  и вынесли в отдельный драйвер. Галку поставил  новую и все заработало.


Название: Re: kernel-2.6.30 + udev-141+ китайский usb джойстик = задница
Отправлено: Ариец от 05 Июля 2009, 00:08:19
Дело было не в бобине... =)


Название: Re: kernel-2.6.30 + udev-141+ китайский usb джойстик = задница
Отправлено: Ведметь от 05 Июля 2009, 00:21:28
Зато осилил архитектуру модулей ядра. Эх, мне бы времени свободного, да  английский подучить