Bonjour à tous,

Tout d'abord, je suis sous linux. J'ai une carte USB/Ethernet et qui fait aussi hub USB.
J'ai le driver pour cette carte (.c/.h), et ce driver fonctionne sans problème.

Lorsque je branche cette carte sur ma machine, ce n'est pas un device block usb qui se créer mais une nouvelle interface ethernet (eth2), bien que la carte soit branchée en USB.
Lorsque je fais appel à dmesg, pas de bind d'usb. Je vous dis ca parce que beaucoup de sites que j'ai pu trouver en faisant des recherches sur l'usbnet me conduisait sur ces types de réponses.

Sur la carte se trouve une mémoire EEPROM accessible grâce à certaines fonctions contenues dans le driver. J'ai besoin d'accéder à cette mémoire afin de pouvoir jouer avec les GPIO de la carte.
J'ai toutes les informations sur les valeurs des bits que je dois mettre, l'offset à partir duquel je dois les mettre pour pouvoir obtenir le résultat que je veux.

La seule que chose que je ne vois pas est comment intéragir avec les fonctions du driver.
Dans le code de ce driver se trouvent différentes structures que ce dernier remplit :

- ethtool_ops
- net_device_ops
- driver_info
- usb_driver

Si j'ai bien compris comment fonctionnent les "drivers" usb :
- Quand un périphérique se connecte, linux détecte que c'est un périphérique usb et utilise son driver générique afin de communiquer avec (write, read,...)
- Ensuite il va binder le périphérique avec le driver propre à ce périphérique qui serait donc le driver que j'ai. Ce bind se fait grace à la structure usb_driver.
- Finalement à chaque fois que le kernel voudra discuter avec le périphérique, il utilisera les fonctions du driver.

La fonction que j'aimerais utiliser est pointée par un champ qui se trouve dans la structure ethtool_ops. Cette dernière structure est pointée par un champ qui se trouve dans usbnet.

Alors, la solution que j'ai pu trouver est de récupérer la structure usbnet liée au périphérique afin d'appeler la fonction que je veux. Seulement voila, comment puis-je récupérer cette structure.

Je viens donc vers vous pour savoir, déja si tout ce que j'ai dis est à peu près bon parce que je dois avouer que ce n'est pas forcément très clair dans ma tête,
et ensuite si la solution dont je viens de parler est la bonne et comment la mettre en oeuvre. Et si ce n'est pas la bonne, une piste vers une solution.


Merci d'avance pour vos réponses et votre temps.