void imx_init(u32 base, u32 baudrate, u32 input_clock)
{
	unsigned int temp;

	/* First, disable everything */
	arm_writew(0x0, (void*)(base + UCR1));
	arm_writew(0x0, (void*)(base + UCR2));

	/*
	 * Set baud rate
	 *
	 * (UBMR + 1) / (UBIR + 1) = input_clock / (16 * BAUD_RATE)
	 * Set UBIR = 0xF:
	 * UBMR + 1 = input_clock / BAUD_RATE
	 */
	temp = arm_udiv32(input_clock, baudrate);
	arm_writew(0xF, (void*)(base + UBIR));
	arm_writew(temp - 1, (void*)(base + UBMR));

	/* Set the UART to be 8 bits, 1 stop bit,
	 * no parity, fifo enabled */
	arm_writel(UCR2_WS | UCR2_TXEN | UCR2_RXEN, (void*)(base + UCR2));

	/* Finally, enable the UART */
	arm_writew(UCR1_UARTEN, (void*)(base + UCR1));
}
Exemple #2
0
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));
}
Exemple #3
0
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));
}
Exemple #4
0
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));
}
Exemple #5
0
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);
}
Exemple #7
0
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);
}
Exemple #8
0
void arm_timer_clearirq(void)
{
	arm_writel(1, (void *)(REALVIEW_PBA8_TIMER0_1_BASE + TIMER_INTCLR));
}
Exemple #9
0
void arm_timer_change_period(u32 usec)
{
        arm_writel(usec, (void *)(REALVIEW_PBA8_TIMER0_1_BASE + TIMER_LOAD));
}
Exemple #10
0
void arm_board_init(void)
{
	/* Unlock Lockable reigsters */
	arm_writel(VERSATILE_SYS_LOCKVAL,
		   (void *)(VERSATILE_SYS_BASE + VERSATILE_SYS_LOCK_OFFSET));
}
Exemple #11
0
void arm_board_reset(void)
{
	arm_writel(0x101,
		   (void *)(VERSATILE_SYS_BASE + VERSATILE_SYS_RESETCTL_OFFSET));
}
Exemple #12
0
void arm_board_reset(void)
{
	arm_writel(~0x0, (void *)(V2M_SYS_FLAGSCLR));
	arm_writel(0x0, (void *)(V2M_SYS_FLAGSSET));
	arm_writel(0xc0900000, (void *)(V2M_SYS_CFGCTRL));
}
Exemple #13
0
void arm_timer_clearirq(void)
{
	arm_writel(1, (void *)(VERSATILE_TIMER0_1_BASE + TIMER_INTCLR));
}
Exemple #14
0
void arm_timer_change_period(u32 usec)
{
        arm_writel(usec, (void *)(VERSATILE_TIMER0_1_BASE + TIMER_LOAD));
}
Exemple #15
0
void arm_timer_clearirq(void)
{
	arm_writel(1, (void *)(V2M_TIMER0 + TIMER_INTCLR));
}
Exemple #16
0
void arm_timer_change_period(u32 usec)
{
        arm_writel(usec, (void *)(V2M_TIMER0 + TIMER_LOAD));
}
Exemple #17
0
void sp804_change_period(u32 usec)
{
        arm_writel(usec, (void *)(sp804_base + TIMER_LOAD));
}
Exemple #18
0
static inline void gic_write(u32 val, virtual_addr_t addr)
{
	arm_writel(val, (void *)(addr));
}