#define MSC313E_REG_TIMER_MAX_HIGH     0x0c
 #define MSC313E_REG_COUNTER_LOW                0x10
 #define MSC313E_REG_COUNTER_HIGH       0x14
+#define MSC313E_REG_TIMER_DIVIDE       0x18
 
+#define MSC313E_CLK_DIVIDER            9
 #define TIMER_SYNC_TICKS               3
 
 #ifdef CONFIG_ARM
        if (ret)
                return ret;
 
+       if (of_device_is_compatible(np, "sstar,ssd20xd-timer")) {
+               to->of_clk.rate = clk_get_rate(to->of_clk.clk) / MSC313E_CLK_DIVIDER;
+               to->of_clk.period = DIV_ROUND_UP(to->of_clk.rate, HZ);
+               writew(MSC313E_CLK_DIVIDER - 1, timer_of_base(to) + MSC313E_REG_TIMER_DIVIDE);
+       }
+
        msc313e_clkevt.cpumask = cpu_possible_mask;
        msc313e_clkevt.irq = to->of_irq.irq;
        to->clkevt = msc313e_clkevt;
 }
 
 TIMER_OF_DECLARE(msc313, "mstar,msc313e-timer", msc313e_timer_init);
+TIMER_OF_DECLARE(ssd20xd, "sstar,ssd20xd-timer", msc313e_timer_init);