Home
last modified time | relevance | path

Searched refs:timer (Results 1 – 25 of 1737) sorted by relevance

12345678910>>...70

/Linux-v6.1/drivers/clocksource/
Dtimer-ti-dm.c166 static inline u32 dmtimer_read(struct dmtimer *timer, u32 reg) in dmtimer_read() argument
174 if (wp && timer->posted) in dmtimer_read()
175 while (readl_relaxed(timer->pend) & wp) in dmtimer_read()
178 return readl_relaxed(timer->func_base + offset); in dmtimer_read()
191 static inline void dmtimer_write(struct dmtimer *timer, u32 reg, u32 val) in dmtimer_write() argument
199 if (wp && timer->posted) in dmtimer_write()
200 while (readl_relaxed(timer->pend) & wp) in dmtimer_write()
203 writel_relaxed(val, timer->func_base + offset); in dmtimer_write()
206 static inline void __omap_dm_timer_init_regs(struct dmtimer *timer) in __omap_dm_timer_init_regs() argument
211 tidr = readl_relaxed(timer->io_base); in __omap_dm_timer_init_regs()
[all …]
Dtimer-zevio.c64 struct zevio_timer *timer = container_of(dev, struct zevio_timer, in zevio_timer_set_event() local
67 writel(delta, timer->timer1 + IO_CURRENT_VAL); in zevio_timer_set_event()
69 timer->timer1 + IO_CONTROL); in zevio_timer_set_event()
76 struct zevio_timer *timer = container_of(dev, struct zevio_timer, in zevio_timer_shutdown() local
80 writel(0, timer->interrupt_regs + IO_INTR_MSK); in zevio_timer_shutdown()
81 writel(TIMER_INTR_ALL, timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_shutdown()
83 writel(CNTL_STOP_TIMER, timer->timer1 + IO_CONTROL); in zevio_timer_shutdown()
89 struct zevio_timer *timer = container_of(dev, struct zevio_timer, in zevio_timer_set_oneshot() local
93 writel(TIMER_INTR_MSK, timer->interrupt_regs + IO_INTR_MSK); in zevio_timer_set_oneshot()
94 writel(TIMER_INTR_ALL, timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_set_oneshot()
[all …]
Dtimer-microchip-pit64b.c69 struct mchp_pit64b_timer timer; member
83 struct mchp_pit64b_timer timer; member
116 static inline void mchp_pit64b_reset(struct mchp_pit64b_timer *timer, in mchp_pit64b_reset() argument
124 writel_relaxed(MCHP_PIT64B_CR_SWRST, timer->base + MCHP_PIT64B_CR); in mchp_pit64b_reset()
125 writel_relaxed(mode | timer->mode, timer->base + MCHP_PIT64B_MR); in mchp_pit64b_reset()
126 writel_relaxed(high, timer->base + MCHP_PIT64B_MSB_PR); in mchp_pit64b_reset()
127 writel_relaxed(low, timer->base + MCHP_PIT64B_LSB_PR); in mchp_pit64b_reset()
128 writel_relaxed(irqs, timer->base + MCHP_PIT64B_IER); in mchp_pit64b_reset()
129 writel_relaxed(MCHP_PIT64B_CR_START, timer->base + MCHP_PIT64B_CR); in mchp_pit64b_reset()
132 static void mchp_pit64b_suspend(struct mchp_pit64b_timer *timer) in mchp_pit64b_suspend() argument
[all …]
DMakefile2 obj-$(CONFIG_TIMER_OF) += timer-of.o
3 obj-$(CONFIG_TIMER_PROBE) += timer-probe.o
4 obj-$(CONFIG_ATMEL_PIT) += timer-atmel-pit.o
5 obj-$(CONFIG_ATMEL_ST) += timer-atmel-st.o
6 obj-$(CONFIG_ATMEL_TCB_CLKSRC) += timer-atmel-tcb.o
9 obj-$(CONFIG_CS5535_CLOCK_EVENT_SRC) += timer-cs5535.o
18 obj-$(CONFIG_DAVINCI_TIMER) += timer-davinci.o
19 obj-$(CONFIG_DIGICOLOR_TIMER) += timer-digicolor.o
20 obj-$(CONFIG_OMAP_DM_TIMER) += timer-ti-dm.o
21 obj-$(CONFIG_OMAP_DM_SYSTIMER) += timer-ti-dm-systimer.o
[all …]
Dtimer-rockchip.c44 struct rk_timer timer; member
52 return &container_of(ce, struct rk_clkevt, ce)->timer; in rk_timer()
55 static inline void rk_timer_disable(struct rk_timer *timer) in rk_timer_disable() argument
57 writel_relaxed(TIMER_DISABLE, timer->ctrl); in rk_timer_disable()
60 static inline void rk_timer_enable(struct rk_timer *timer, u32 flags) in rk_timer_enable() argument
62 writel_relaxed(TIMER_ENABLE | flags, timer->ctrl); in rk_timer_enable()
66 struct rk_timer *timer) in rk_timer_update_counter() argument
68 writel_relaxed(cycles, timer->base + TIMER_LOAD_COUNT0); in rk_timer_update_counter()
69 writel_relaxed(0, timer->base + TIMER_LOAD_COUNT1); in rk_timer_update_counter()
72 static void rk_timer_interrupt_clear(struct rk_timer *timer) in rk_timer_interrupt_clear() argument
[all …]
Ddw_apb_timer.c49 static inline u32 apbt_readl(struct dw_apb_timer *timer, unsigned long offs) in apbt_readl() argument
51 return readl(timer->base + offs); in apbt_readl()
54 static inline void apbt_writel(struct dw_apb_timer *timer, u32 val, in apbt_writel() argument
57 writel(val, timer->base + offs); in apbt_writel()
60 static inline u32 apbt_readl_relaxed(struct dw_apb_timer *timer, unsigned long offs) in apbt_readl_relaxed() argument
62 return readl_relaxed(timer->base + offs); in apbt_readl_relaxed()
65 static inline void apbt_writel_relaxed(struct dw_apb_timer *timer, u32 val, in apbt_writel_relaxed() argument
68 writel_relaxed(val, timer->base + offs); in apbt_writel_relaxed()
71 static void apbt_disable_int(struct dw_apb_timer *timer) in apbt_disable_int() argument
73 u32 ctrl = apbt_readl(timer, APBTMR_N_CONTROL); in apbt_disable_int()
[all …]
Dbcm2835_timer.c46 struct bcm2835_timer *timer = container_of(evt_dev, in bcm2835_time_set_next_event() local
49 timer->compare); in bcm2835_time_set_next_event()
55 struct bcm2835_timer *timer = dev_id; in bcm2835_time_interrupt() local
57 if (readl_relaxed(timer->control) & timer->match_mask) { in bcm2835_time_interrupt()
58 writel_relaxed(timer->match_mask, timer->control); in bcm2835_time_interrupt()
60 event_handler = READ_ONCE(timer->evt.event_handler); in bcm2835_time_interrupt()
62 event_handler(&timer->evt); in bcm2835_time_interrupt()
74 struct bcm2835_timer *timer; in bcm2835_timer_init() local
101 timer = kzalloc(sizeof(*timer), GFP_KERNEL); in bcm2835_timer_init()
102 if (!timer) { in bcm2835_timer_init()
[all …]
Dingenic-timer.c68 to_ingenic_tcu(struct ingenic_tcu_timer *timer) in to_ingenic_tcu() argument
70 return container_of(timer, struct ingenic_tcu, timers[timer->cpu]); in to_ingenic_tcu()
81 struct ingenic_tcu_timer *timer = to_ingenic_tcu_timer(evt); in ingenic_tcu_cevt_set_state_shutdown() local
82 struct ingenic_tcu *tcu = to_ingenic_tcu(timer); in ingenic_tcu_cevt_set_state_shutdown()
84 regmap_write(tcu->map, TCU_REG_TECR, BIT(timer->channel)); in ingenic_tcu_cevt_set_state_shutdown()
92 struct ingenic_tcu_timer *timer = to_ingenic_tcu_timer(evt); in ingenic_tcu_cevt_set_next() local
93 struct ingenic_tcu *tcu = to_ingenic_tcu(timer); in ingenic_tcu_cevt_set_next()
98 regmap_write(tcu->map, TCU_REG_TDFRc(timer->channel), next); in ingenic_tcu_cevt_set_next()
99 regmap_write(tcu->map, TCU_REG_TCNTc(timer->channel), 0); in ingenic_tcu_cevt_set_next()
100 regmap_write(tcu->map, TCU_REG_TESR, BIT(timer->channel)); in ingenic_tcu_cevt_set_next()
[all …]
Dtimer-sun5i.c49 struct sun5i_timer timer; member
57 struct sun5i_timer timer; member
72 u32 old = readl(ce->timer.base + TIMER_CNTVAL_LO_REG(1)); in sun5i_clkevt_sync()
74 while ((old - readl(ce->timer.base + TIMER_CNTVAL_LO_REG(1))) < TIMER_SYNC_TICKS) in sun5i_clkevt_sync()
78 static void sun5i_clkevt_time_stop(struct sun5i_timer_clkevt *ce, u8 timer) in sun5i_clkevt_time_stop() argument
80 u32 val = readl(ce->timer.base + TIMER_CTL_REG(timer)); in sun5i_clkevt_time_stop()
81 writel(val & ~TIMER_CTL_ENABLE, ce->timer.base + TIMER_CTL_REG(timer)); in sun5i_clkevt_time_stop()
86 static void sun5i_clkevt_time_setup(struct sun5i_timer_clkevt *ce, u8 timer, u32 delay) in sun5i_clkevt_time_setup() argument
88 writel(delay, ce->timer.base + TIMER_INTVAL_LO_REG(timer)); in sun5i_clkevt_time_setup()
91 static void sun5i_clkevt_time_start(struct sun5i_timer_clkevt *ce, u8 timer, bool periodic) in sun5i_clkevt_time_start() argument
[all …]
/Linux-v6.1/drivers/rtc/
Drtc-brcmstb-waketimer.c44 static inline void brcmstb_waketmr_clear_alarm(struct brcmstb_waketmr *timer) in brcmstb_waketmr_clear_alarm() argument
46 writel_relaxed(1, timer->base + BRCMSTB_WKTMR_EVENT); in brcmstb_waketmr_clear_alarm()
47 (void)readl_relaxed(timer->base + BRCMSTB_WKTMR_EVENT); in brcmstb_waketmr_clear_alarm()
50 static void brcmstb_waketmr_set_alarm(struct brcmstb_waketmr *timer, in brcmstb_waketmr_set_alarm() argument
53 brcmstb_waketmr_clear_alarm(timer); in brcmstb_waketmr_set_alarm()
56 writel_relaxed(timer->rate, timer->base + BRCMSTB_WKTMR_PRESCALER); in brcmstb_waketmr_set_alarm()
58 writel_relaxed(secs + 1, timer->base + BRCMSTB_WKTMR_ALARM); in brcmstb_waketmr_set_alarm()
63 struct brcmstb_waketmr *timer = data; in brcmstb_waketmr_irq() local
65 pm_wakeup_event(timer->dev, 0); in brcmstb_waketmr_irq()
75 static void wktmr_read(struct brcmstb_waketmr *timer, in wktmr_read() argument
[all …]
/Linux-v6.1/include/linux/
Dhrtimer.h137 struct hrtimer timer; member
240 static inline void hrtimer_set_expires(struct hrtimer *timer, ktime_t time) in hrtimer_set_expires() argument
242 timer->node.expires = time; in hrtimer_set_expires()
243 timer->_softexpires = time; in hrtimer_set_expires()
246 static inline void hrtimer_set_expires_range(struct hrtimer *timer, ktime_t time, ktime_t delta) in hrtimer_set_expires_range() argument
248 timer->_softexpires = time; in hrtimer_set_expires_range()
249 timer->node.expires = ktime_add_safe(time, delta); in hrtimer_set_expires_range()
252 static inline void hrtimer_set_expires_range_ns(struct hrtimer *timer, ktime_t time, u64 delta) in hrtimer_set_expires_range_ns() argument
254 timer->_softexpires = time; in hrtimer_set_expires_range_ns()
255 timer->node.expires = ktime_add_safe(time, ns_to_ktime(delta)); in hrtimer_set_expires_range_ns()
[all …]
/Linux-v6.1/net/netfilter/
Dxt_IDLETIMER.c35 struct timer_list timer; member
66 struct idletimer_tg *timer; in idletimer_tg_show() local
73 timer = __idletimer_tg_find_by_label(attr->attr.name); in idletimer_tg_show()
74 if (timer) { in idletimer_tg_show()
75 if (timer->timer_type & XT_IDLETIMER_ALARM) { in idletimer_tg_show()
76 ktime_t expires_alarm = alarm_expires_remaining(&timer->alarm); in idletimer_tg_show()
80 expires = timer->timer.expires; in idletimer_tg_show()
95 struct idletimer_tg *timer = container_of(work, struct idletimer_tg, in idletimer_tg_work() local
98 sysfs_notify(idletimer_tg_kobj, NULL, timer->attr.attr.name); in idletimer_tg_work()
103 struct idletimer_tg *timer = from_timer(timer, t, timer); in idletimer_tg_expired() local
[all …]
/Linux-v6.1/sound/core/
Dtimer.c128 static int snd_timer_free(struct snd_timer *timer);
133 static void snd_timer_reschedule(struct snd_timer * timer, unsigned long ticks_left);
176 struct snd_timer *timer; in snd_timer_find() local
178 list_for_each_entry(timer, &snd_timer_list, device_list) { in snd_timer_find()
179 if (timer->tmr_class != tid->dev_class) in snd_timer_find()
181 if ((timer->tmr_class == SNDRV_TIMER_CLASS_CARD || in snd_timer_find()
182 timer->tmr_class == SNDRV_TIMER_CLASS_PCM) && in snd_timer_find()
183 (timer->card == NULL || in snd_timer_find()
184 timer->card->number != tid->card)) in snd_timer_find()
186 if (timer->tmr_device != tid->device) in snd_timer_find()
[all …]
Dpcm_timer.c52 static unsigned long snd_pcm_timer_resolution(struct snd_timer * timer) in snd_pcm_timer_resolution() argument
56 substream = timer->private_data; in snd_pcm_timer_resolution()
60 static int snd_pcm_timer_start(struct snd_timer * timer) in snd_pcm_timer_start() argument
64 substream = snd_timer_chip(timer); in snd_pcm_timer_start()
69 static int snd_pcm_timer_stop(struct snd_timer * timer) in snd_pcm_timer_stop() argument
73 substream = snd_timer_chip(timer); in snd_pcm_timer_stop()
92 static void snd_pcm_timer_free(struct snd_timer *timer) in snd_pcm_timer_free() argument
94 struct snd_pcm_substream *substream = timer->private_data; in snd_pcm_timer_free()
95 substream->timer = NULL; in snd_pcm_timer_free()
101 struct snd_timer *timer; in snd_pcm_timer_init() local
[all …]
/Linux-v6.1/arch/nios2/kernel/
Dtime.c42 struct nios2_timer timer; member
47 struct nios2_timer timer; member
63 static u16 timer_readw(struct nios2_timer *timer, u32 offs) in timer_readw() argument
65 return readw(timer->base + offs); in timer_readw()
68 static void timer_writew(struct nios2_timer *timer, u16 val, u32 offs) in timer_writew() argument
70 writew(val, timer->base + offs); in timer_writew()
73 static inline unsigned long read_timersnapshot(struct nios2_timer *timer) in read_timersnapshot() argument
77 timer_writew(timer, 0, ALTERA_TIMER_SNAPL_REG); in read_timersnapshot()
78 count = timer_readw(timer, ALTERA_TIMER_SNAPH_REG) << 16 | in read_timersnapshot()
79 timer_readw(timer, ALTERA_TIMER_SNAPL_REG); in read_timersnapshot()
[all …]
/Linux-v6.1/kernel/time/
Dtimer.c501 static inline unsigned int timer_get_idx(struct timer_list *timer) in timer_get_idx() argument
503 return (timer->flags & TIMER_ARRAYMASK) >> TIMER_ARRAYSHIFT; in timer_get_idx()
506 static inline void timer_set_idx(struct timer_list *timer, unsigned int idx) in timer_set_idx() argument
508 timer->flags = (timer->flags & ~TIMER_ARRAYMASK) | in timer_set_idx()
572 trigger_dyntick_cpu(struct timer_base *base, struct timer_list *timer) in trigger_dyntick_cpu() argument
581 if (timer->flags & TIMER_DEFERRABLE) { in trigger_dyntick_cpu()
601 static void enqueue_timer(struct timer_base *base, struct timer_list *timer, in enqueue_timer() argument
605 hlist_add_head(&timer->entry, base->vectors + idx); in enqueue_timer()
607 timer_set_idx(timer, idx); in enqueue_timer()
609 trace_timer_start(timer, timer->expires, timer->flags); in enqueue_timer()
[all …]
Dhrtimer.c165 struct hrtimer_clock_base *lock_hrtimer_base(const struct hrtimer *timer, in lock_hrtimer_base() argument
171 base = READ_ONCE(timer->base); in lock_hrtimer_base()
174 if (likely(base == timer->base)) in lock_hrtimer_base()
193 hrtimer_check_target(struct hrtimer *timer, struct hrtimer_clock_base *new_base) in hrtimer_check_target() argument
197 expires = ktime_sub(hrtimer_get_expires(timer), new_base->offset); in hrtimer_check_target()
225 switch_hrtimer_base(struct hrtimer *timer, struct hrtimer_clock_base *base, in switch_hrtimer_base() argument
247 if (unlikely(hrtimer_callback_running(timer))) in switch_hrtimer_base()
251 WRITE_ONCE(timer->base, &migration_base); in switch_hrtimer_base()
256 hrtimer_check_target(timer, new_base)) { in switch_hrtimer_base()
260 WRITE_ONCE(timer->base, base); in switch_hrtimer_base()
[all …]
Dposix-cpu-timers.c22 static void posix_cpu_timer_rearm(struct k_itimer *timer);
113 static inline struct task_struct *cpu_timer_task_rcu(struct k_itimer *timer) in cpu_timer_task_rcu() argument
115 return pid_task(timer->it.cpu.pid, clock_pid_type(timer->it_clock)); in cpu_timer_task_rcu()
122 static u64 bump_cpu_timer(struct k_itimer *timer, u64 now) in bump_cpu_timer() argument
124 u64 delta, incr, expires = timer->it.cpu.node.expires; in bump_cpu_timer()
127 if (!timer->it_interval) in bump_cpu_timer()
133 incr = timer->it_interval; in bump_cpu_timer()
144 timer->it.cpu.node.expires += incr; in bump_cpu_timer()
145 timer->it_overrun += 1LL << i; in bump_cpu_timer()
148 return timer->it.cpu.node.expires; in bump_cpu_timer()
[all …]
/Linux-v6.1/arch/s390/kernel/
Dvtime.c38 u64 timer; in get_vtimer() local
40 asm volatile("stpt %0" : "=Q" (timer)); in get_vtimer()
41 return timer; in get_vtimer()
46 u64 timer; in set_vtimer() local
51 : "=Q" (timer) : "Q" (expires)); in set_vtimer()
52 S390_lowcore.system_timer += S390_lowcore.last_update_timer - timer; in set_vtimer()
127 u64 timer, clock, user, guest, system, hardirq, softirq; in do_account_vtime() local
129 timer = S390_lowcore.last_update_timer; in do_account_vtime()
138 timer -= S390_lowcore.last_update_timer; in do_account_vtime()
141 S390_lowcore.hardirq_timer += timer; in do_account_vtime()
[all …]
/Linux-v6.1/sound/core/seq/oss/
Dseq_oss_timer.c24 static void calc_alsa_tempo(struct seq_oss_timer *timer);
116 calc_alsa_tempo(struct seq_oss_timer *timer) in calc_alsa_tempo() argument
118 timer->tempo = (60 * 1000000) / timer->oss_tempo; in calc_alsa_tempo()
119 timer->ppq = timer->oss_timebase; in calc_alsa_tempo()
147 snd_seq_oss_timer_start(struct seq_oss_timer *timer) in snd_seq_oss_timer_start() argument
149 struct seq_oss_devinfo *dp = timer->dp; in snd_seq_oss_timer_start()
152 if (timer->running) in snd_seq_oss_timer_start()
153 snd_seq_oss_timer_stop(timer); in snd_seq_oss_timer_start()
157 tmprec.ppq = timer->ppq; in snd_seq_oss_timer_start()
158 tmprec.tempo = timer->tempo; in snd_seq_oss_timer_start()
[all …]
/Linux-v6.1/sound/isa/gus/
Dgus_timer.c17 static int snd_gf1_timer1_start(struct snd_timer * timer) in snd_gf1_timer1_start() argument
24 gus = snd_timer_chip(timer); in snd_gf1_timer1_start()
26 ticks = timer->sticks; in snd_gf1_timer1_start()
35 static int snd_gf1_timer1_stop(struct snd_timer * timer) in snd_gf1_timer1_stop() argument
41 gus = snd_timer_chip(timer); in snd_gf1_timer1_stop()
53 static int snd_gf1_timer2_start(struct snd_timer * timer) in snd_gf1_timer2_start() argument
60 gus = snd_timer_chip(timer); in snd_gf1_timer2_start()
62 ticks = timer->sticks; in snd_gf1_timer2_start()
71 static int snd_gf1_timer2_stop(struct snd_timer * timer) in snd_gf1_timer2_stop() argument
77 gus = snd_timer_chip(timer); in snd_gf1_timer2_stop()
[all …]
/Linux-v6.1/tools/testing/selftests/kvm/include/aarch64/
Darch_timer.h34 static inline uint64_t timer_get_cntct(enum arch_timer timer) in timer_get_cntct() argument
38 switch (timer) { in timer_get_cntct()
44 GUEST_ASSERT_1(0, timer); in timer_get_cntct()
51 static inline void timer_set_cval(enum arch_timer timer, uint64_t cval) in timer_set_cval() argument
53 switch (timer) { in timer_set_cval()
61 GUEST_ASSERT_1(0, timer); in timer_set_cval()
67 static inline uint64_t timer_get_cval(enum arch_timer timer) in timer_get_cval() argument
69 switch (timer) { in timer_get_cval()
75 GUEST_ASSERT_1(0, timer); in timer_get_cval()
82 static inline void timer_set_tval(enum arch_timer timer, uint32_t tval) in timer_set_tval() argument
[all …]
/Linux-v6.1/include/linux/platform_data/
Ddmtimer-omap.h17 int (*free)(struct omap_dm_timer *timer);
19 void (*enable)(struct omap_dm_timer *timer);
20 void (*disable)(struct omap_dm_timer *timer);
22 int (*get_irq)(struct omap_dm_timer *timer);
23 int (*set_int_enable)(struct omap_dm_timer *timer,
25 int (*set_int_disable)(struct omap_dm_timer *timer, u32 mask);
27 struct clk *(*get_fclk)(struct omap_dm_timer *timer);
29 int (*start)(struct omap_dm_timer *timer);
30 int (*stop)(struct omap_dm_timer *timer);
31 int (*set_source)(struct omap_dm_timer *timer, int source);
[all …]
/Linux-v6.1/arch/powerpc/sysdev/
Dfsl_mpic_timer_wakeup.c19 struct mpic_timer *timer; member
33 if (wakeup->timer) { in fsl_free_resource()
34 disable_irq_wake(wakeup->timer->irq); in fsl_free_resource()
35 mpic_free_timer(wakeup->timer); in fsl_free_resource()
38 wakeup->timer = NULL; in fsl_free_resource()
48 return wakeup->timer ? IRQ_HANDLED : IRQ_NONE; in fsl_mpic_timer_irq()
58 if (fsl_wakeup->timer) { in fsl_timer_wakeup_show()
59 mpic_get_remain_time(fsl_wakeup->timer, &interval); in fsl_timer_wakeup_show()
80 if (fsl_wakeup->timer) { in fsl_timer_wakeup_store()
81 disable_irq_wake(fsl_wakeup->timer->irq); in fsl_timer_wakeup_store()
[all …]
/Linux-v6.1/drivers/isdn/mISDN/
Dtimerdev.c68 struct mISDNtimer *timer, *next; in mISDN_close() local
75 timer = list_first_entry(list, struct mISDNtimer, list); in mISDN_close()
77 del_timer_sync(&timer->tl); in mISDN_close()
80 list_del(&timer->list); in mISDN_close()
81 kfree(timer); in mISDN_close()
85 list_for_each_entry_safe(timer, next, &dev->expired, list) { in mISDN_close()
86 kfree(timer); in mISDN_close()
97 struct mISDNtimer *timer; in mISDN_read() local
121 timer = list_first_entry(list, struct mISDNtimer, list); in mISDN_read()
122 list_del(&timer->list); in mISDN_read()
[all …]

12345678910>>...70