RE: A question about ohci_irq()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Alan,
	
	My patch works fine. As below:(ohci_irq)
		-- ints = ohci_readl(ohci, &regs->intrstatus);
		++ if((ohci->hcca->done_head!=0)
		++		&&!(hc32_to_cpup(ohci,
&ohci->hcca->done_head)
		++			&0x01)){
		++		ints = OHCI_INTR_WDH;
		++ }else{
		++		ints = ohci_readl(ohci,
&regs->intrstatus);
		++		ints = 0xfffffffd;
		++ }
	Can you provide your patch for your thought? I'll give a try.
	For my understanding about this , if the WDH in
HcInterruptStatus Register is set, we must clear this bit after the
ohci_irq() function finished. Otherwise, this bit will be set always.
But I don't find any code clearing this WDH bit.
	So in which place this WDH bit is clear?


Thanks,
Frank		

-----Original Message-----
From: Alan Stern [mailto:stern@xxxxxxxxxxxxxxxxxxx] 
Sent: Wednesday, December 30, 2009 11:28 AM
To: Huang, FrankR
Cc: USB list
Subject: RE: A question about ohci_irq()

On Wed, 30 Dec 2009, Huang, FrankR wrote:

> Right now , it works fine.
> I'll do more tests and give you feedback.
> But what I am thinking is that if the WDH is set in interrupt status
> register, should I clear this bit if I omit this interrupt?
> What's your improved way?

No, the bit should not be cleared.  That's what the original code in 
the driver did, and it caused your mouse to stop working.

My patch clears WDH when hcca->done_head is not 0, and keeps WDH set if
hca->done_head is 0.  That way when the controller sets hcca->done_head
to a nonzero value, the driver will know to call dl_done_list().

Alan Stern



--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux