[Prism54-devel] control/status bits and interrupt bits

Rafiq Shaikh rafiq.shaikh at analog.com
Fri Nov 5 23:44:08 UTC 2004


Hi Bill

Please see my response below in lines:

Regards,
-Rafiq.

Bill Parsons wrote:

>Hi Rafiq, thanks for the information.
>
>
>  
>
>>After the card is initialized and functioning fine,
>>if the Interrupt Id 
>>Register contains 0x00004000 (ie 14th bit is ON)
>>it means PCI fatal error occured. Once this happens
>>the card goes back 
>>to reset state and only way to recover is
>>to restart the initialization process all over
>>again.
>>As far as I know this interrupt bit (0x00004000) is
>>undocumented.
>>    
>>
>
>It is very strange that you say that because actually
>I find that that bit is on 100% of time, even when the
>card is working fine.
>  
>
***** It may be true for Duette (I still doubt it because I believe the 
conventions in Duette and GT are same).
           However for Prism-GT I am sure that if the card gives an 
interrupt to the host and at that time  the
           "Interrupt Identification Register"  shows 14th bit ON 
(0x00004000) then it means the card got a PCI
           Fatal error and it went to the Reset state.
           Please note that I am referring to the "Interrupt 
Identification Register" and NOT the "Control/Status 
           Register"

>
>Actually, for the control/status register bits, I
>stupidly cut and pasted them out of an old version of
>the header file. I found this information in the
>latest version:
>
>/* Control/Status register bits */
>/* Looks like there are other meaningful bits
>    0x20004400 seen in normal operation,
>    0x200044db at 'timeout waiting for mgmt response'
>*/
>
>So it looks like someone saw my problem before and
>identified it as a timeout while waiting for a
>management response. I have modified the management
>code slightly, so maybe I did something wrong.
>
>I am trying to debug it, but now I am confused. My
>understanding is that the driver initiates all
>management transactions, however this flag is set by
>the firmware. Why would the firmware be waiting for a
>management response? It should be sending the
>management response.
>
>Also, does anyone know what the length of this timeout
>is or whether it is configurable?
>
>Sorry if I am asking a stupid question. I am not an
>expert at writing device drivers (yet), but I am
>trying to learn.
>
>Bill
>
>
>
>  
>
>>The possible reasons for the card to issue this
>>interrupt could be:
>>1)The card is trying to access an illegal address in
>>host memory and as 
>>a result host PCI  issues Abort to the card.
>>2)The host PCI is not responding to the incoming PCI
>>read/write requests 
>>from the card for an extended period of
>>    time as a result card will give-up and issue
>>this interrupt.
>>
>>I hope this helps.
>>
>>Regards,
>>-Rafiq.
>>
>>
>>Bill Parsons wrote:
>>
>>    
>>
>>>Has anyone figured out the meaning of the extended
>>>control/status bits and interrupt mask bits in the
>>>memory mapped registers?
>>>
>>>The driver only mentions these ones in the source
>>>code:
>>>
>>>// Control/Status register bits
>>>#define ISL38XX_CTRL_STAT_SLEEPMODE            
>>>0x00000200
>>>#define	ISL38XX_CTRL_STAT_CLKRUN				0x00800000
>>>#define ISL38XX_CTRL_STAT_RESET                
>>>0x10000000
>>>#define ISL38XX_CTRL_STAT_RAMBOOT              
>>>0x20000000
>>>#define ISL38XX_CTRL_STAT_STARTHALTED          
>>>0x40000000
>>>#define ISL38XX_CTRL_STAT_HOST_OVERRIDE        
>>>0x80000000
>>>
>>>Under normal conditions, my Prism Duette (in AP
>>>      
>>>
>>mode)
>>    
>>
>>>seems to show 20004400 in the status register, but
>>>sometimes it hangs while I am doing a large
>>>      
>>>
>>download.
>>    
>>
>>>When that happens, the status register always reads
>>>      
>>>
>>as
>>    
>>
>>>200044DB.
>>>
>>>
>>>The driver also lists the following interrupt
>>>      
>>>
>>sources:
>>    
>>
>>>#define ISL38XX_INT_IDENT_UPDATE               
>>>      
>>>
>>0x0002
>>    
>>
>>>#define ISL38XX_INT_IDENT_INIT                 
>>>      
>>>
>>0x0004
>>    
>>
>>>#define ISL38XX_INT_IDENT_WAKEUP               
>>>      
>>>
>>0x0008
>>    
>>
>>>#define ISL38XX_INT_IDENT_SLEEP                
>>>      
>>>
>>0x0010
>>    
>>
>>>#define ISL38XX_INT_SOURCES                    
>>>      
>>>
>>0x001E
>>    
>>
>>>However, when I read the interrupt identity
>>>      
>>>
>>register,
>>    
>>
>>>I see that it normally reads 80004000.
>>>
>>>Does anyone here know what these extended bits
>>>      
>>>
>>mean?
>>    
>>
>>>Are they the same for every firmware version?
>>>
>>>Thanks in advance,
>>>Bill
>>>
>>>
>>>		
>>>__________________________________ 
>>>Do you Yahoo!? 
>>>Check out the new Yahoo! Front Page. 
>>>www.yahoo.com 
>>>
>>>
>>>_______________________________________________
>>>Prism54-devel mailing list
>>>Prism54-devel at prism54.org
>>>http://prism54.org/mailman/listinfo/prism54-devel
>>>
>>>
>>> 
>>>
>>>      
>>>
>>    
>>
>
>
>
>		
>__________________________________ 
>Do you Yahoo!? 
>Check out the new Yahoo! Front Page. 
>www.yahoo.com 
> 
>
>
>
>  
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://prism54.org/pipermail/prism54-devel/attachments/20041105/b7a22be0/attachment.htm


More information about the Prism54-devel mailing list