Eu tenho uma placa personalizada usando o imx536. A placa possui dois dispositivos USB, um conectado ao núcleo do OTG e um conectado ao núcleo do Host1 no ixm53. Usando o Linux BSP, o kernel 2.6.35 e o udev versão 167, não consigo usar "udevadm info" para determinar qual dispositivo está conectado a qual hub / porta. Durante a inicialização, o Linux enumera os dispositivos de maneira diferente, dependendo de qual deles vê primeiro. Como posso obter informações do udevadm para rastrear ainda mais a cadeia USB? Estou comparando isso com um TI am3352, onde sou capaz de rastrear para qual hub / porta cada dispositivo USB está conectado para que eu possa criar uma regra personalizada do udev.
Executando 'udevadm info' nos dois dispositivos da minha placa personalizada imx53:
# udevadm info -a -n /dev/sda1
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/block/sda/sda1':
KERNEL=="sda1"
SUBSYSTEM=="block"
DRIVER==""
ATTR{partition}=="1"
ATTR{start}=="2048"
ATTR{size}=="3909632"
ATTR{alignment_offset}=="0"
ATTR{discard_alignment}=="4293918720"
ATTR{stat}==" 6 0 42 7 1 0 8 64 0 71 71"
ATTR{inflight}==" 0 0"
looking at parent device '/block/sda':
KERNELS=="sda"
SUBSYSTEMS=="block"
DRIVERS==""
ATTRS{range}=="16"
ATTRS{ext_range}=="256"
ATTRS{removable}=="1"
ATTRS{ro}=="0"
ATTRS{size}=="3911680"
ATTRS{alignment_offset}=="0"
ATTRS{discard_alignment}=="0"
ATTRS{capability}=="51"
ATTRS{stat}==" 7 0 50 24 1 0 8 64 0 88 88"
ATTRS{inflight}==" 0 0"
# udevadm info -a -n /dev/sdb1
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/block/sdb/sdb1':
KERNEL=="sdb1"
SUBSYSTEM=="block"
DRIVER==""
ATTR{partition}=="1"
ATTR{start}=="20480"
ATTR{size}=="681984"
ATTR{alignment_offset}=="0"
ATTR{discard_alignment}=="4284481536"
ATTR{stat}==" 0 0 0 0 0 0 0 0 0 0 0"
ATTR{inflight}==" 0 0"
looking at parent device '/block/sdb':
KERNELS=="sdb"
SUBSYSTEMS=="block"
DRIVERS==""
ATTRS{range}=="16"
ATTRS{ext_range}=="256"
ATTRS{removable}=="1"
ATTRS{ro}=="0"
ATTRS{size}=="15523840"
ATTRS{alignment_offset}=="0"
ATTRS{discard_alignment}=="0"
ATTRS{capability}=="51"
ATTRS{stat}==" 1 0 8 2 0 0 0 0 0 2 2"
ATTRS{inflight}==" 0 0"
Obrigado.
EDITAR: Com um pouco de adivinhação eu escrevi o seguinte arquivo de regras que reconhece com sucesso os dois dispositivos USB, no entanto, quando cria o nó do dispositivo, o arquivo é um arquivo char e não um arquivo de bloco. Então, 'montar' não pode usar o dispositivo. Alguma idéia sobre isso? É talvez encontrar o controlador e não o dispositivo de bloco?