Forum Linux.noyau Desactiver l'USB à chaud

Posté par .
Tags : aucun
2
12
fév.
2010
Salut,

Dans un système embarqué (une board avec un processeur ST), je cherche à mettre le processeur en standby (mode faible consommation).

Pour cela je désactive les éléments inutiles en écrivant dans des registes du processeur à partir d'un module noyau.

Lorsque je désactive les contrôleurs USB, le kernel freeze.
Je pense que c'est normal, le kernel ne peut plus subitement communiquer avec les contrôleurs USB car ils deviennent inactifs, donc je pense que le freeze vient de là.

Ma question est donc : est-il possible de désactiver la gestion de l'USB dans le noyau à chaud, avant de stopper les contrôleurs de façon matérielle ?

Je vous remercie,

A bientôt.
  • # ca va sembler bete

    Posté par . Évalué à 5.

    mais ca ne fonctionnerait pas enlevant les modules ?
    attention tu perd peut-etre le controle clavier/souris ou disque en virant certains modules
    • [^] # Re: ca va sembler bete

      Posté par . Évalué à 1.

      J'ai aucun module USB actif dans lsmod, j'avais déjà pensé à les virer.
      J'ai juste dans le kernel USB Support qui est activé en dur.
      • [^] # Re: ca va sembler bete

        Posté par . Évalué à 3.

        alors il faudrait le mettre en module
        pour pouvoir le retirer avant d'eteindre le peripherique

        seulement accede-t-on aux registres du peripherique quand le module n'est pas chargé :( ?
      • [^] # Re: ca va sembler bete

        Posté par . Évalué à 5.

        je viens de penser, il faut peut-etre chercher comment arreter le port USB avant mise en veille ou hibernation... ca peut etre une piste

        en cherchant, je suis tombé sur :
        http://www.linuxquestions.org/questions/linux-software-2/how(...)

        comment allumer/eteindre un port USB suivant l'heure (donc par script)
        • [^] # Par /sys/bus/usb/devices/*/power

          Posté par . Évalué à 4.

          Exactement,

          Il faut jouer avec les entrées des /sys/bus/usb/devices/*/power et vérifier que l’option CONFIG_USB_SUSPEND a bien été activée lors de la compilation du noyau.
  • # Une idée comme ça

    Posté par . Évalué à 1.

    Je n'ai aucune idée précise sur la manière de faire les choses mais à mon avis il faut que tu t'inspires de l'API (ou de la manière de faire) qui permet de faire du suspend/resume.

    Les procédures existent déjà et permettent de placer tous les éléments en mode idle avant de suspendre le CPU. Donc les réponses que tu cherches doivent s'y trouver.

    Voilà c'est juste une idée en l'air
  • # Merci !

    Posté par . Évalué à 1.

    D'accord, je vous remercie tous pour vos réponses, je vais étudier les pistes que vous m'avez données.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.