CMTOUT_IE is only supported for older SoCs. Newer SoCs shall not set
this bit. So, add a version check.

Reported-by: Phong Hoang <[email protected]>
Reviewed-by: Geert Uytterhoeven <[email protected]>
Reviewed-by: Niklas Söderlund <[email protected]>
Signed-off-by: Wolfram Sang <[email protected]>
---

Changes since v1:
* updated $subject
* added tags

 drivers/clocksource/sh_cmt.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/clocksource/sh_cmt.c b/drivers/clocksource/sh_cmt.c
index c98f8851fd68..d7ed99f0001f 100644
--- a/drivers/clocksource/sh_cmt.c
+++ b/drivers/clocksource/sh_cmt.c
@@ -339,8 +339,9 @@ static int sh_cmt_enable(struct sh_cmt_channel *ch)
                sh_cmt_write_cmcsr(ch, SH_CMT16_CMCSR_CMIE |
                                   SH_CMT16_CMCSR_CKS512);
        } else {
-               sh_cmt_write_cmcsr(ch, SH_CMT32_CMCSR_CMM |
-                                  SH_CMT32_CMCSR_CMTOUT_IE |
+               u32 cmtout = ch->cmt->info->model <= SH_CMT_48BIT ?
+                             SH_CMT32_CMCSR_CMTOUT_IE : 0;
+               sh_cmt_write_cmcsr(ch, cmtout | SH_CMT32_CMCSR_CMM |
                                   SH_CMT32_CMCSR_CMR_IRQ |
                                   SH_CMT32_CMCSR_CKS_RCLK8);
        }
-- 
2.30.0

Reply via email to