Jump to content

    
Sign in to follow this  
toweroff

USB хаб на плате -- сброс

Recommended Posts

24 minutes ago, Tarbal said:

 

Тут 2 проблемы:

1. Почему-то драйвер usb251xb не дергает или дергает но оставляет на нуле сигнал сброса, хотя, судя по коду драйвера, он должен подавать подавать короткий сигнал 0 на пин сброса и потом возвращать пин в 1. При этом через sysfs из юзерспейса пин сброса нормально экспортируется и управляется и сигнал на ножке меняется.

2. Если откинуть сам драйвер usb251xb и просто пытаться задетектить хаб драйвером I2C после ручного сброса из юзерспейса, то устройство не находится на шине I2C. При этом на этой же шине есть еще одно устройство и его драйвер I2C находит нормально.

Share this post


Link to post
Share on other sites

Есть два места, где может быть проблема в программе и в железе.
Если вы попробуете подергать ножкой как я дал ссылку, то одно из мест отпадет.

Share this post


Link to post
Share on other sites

В общем, дело было, как всегда, не в бобине)
Итак:
1. Хаб аппаратно сконфигурирован для настройки по SMBus
2. Загружаемый драйвер USB215xb (modprobe usb251xb) _не_ отправляет по шине ничего от слова совсем. Ни по I2C0, ни по I2C1. Кто в курсе, подскажите, как ему передавать параметры?
3. Через i2c-tools я всё-таки добился отправки данных, для этого долго курил тырнет в поисках эмуляции SMBus Block Transfer
4. Сконфигурировал дефолтными значениями, записал в регистр STATUS/COMMAND (0xFF) заветное 0x01 (Hub will signal a USB attach event to an upstream device) и... увидел давно ожидаемые
 

debian@beaglebone:~$ sudo i2ctransfer -v -y 1 w3@0x2c 0xFF 0x01 0x01
msg 0: addr 0x2c, write, len 3, buf 0xff 0x01 0x01
debian@beaglebone:~$ [ 1847.365857] usb 1-1: new high-speed USB device number 2 using musb-hdrc
[ 1847.518055] usb 1-1: New USB device found, idVendor=0424, idProduct=2422, bcdDevice= 0.a0
[ 1847.526340] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 1847.546666] hub 1-1:1.0: USB hub found
[ 1847.550776] hub 1-1:1.0: 2 ports detected

debian@beaglebone:~$ lsusb
Bus 001 Device 002: ID 0424:2422 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

В общем, остаётся это всё автоматизировать, желательно через драйвер, но не знаю, как ему передавать параметры...

Share this post


Link to post
Share on other sites
9 minutes ago, toweroff said:

Кто в курсе, подскажите, как ему передавать параметры?

Все параметры берутся из Device Tree.

При загрузке модуля какая-нибудь отладочная информация выдается в логе?

Если нет, то остается вносить в модуль отладочную информацию и пересобирать, чтобы пошагово разобраться, что там в модуле происходит и на каком этапе возникает проблема.

Если ничего не выводится, то можно настроит уровень логгирования:

https://www.kernel.org/doc/html/latest/core-api/printk-basics.html

Quote

To change the current console_loglevel simply write the desired level to /proc/sys/kernel/printk. For example, to print all messages to the console:


# echo 8 > /proc/sys/kernel/printk

 

Share this post


Link to post
Share on other sites

А если просто:

echo usb251xb 0x2c > /sys/class/i2c-adapter/i2c-1/new_device

?

 

Использовал USB2517, но конфигурацию грузил вручную, драйвер даже не пробовал.

Еще один момент: хаб на musb - такое себе удовольствие, что подключать планируете?

Share this post


Link to post
Share on other sites

 

14 минут назад, BaN сказал:

Все параметры берутся из Device Tree.

При загрузке модуля какая-нибудь отладочная информация выдается в логе?

в том-то и дело, через device tree у меня даже пин сброса не конфигурируется как надо. Может, я что не так ему (дереву) говорю, конечно... Но собирается ведь, не ругается
а драйвер при загрузке через modprobe молчит, как партизан

6 минут назад, aaarrr сказал:

echo usb251xb 0x2c > /sys/class/i2c-adapter/i2c-1/new_device

попробую..
 

 

6 минут назад, aaarrr сказал:

Еще один момент: хаб на musb - такое себе удовольствие, что подключать планируете?

один постоянный коннект (LTE), второй порт наружу через ключ с контролем тока

3 минуты назад, toweroff сказал:

echo usb251xb 0x2c > /sys/class/i2c-adapter/i2c-1/new_device

попробовал. Там у микрочипа своя заморочка: он понимает только SMBus Block transfer и на просто S-SA-R-A-P не отзывается, поэтому и не грузится ничего

Share this post


Link to post
Share on other sites
15 minutes ago, toweroff said:

один постоянный коннект (LTE), второй порт наружу через ключ с контролем тока

Мне в такой ситуации пришлось отключить виртуальные tty у модема, т.к. они выбирали лимит на interrupt EP. Если есть возможность задействовать полноценный USB, то лучше так и сделать.

 

 

 

Share this post


Link to post
Share on other sites
1 час назад, aaarrr сказал:

Мне в такой ситуации пришлось отключить виртуальные tty у модема, т.к. они выбирали лимит на interrupt EP. Если есть возможность задействовать полноценный USB, то лучше так и сделать.

Спасибо, будем иметь ввиду

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this