Advertisement
Guest User

Untitled

a guest
Sep 20th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. #include <asm/io.h>
  2. #include <bcm63xx_regs.h>
  3.  
  4. static unsigned int bcm_uart0_reg(void)
  5. {
  6. unsigned int tmp = readl(BCM_6338_PERF_BASE);
  7. unsigned int cpu_id = (tmp & REV_CHIPID_MASK) >> REV_CHIPID_SHIFT;
  8.  
  9. switch (cpu_id) {
  10. case BCM6338_CPU_ID:
  11. case BCM6345_CPU_ID:
  12. case BCM6348_CPU_ID:
  13. return BCM_6338_UART0_BASE;
  14. case BCM6358_CPU_ID:
  15. return BCM_6358_UART0_BASE;
  16. default:
  17. return 0;
  18. }
  19. }
  20.  
  21. static inline unsigned int bcm_uart0_readl(unsigned int reg)
  22. {
  23. return readl(bcm_uart0_reg() + reg);
  24. }
  25.  
  26. static inline void bcm_uart0_writel(unsigned int val, unsigned int reg)
  27. {
  28. writel(val, bcm_uart0_reg() + reg);
  29. }
  30.  
  31. static void __init wait_xfered(void)
  32. {
  33. unsigned int val;
  34.  
  35. /* wait for any previous char to be transmitted */
  36. do {
  37. val = bcm_uart0_readl(UART_IR_REG);
  38. if (val & UART_IR_STAT(UART_IR_TXEMPTY))
  39. break;
  40. } while (1);
  41. }
  42.  
  43. void __init putc(char c)
  44. {
  45. wait_xfered();
  46. bcm_uart0_writel(c, UART_FIFO_REG);
  47. wait_xfered();
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement