uart_base.c 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. * Copyright (C) 2009 Lemote Inc.
  3. * Author: Wu Zhangjin, wuzhangjin@gmail.com
  4. *
  5. * This program is free software; you can redistribute it and/or modify it
  6. * under the terms of the GNU General Public License as published by the
  7. * Free Software Foundation; either version 2 of the License, or (at your
  8. * option) any later version.
  9. */
  10. #include <linux/module.h>
  11. #include <asm/bootinfo.h>
  12. #include <loongson.h>
  13. /* ioremapped */
  14. unsigned long _loongson_uart_base;
  15. EXPORT_SYMBOL(_loongson_uart_base);
  16. /* raw */
  17. unsigned long loongson_uart_base;
  18. EXPORT_SYMBOL(loongson_uart_base);
  19. void prom_init_loongson_uart_base(void)
  20. {
  21. switch (mips_machtype) {
  22. case MACH_LEMOTE_FL2E:
  23. loongson_uart_base = LOONGSON_PCIIO_BASE + 0x3f8;
  24. break;
  25. case MACH_LEMOTE_FL2F:
  26. case MACH_LEMOTE_LL2F:
  27. loongson_uart_base = LOONGSON_PCIIO_BASE + 0x2f8;
  28. break;
  29. case MACH_LEMOTE_ML2F7:
  30. case MACH_LEMOTE_YL2F89:
  31. case MACH_DEXXON_GDIUM2F10:
  32. case MACH_LEMOTE_NAS:
  33. default:
  34. /* The CPU provided serial port (LPC) */
  35. loongson_uart_base = LOONGSON_LIO1_BASE + 0x3f8;
  36. break;
  37. case MACH_LEMOTE_A1004:
  38. case MACH_LEMOTE_A1101:
  39. case MACH_LEMOTE_A1201:
  40. case MACH_LEMOTE_A1205:
  41. /* The CPU provided serial port (CPU) */
  42. loongson_uart_base = LOONGSON_REG_BASE + 0x1e0;
  43. break;
  44. }
  45. _loongson_uart_base =
  46. (unsigned long)ioremap_nocache(loongson_uart_base, 8);
  47. }