Showing error 550

User: Jiri Slaby
Error type: Calling function from invalid context
Error type description: Some function is called at inappropriate place like sleep inside critical sections or interrupt handlers
File location: sound/pci/pcxhr/pcxhr_core.c
Line in file: 197
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2011-11-07 22:19:02 UTC


Source:

 167#define PCXHR_IT_DEBUG                        (0x0000005A | PCXHR_MASK_IT_NO_HF0_HF1)
 168#define PCXHR_IT_RESET_SEMAPHORE        (0x0000005C | PCXHR_MASK_IT_NO_HF0_HF1)
 169#define PCXHR_IT_MESSAGE                (0x00000074 | PCXHR_MASK_IT_NO_HF0_HF1)
 170#define PCXHR_IT_RESET_CHK                (0x00000076 | PCXHR_MASK_IT_NO_HF0_HF1)
 171#define PCXHR_IT_UPDATE_RBUFFER                (0x00000078 | PCXHR_MASK_IT_NO_HF0_HF1)
 172
 173static int pcxhr_send_it_dsp(struct pcxhr_mgr *mgr, unsigned int itdsp, int atomic)
 174{
 175        int err;
 176        unsigned char reg;
 177
 178        if (itdsp & PCXHR_MASK_IT_MANAGE_HF5) {
 179                /* clear hf5 bit */
 180                PCXHR_OUTPL(mgr, PCXHR_PLX_MBOX0,
 181                            PCXHR_INPL(mgr, PCXHR_PLX_MBOX0) & ~PCXHR_MBOX0_HF5);
 182        }
 183        if ((itdsp & PCXHR_MASK_IT_NO_HF0_HF1) == 0) {
 184                reg = PCXHR_ICR_HI08_RREQ | PCXHR_ICR_HI08_TREQ | PCXHR_ICR_HI08_HDRQ;
 185                if (itdsp & PCXHR_MASK_IT_HF0)
 186                        reg |= PCXHR_ICR_HI08_HF0;
 187                if (itdsp & PCXHR_MASK_IT_HF1)
 188                        reg |= PCXHR_ICR_HI08_HF1;
 189                PCXHR_OUTPB(mgr, PCXHR_DSP_ICR, reg);
 190        }
 191        reg = (unsigned char)(((itdsp & PCXHR_MASK_EXTRA_INFO) >> 1) | PCXHR_CVR_HI08_HC);
 192        PCXHR_OUTPB(mgr, PCXHR_DSP_CVR, reg);
 193        if (itdsp & PCXHR_MASK_IT_WAIT) {
 194                if (atomic)
 195                        mdelay(PCXHR_WAIT_IT);
 196                else
 197                        msleep(PCXHR_WAIT_IT);
 198        }
 199        if (itdsp & PCXHR_MASK_IT_WAIT_EXTRA) {
 200                if (atomic)
 201                        mdelay(PCXHR_WAIT_IT_EXTRA);
 202                else
 203                        msleep(PCXHR_WAIT_IT);
 204        }
 205        /* wait for CVR_HI08_HC == 0 */
 206        err = pcxhr_check_reg_bit(mgr, PCXHR_DSP_CVR,  PCXHR_CVR_HI08_HC, 0,
 207                                  PCXHR_TIMEOUT_DSP, &reg);
Show full sources