uart.c 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #include <linux/kernel.h>
  2. #include <linux/init.h>
  3. #include <linux/io.h>
  4. #include <plat/io.h>
  5. #include "common-data.h"
  6. #include <linux/types.h>
  7. #include <linux/platform_device.h>
  8. #include <linux/string.h>
  9. #include <mach/irqs.h>
  10. #include <linux/io.h>
  11. #include <plat/io.h>
  12. /**
  13. * Meson 3 uart resource description
  14. */
  15. #define UART_BASEADDRAO (P_AO_UART_WFIFO) //AO UART
  16. #define UART_BASEADDR0 (CBUS_REG_ADDR(UART0_WFIFO))
  17. #define UART_BASEADDR1 (CBUS_REG_ADDR(UART1_WFIFO))
  18. #define UART_BASEADDR2 (CBUS_REG_ADDR(UART2_WFIFO))
  19. #define UART_LEVEL_AO 64
  20. #define UART_LEVEL_0 128
  21. #define UART_LEVEL_1 64
  22. #define UART_LEVEL_2 64
  23. static const char uart_clk_src[]="clk81";
  24. #define UART_VAR_RESOURCE(id) \
  25. { \
  26. [0]={ \
  27. .start=UART_BASEADDR##id, \
  28. .end=(UART_BASEADDR##id)+20, \
  29. .flags=IORESOURCE_MEM \
  30. }, \
  31. [1]={ \
  32. .start=INT_UART_##id, \
  33. .flags=IORESOURCE_IRQ \
  34. }, \
  35. [2]={ \
  36. .start=UART_LEVEL_##id, \
  37. .end=1, \
  38. .name="feature" \
  39. } , \
  40. [3]={ \
  41. .start=(resource_size_t)&uart_clk_src[0], \
  42. .name="clksrc" \
  43. } \
  44. }
  45. static pinmux_item_t uart_pins[]={
  46. {
  47. .reg=PINMUX_REG(AO),
  48. .setmask=3<<11
  49. },
  50. PINMUX_END_ITEM
  51. };
  52. static pinmux_set_t aml_uart_ao={
  53. .chip_select=NULL,
  54. .pinmux=&uart_pins[0]
  55. };
  56. mesonplat_cpu_resource_early_initcall_begin(earlycon,meson_uart,meson_uart);
  57. module_object(AO,UART_VAR_RESOURCE(AO),&aml_uart_ao);
  58. mesonplat_cpu_resource_early_initcall_end(earlycon,meson_uart,meson_uart);
  59. mesonplat_cpu_resource_pure_initcall_begin(meson_uart,meson_uart);
  60. module_object(0,UART_VAR_RESOURCE(0),NULL);
  61. module_object(1,UART_VAR_RESOURCE(1),NULL);
  62. module_object(2,UART_VAR_RESOURCE(2),NULL);
  63. mesonplat_cpu_resource_pure_initcall_end(meson_uart,meson_uart);