From: Imre Deak Date: Tue, 6 Mar 2012 19:17:27 +0000 (+0200) Subject: gfx: drv: add helper to wait for HW flag becoming set/clear X-Git-Tag: 2.1b_release~227 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2e6dedc56b93675be3c0bd3ab64b69acf2c1b484;p=kernel%2Fkernel-mfld-blackbay.git gfx: drv: add helper to wait for HW flag becoming set/clear Signed-off-by: Imre Deak Reviewed-by: Jani Nikula Signed-off-by: Kirill A. Shutemov --- diff --git a/drivers/staging/mrst/drv/psb_drv.h b/drivers/staging/mrst/drv/psb_drv.h index 87c48d8..876a93c 100644 --- a/drivers/staging/mrst/drv/psb_drv.h +++ b/drivers/staging/mrst/drv/psb_drv.h @@ -1241,12 +1241,12 @@ static inline void REGISTER_WRITE(struct drm_device *dev, uint32_t reg, #define REG_FLD_MOD(reg, val, start, end) \ REG_WRITE(reg, FLD_MOD(REG_READ(reg), val, start, end)) -static inline int REGISTER_FLD_WAIT(struct drm_device *dev, u32 reg, - u32 val, int start, int end) +static inline int REGISTER_FLD_MASK_WAIT(struct drm_device *dev, u32 reg, + u32 val, u32 mask) { int t = 100000; - while (FLD_GET(REG_READ(reg), start, end) != val) { + while ((REG_READ(reg) & mask) != val) { if (--t == 0) return 1; } @@ -1254,12 +1254,25 @@ static inline int REGISTER_FLD_WAIT(struct drm_device *dev, u32 reg, return 0; } +static inline int REGISTER_FLD_WAIT(struct drm_device *dev, u32 reg, u32 val, + int start, int end) +{ + return REGISTER_FLD_MASK_WAIT(dev, reg, FLD_VAL(val, start, end), + FLD_MASK(start, end)); +} + #define REG_FLD_WAIT(reg, val, start, end) \ REGISTER_FLD_WAIT(dev, reg, val, start, end) #define REG_BIT_WAIT(reg, val, bitnum) \ REGISTER_FLD_WAIT(dev, reg, val, bitnum, bitnum) +#define REG_FLAG_WAIT_SET(reg, flag) \ + REGISTER_FLD_MASK_WAIT(dev, reg, flag, flag) + +#define REG_FLAG_WAIT_CLEAR(reg, flag) \ + REGISTER_FLD_MASK_WAIT(dev, reg, flag, 0) + static inline void REGISTER_WRITE16(struct drm_device *dev, uint32_t reg, uint32_t val) {