u64 ns;
u32 lo, hi;
- lo = qoriq_read(®s->ctrl_regs->tmr_cnt_l);
- hi = qoriq_read(®s->ctrl_regs->tmr_cnt_h);
+ lo = ptp_qoriq->read(®s->ctrl_regs->tmr_cnt_l);
+ hi = ptp_qoriq->read(®s->ctrl_regs->tmr_cnt_h);
ns = ((u64) hi) << 32;
ns |= lo;
return ns;
u32 hi = ns >> 32;
u32 lo = ns & 0xffffffff;
- qoriq_write(®s->ctrl_regs->tmr_cnt_l, lo);
- qoriq_write(®s->ctrl_regs->tmr_cnt_h, hi);
+ ptp_qoriq->write(®s->ctrl_regs->tmr_cnt_l, lo);
+ ptp_qoriq->write(®s->ctrl_regs->tmr_cnt_h, hi);
}
/* Caller must hold ptp_qoriq->lock. */
ns -= ptp_qoriq->tclk_period;
hi = ns >> 32;
lo = ns & 0xffffffff;
- qoriq_write(®s->alarm_regs->tmr_alarm1_l, lo);
- qoriq_write(®s->alarm_regs->tmr_alarm1_h, hi);
+ ptp_qoriq->write(®s->alarm_regs->tmr_alarm1_l, lo);
+ ptp_qoriq->write(®s->alarm_regs->tmr_alarm1_h, hi);
}
/* Caller must hold ptp_qoriq->lock. */
struct ptp_qoriq_registers *regs = &ptp_qoriq->regs;
set_alarm(ptp_qoriq);
- qoriq_write(®s->fiper_regs->tmr_fiper1, ptp_qoriq->tmr_fiper1);
- qoriq_write(®s->fiper_regs->tmr_fiper2, ptp_qoriq->tmr_fiper2);
+ ptp_qoriq->write(®s->fiper_regs->tmr_fiper1, ptp_qoriq->tmr_fiper1);
+ ptp_qoriq->write(®s->fiper_regs->tmr_fiper2, ptp_qoriq->tmr_fiper2);
}
static int extts_clean_up(struct ptp_qoriq *ptp_qoriq, int index,
event.index = index;
do {
- lo = qoriq_read(reg_etts_l);
- hi = qoriq_read(reg_etts_h);
+ lo = ptp_qoriq->read(reg_etts_l);
+ hi = ptp_qoriq->read(reg_etts_h);
if (update_event) {
event.timestamp = ((u64) hi) << 32;
ptp_clock_event(ptp_qoriq->clock, &event);
}
- stat = qoriq_read(®s->ctrl_regs->tmr_stat);
+ stat = ptp_qoriq->read(®s->ctrl_regs->tmr_stat);
} while (ptp_qoriq->extts_fifo_support && (stat & valid));
return 0;
spin_lock(&ptp_qoriq->lock);
- val = qoriq_read(®s->ctrl_regs->tmr_tevent);
- mask = qoriq_read(®s->ctrl_regs->tmr_temask);
+ val = ptp_qoriq->read(®s->ctrl_regs->tmr_tevent);
+ mask = ptp_qoriq->read(®s->ctrl_regs->tmr_temask);
spin_unlock(&ptp_qoriq->lock);
ns = ptp_qoriq->alarm_value + ptp_qoriq->alarm_interval;
hi = ns >> 32;
lo = ns & 0xffffffff;
- qoriq_write(®s->alarm_regs->tmr_alarm2_l, lo);
- qoriq_write(®s->alarm_regs->tmr_alarm2_h, hi);
+ ptp_qoriq->write(®s->alarm_regs->tmr_alarm2_l, lo);
+ ptp_qoriq->write(®s->alarm_regs->tmr_alarm2_h, hi);
ptp_qoriq->alarm_value = ns;
} else {
spin_lock(&ptp_qoriq->lock);
- mask = qoriq_read(®s->ctrl_regs->tmr_temask);
+ mask = ptp_qoriq->read(®s->ctrl_regs->tmr_temask);
mask &= ~ALM2EN;
- qoriq_write(®s->ctrl_regs->tmr_temask, mask);
+ ptp_qoriq->write(®s->ctrl_regs->tmr_temask, mask);
spin_unlock(&ptp_qoriq->lock);
ptp_qoriq->alarm_value = 0;
ptp_qoriq->alarm_interval = 0;
}
if (ack) {
- qoriq_write(®s->ctrl_regs->tmr_tevent, ack);
+ ptp_qoriq->write(®s->ctrl_regs->tmr_tevent, ack);
return IRQ_HANDLED;
} else
return IRQ_NONE;
tmr_add = neg_adj ? tmr_add - diff : tmr_add + diff;
- qoriq_write(®s->ctrl_regs->tmr_add, tmr_add);
+ ptp_qoriq->write(®s->ctrl_regs->tmr_add, tmr_add);
return 0;
}
spin_lock_irqsave(&ptp_qoriq->lock, flags);
- mask = qoriq_read(®s->ctrl_regs->tmr_temask);
+ mask = ptp_qoriq->read(®s->ctrl_regs->tmr_temask);
if (on) {
mask |= bit;
- qoriq_write(®s->ctrl_regs->tmr_tevent, bit);
+ ptp_qoriq->write(®s->ctrl_regs->tmr_tevent, bit);
} else {
mask &= ~bit;
}
- qoriq_write(®s->ctrl_regs->tmr_temask, mask);
+ ptp_qoriq->write(®s->ctrl_regs->tmr_temask, mask);
spin_unlock_irqrestore(&ptp_qoriq->lock, flags);
return 0;
return -ENODEV;
}
+ if (of_property_read_bool(node, "little-endian")) {
+ ptp_qoriq->read = qoriq_read_le;
+ ptp_qoriq->write = qoriq_write_le;
+ } else {
+ ptp_qoriq->read = qoriq_read_be;
+ ptp_qoriq->write = qoriq_write_be;
+ }
+
if (of_device_is_compatible(node, "fsl,fman-ptp-timer")) {
ptp_qoriq->regs.ctrl_regs = base + FMAN_CTRL_REGS_OFFSET;
ptp_qoriq->regs.alarm_regs = base + FMAN_ALARM_REGS_OFFSET;
spin_lock_irqsave(&ptp_qoriq->lock, flags);
regs = &ptp_qoriq->regs;
- qoriq_write(®s->ctrl_regs->tmr_ctrl, tmr_ctrl);
- qoriq_write(®s->ctrl_regs->tmr_add, ptp_qoriq->tmr_add);
- qoriq_write(®s->ctrl_regs->tmr_prsc, ptp_qoriq->tmr_prsc);
- qoriq_write(®s->fiper_regs->tmr_fiper1, ptp_qoriq->tmr_fiper1);
- qoriq_write(®s->fiper_regs->tmr_fiper2, ptp_qoriq->tmr_fiper2);
+ ptp_qoriq->write(®s->ctrl_regs->tmr_ctrl, tmr_ctrl);
+ ptp_qoriq->write(®s->ctrl_regs->tmr_add, ptp_qoriq->tmr_add);
+ ptp_qoriq->write(®s->ctrl_regs->tmr_prsc, ptp_qoriq->tmr_prsc);
+ ptp_qoriq->write(®s->fiper_regs->tmr_fiper1, ptp_qoriq->tmr_fiper1);
+ ptp_qoriq->write(®s->fiper_regs->tmr_fiper2, ptp_qoriq->tmr_fiper2);
set_alarm(ptp_qoriq);
- qoriq_write(®s->ctrl_regs->tmr_ctrl, tmr_ctrl|FIPERST|RTPE|TE|FRD);
+ ptp_qoriq->write(®s->ctrl_regs->tmr_ctrl,
+ tmr_ctrl|FIPERST|RTPE|TE|FRD);
spin_unlock_irqrestore(&ptp_qoriq->lock, flags);
{
struct ptp_qoriq_registers *regs = &ptp_qoriq->regs;
- qoriq_write(®s->ctrl_regs->tmr_temask, 0);
- qoriq_write(®s->ctrl_regs->tmr_ctrl, 0);
+ ptp_qoriq->write(®s->ctrl_regs->tmr_temask, 0);
+ ptp_qoriq->write(®s->ctrl_regs->tmr_ctrl, 0);
ptp_qoriq_remove_debugfs(ptp_qoriq);
ptp_clock_unregister(ptp_qoriq->clock);