void arm_timer_disable(void) { u32 ctrl; ctrl = arm_readl((void *)(REALVIEW_PBA8_TIMER0_1_BASE + TIMER_CTRL)); ctrl &= ~TIMER_CTRL_ENABLE; arm_writel(ctrl, (void *)(REALVIEW_PBA8_TIMER0_1_BASE + TIMER_CTRL)); }
void sp804_disable(void) { u32 ctrl; ctrl = arm_readl((void *)(sp804_base + TIMER_CTRL)); ctrl &= ~TIMER_CTRL_ENABLE; arm_writel(ctrl, (void *)(sp804_base + TIMER_CTRL)); }
void virtio_console_printch(physical_addr_t base, char ch) { u32 tmp; struct virtio_console_config *p = (void *)base + VIRTIO_MMIO_CONFIG; tmp = arm_readl((void *)(base + VIRTIO_MMIO_DEVICE_ID)); if (tmp != VIRTIO_ID_CONSOLE) { return; } tmp = arm_readl((void *)(base + VIRTIO_MMIO_HOST_FEATURES)); if (!(tmp & (1 << VIRTIO_CONSOLE_F_EMERG_WRITE))) { return; } arm_writel(ch, &p->emerg_wr); }
void arm_timer_disable(void) { u32 ctrl; ctrl = arm_readl((void *)(VERSATILE_TIMER0_1_BASE + TIMER_CTRL)); ctrl &= ~TIMER_CTRL_ENABLE; arm_writel(ctrl, (void *)(VERSATILE_TIMER0_1_BASE + TIMER_CTRL)); }
void arm_timer_disable(void) { u32 ctrl; ctrl = arm_readl((void *)(V2M_TIMER0 + TIMER_CTRL)); ctrl &= ~TIMER_CTRL_ENABLE; arm_writel(ctrl, (void *)(V2M_TIMER0 + TIMER_CTRL)); }
char virtio_console_getch(physical_addr_t base) { u32 tmp; struct virtio_console_config *p = (void *)base + VIRTIO_MMIO_CONFIG; tmp = arm_readl((void *)(base + VIRTIO_MMIO_DEVICE_ID)); if (tmp != VIRTIO_ID_CONSOLE) { return 0; } tmp = arm_readl((void *)(base + VIRTIO_MMIO_HOST_FEATURES)); if (!(tmp & (1 << VIRTIO_CONSOLE_F_EMERG_WRITE))) { return 0; } while (!((tmp = arm_readl(&p->emerg_wr)) & (1 << 31))) ; return (char)(tmp & 0xFFU); }
int arm_board_timer_init(u32 usecs) { u32 val, irq; u64 counter_mult, counter_shift, counter_mask; counter_mask = 0xFFFFFFFFULL; counter_shift = 20; counter_mult = ((u64)1000000) << counter_shift; counter_mult += (((u64)1000) >> 1); counter_mult = arm_udiv64(counter_mult, ((u64)1000)); irq = IRQ_V2M_TIMER0; val = arm_readl((void *)V2M_SYSCTL) | SCCTRL_TIMEREN0SEL_TIMCLK; arm_writel(val, (void *)V2M_SYSCTL); return sp804_init(usecs, V2M_TIMER0, irq, counter_mask, counter_mult, counter_shift); }
static inline u32 gic_read(virtual_addr_t addr) { return arm_readl((void *)(addr)); }
bool virtio_console_can_getch(physical_addr_t base) { struct virtio_console_config *p = (void *)base + VIRTIO_MMIO_CONFIG; return ((tmp = arm_readl(&p->emerg_wr)) & (1 << 31)) ? TRUE : FALSE; }