Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <asm/io.h>
- #include <bcm63xx_regs.h>
- static unsigned int bcm_uart0_reg(void)
- {
- unsigned int tmp = readl(BCM_6338_PERF_BASE);
- unsigned int cpu_id = (tmp & REV_CHIPID_MASK) >> REV_CHIPID_SHIFT;
- switch (cpu_id) {
- case BCM6338_CPU_ID:
- case BCM6345_CPU_ID:
- case BCM6348_CPU_ID:
- return BCM_6338_UART0_BASE;
- case BCM6358_CPU_ID:
- return BCM_6358_UART0_BASE;
- default:
- return 0;
- }
- }
- static inline unsigned int bcm_uart0_readl(unsigned int reg)
- {
- return readl(bcm_uart0_reg() + reg);
- }
- static inline void bcm_uart0_writel(unsigned int val, unsigned int reg)
- {
- writel(val, bcm_uart0_reg() + reg);
- }
- static void __init wait_xfered(void)
- {
- unsigned int val;
- /* wait for any previous char to be transmitted */
- do {
- val = bcm_uart0_readl(UART_IR_REG);
- if (val & UART_IR_STAT(UART_IR_TXEMPTY))
- break;
- } while (1);
- }
- void __init putc(char c)
- {
- wait_xfered();
- bcm_uart0_writel(c, UART_FIFO_REG);
- wait_xfered();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement