2013-03-11 5 views
2

Je travaille sur un pilote de périphérique de niveau noyau lié à lcd pour un périphérique Android. Quelqu'un peut-il m'aider s'il vous plaît avec les API liées à la gestion de l'alimentation dans Android à travers lequel je peux enregistrer mon pilote pour recevoir tous les changements dans l'état de l'appareil. Pour plus de précision, je souhaite que mon pilote reçoive tous les événements du pilote d'alimentation (ou autre) au cas où l'état du système changerait, par exemple passer de l'état de fonctionnement à l'état de veille ou de suspension. Je veux que mon chauffeur aussi dormir dans le scénario actuel qui est de manger toute la batterie ..comment enregistrer un pilote de périphérique avec le pilote d'alimentation android/linux?

J'ai quelques liens http://www.kandroid.org/online-pdk/guide/power_management.html et http://developer.android.com/reference/android/os/PowerManager.html

qui parle de fonctions comme android_register_early_suspend et android_register_early_resume mais je ne pouvais pas trouver tout appel à ces fonctions dans tout le code source du noyau (basé sur linux 3.0)

J'ai entendu parler de "Linux Power Management" et je peux trouver des dossiers comme drivers/base/power et drivers/power dans mon code de base actuel. Comment puis-je utiliser ce pilote dans mon code.

S'il vous plaît laissez-moi savoir si je suis absent avec tous les détails. Toute aide serait grandement appréciée.

Répondre

2

Votre pilote doit implémenter des rappels de suspension/reprise d'exécution. Cochez cette case doc.

exemple de code pour mettre en œuvre callbacks PM Device dans 'struct dev_pm_ops' (tel que défini dans linux/pm.h)

static int lcdxxx_suspend(struct device *dev) 
{ 
    //Your Code to suspend your device 
} 

static int lcdxxx_resume(struct device *dev) 
{ 
    //Your code to resume your device 
} 

static const struct dev_pm_ops lcd_pm_ops = { 
    .suspend = lcdxxx_suspend, 
    .resume  = lcdxxx_resume, 
}; 

struct device_driver lcd_driver = { 
    .... 
    .pm = &lcd_pm_ops, 
    .... 
} 

Ceci est juste échantillon impl. L'implémentation réelle dépend de vos besoins.

Questions connexes