[pso] tema 2 linux dev_id

Razvan Deaconescu razvand at cs.pub.ro
Fri Apr 13 20:29:51 EEST 2007


Luis Cazacu wrote:
> In handler-ul pt intrerupere
> 
> irqreturn_t my_handler(int irq_no,void *dev_id,struct pt_regs *regs)
> 
> putem sa folosim dev_id in loc de serial[0] sau serial [1] ?
> 
> unde serial [0] de exemplu este :
> 
> err = 
> request_irq(MY_IRQ1,my_handler,SA_INTERRUPT,"4uart16550",&my_serial[0]);

poti sa inregistrezi acelasi handler pentru ambele intreruperi (si 
MY_IRQ1 si MY_IRQ2); spre exemplu:
request_irq(MY_IRQ1,my_handler,SA_INTERRUPT,"4uart16550",&my_serial[0]);
request_irq(MY_IRQ2,my_handler,SA_INTERRUPT,"4uart16550",&my_serial[1]);

in acest caz membrul dev_id va fi &my_serial[0] sau &my_serial[1] dupa 
cum s-a transmis intreruperea MY_IRQ1 sau MY_IRQ2

> Si cum am putea afla pt ce COM este intreruperea  (adresa mai exact , 
> adik 0x3f8 sau 0x2f8)  (fara sa citim registrul IIR) ?

if (irq_no == MY_IRQ1) {
         /* intrerupere COM1 -> base_port = 0x3f8 */
}
else {
         /* intrerupere COM2 -> base_port = 0x2f8 */
}

altfel poti sa adaugi in camp in structura ta my_serial si afli cu 
ajutorul dev_id ce base_port folosesti

Razvan


More information about the pso mailing list