Subversion Repositories Kolibri OS

Rev

Rev 5078 | Rev 5271 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5078 Rev 5179
Line 4747... Line 4747...
4747
		wptr = le32_to_cpu(rdev->wb.wb[R600_WB_IH_WPTR_OFFSET/4]);
4747
		wptr = le32_to_cpu(rdev->wb.wb[R600_WB_IH_WPTR_OFFSET/4]);
4748
	else
4748
	else
4749
		wptr = RREG32(IH_RB_WPTR);
4749
		wptr = RREG32(IH_RB_WPTR);
Line 4750... Line 4750...
4750
 
4750
 
-
 
4751
	if (wptr & RB_OVERFLOW) {
4751
	if (wptr & RB_OVERFLOW) {
4752
		wptr &= ~RB_OVERFLOW;
4752
		/* When a ring buffer overflow happen start parsing interrupt
4753
		/* When a ring buffer overflow happen start parsing interrupt
4753
		 * from the last not overwritten vector (wptr + 16). Hopefully
4754
		 * from the last not overwritten vector (wptr + 16). Hopefully
4754
		 * this should allow us to catchup.
4755
		 * this should allow us to catchup.
4755
		 */
4756
		 */
4756
		dev_warn(rdev->dev, "IH ring buffer overflow (0x%08X, %d, %d)\n",
4757
		dev_warn(rdev->dev, "IH ring buffer overflow (0x%08X, 0x%08X, 0x%08X)\n",
4757
			wptr, rdev->ih.rptr, (wptr + 16) + rdev->ih.ptr_mask);
4758
			 wptr, rdev->ih.rptr, (wptr + 16) & rdev->ih.ptr_mask);
4758
		rdev->ih.rptr = (wptr + 16) & rdev->ih.ptr_mask;
4759
		rdev->ih.rptr = (wptr + 16) & rdev->ih.ptr_mask;
4759
		tmp = RREG32(IH_RB_CNTL);
4760
		tmp = RREG32(IH_RB_CNTL);
4760
		tmp |= IH_WPTR_OVERFLOW_CLEAR;
4761
		tmp |= IH_WPTR_OVERFLOW_CLEAR;
4761
		WREG32(IH_RB_CNTL, tmp);
-
 
4762
		wptr &= ~RB_OVERFLOW;
4762
		WREG32(IH_RB_CNTL, tmp);
4763
	}
4763
	}
4764
	return (wptr & rdev->ih.ptr_mask);
4764
	return (wptr & rdev->ih.ptr_mask);
Line 4765... Line 4765...
4765
}
4765
}