Tobias Jakobi wrote:
> 
> EXYNOS4_MCT_L_MASK is defined as 0xffffff00, so applying this bitmask
> produces a number outside the range 0x00 to 0xff, which always results
> in execution of the default switch statement.
> 
> Obviously this is wrong and git history shows that the bitmask inversion
> was incorrectly set during a refactoring of the MCT code.
> 
> Fix this by putting the inversion at the correct position again.
> 
> Reported-by: GP Orcullo <[email protected]>
> Signed-off-by: Tobias Jakobi <[email protected]>

+ Daniel, Thomas,

adding Doug's review tag from previous his reply.

Reviewed-by: Doug Anderson <[email protected]>

And

Acked-by: Kukjin Kim <[email protected]>

Daniel,

Since this is obvious fix, can you please pick into your tree?
If any problem, please kindly let me know.

Thanks,
Kukjin

> ---
>  drivers/clocksource/exynos_mct.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/clocksource/exynos_mct.c 
> b/drivers/clocksource/exynos_mct.c
> index 9403061..83564c9 100644
> --- a/drivers/clocksource/exynos_mct.c
> +++ b/drivers/clocksource/exynos_mct.c
> @@ -97,8 +97,8 @@ static void exynos4_mct_write(unsigned int value, unsigned 
> long offset)
>       writel_relaxed(value, reg_base + offset);
> 
>       if (likely(offset >= EXYNOS4_MCT_L_BASE(0))) {
> -             stat_addr = (offset & ~EXYNOS4_MCT_L_MASK) + MCT_L_WSTAT_OFFSET;
> -             switch (offset & EXYNOS4_MCT_L_MASK) {
> +             stat_addr = (offset & EXYNOS4_MCT_L_MASK) + MCT_L_WSTAT_OFFSET;
> +             switch (offset & ~EXYNOS4_MCT_L_MASK) {
>               case MCT_L_TCON_OFFSET:
>                       mask = 1 << 3;          /* L_TCON write status */
>                       break;
> --
> 2.0.4

--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to