Example #1
0
i32 cc_timer_start(cc_hndl hndl, struct u64_time *time_u64, u32 options)
{
        struct sw_timer *swt = (struct sw_timer*) hndl;
        struct u64_time time64_ref = {0, 0}; /* init */
        u32 intr_mask;
        i32 rv = -1;
        
        if((NULL == swt) || 
           (false == has_valid_opts(swt->hwt_obj, options)))
                goto cc_timer_start_exit1;
        
#define IS_LRT_TIMER(hwt) hwt_has_abs_time(hwt) /* LRT:: Low Resolution Timer */
        
        time64_ref.secs = time_u64->secs;
        time64_ref.nsec = time_u64->nsec;

        if(IS_LRT_TIMER(swt->hwt_obj)) {
                /* reducing the precision to milliseconds to avoid floating point ops */
                time64_ref.nsec = U16MS_U32NS(U32NS_U16MS(time_u64->nsec));
        }

        intr_mask = dsbl_irqc();
        rv = timer_start(swt, &time64_ref, options);
        enbl_irqc(intr_mask);

cc_timer_start_exit1:
        
        return rv;
} 
Example #2
0
static void rtc_alarm_rd(struct u64_time *alarm)
{
    u16 msec_cycles = 0;

    MAP_PRCMRTCMatchGet(&alarm->secs, &msec_cycles);
    alarm->nsec = U16MS_U32NS(CYCLES_U16MS(msec_cycles));
}
Example #3
0
static void rtc_value_rd(struct u64_time *value)
{
    u16 msec_cycles = 0;

    MAP_PRCMRTCGet(&value->secs, &msec_cycles);
    value->nsec = U16MS_U32NS(CYCLES_U16MS(msec_cycles));
}
Example #4
0
i32 cc_timer_start(cc_hndl hndl, struct u64_time *time_u64, u32 options)
{
		u32 intr_mask;
        struct sw_timer *swt = (struct sw_timer*) hndl;
        struct u64_time time_64_loc = {0,0};
        i32 rv = -1;
        
        if((NULL == swt) || 
           (false == has_valid_opts(swt->hwt_obj, options)))
                goto cc_timer_start_exit1;
        
        intr_mask = dsbl_irqc();
        /* reducing the precision to milliseconds to avoid floating point ops */
        time_64_loc.secs = time_u64->secs;
        time_64_loc.nsec = U16MS_U32NS(U32NS_U16MS(time_u64->nsec));
        rv = timer_start(swt, &time_64_loc, options);
        enbl_irqc(intr_mask);

cc_timer_start_exit1:
        
        return rv;
}