fs_uart_pd.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /*
  2. * Platform information definitions for the CPM Uart driver.
  3. *
  4. * 2006 (c) MontaVista Software, Inc.
  5. * Vitaly Bordug <vbordug@ru.mvista.com>
  6. *
  7. * This file is licensed under the terms of the GNU General Public License
  8. * version 2. This program is licensed "as is" without any warranty of any
  9. * kind, whether express or implied.
  10. */
  11. #ifndef FS_UART_PD_H
  12. #define FS_UART_PD_H
  13. #include <linux/version.h>
  14. #include <asm/types.h>
  15. enum fs_uart_id {
  16. fsid_smc1_uart,
  17. fsid_smc2_uart,
  18. fsid_scc1_uart,
  19. fsid_scc2_uart,
  20. fsid_scc3_uart,
  21. fsid_scc4_uart,
  22. fs_uart_nr,
  23. };
  24. static inline int fs_uart_id_scc2fsid(int id)
  25. {
  26. return fsid_scc1_uart + id - 1;
  27. }
  28. static inline int fs_uart_id_fsid2scc(int id)
  29. {
  30. return id - fsid_scc1_uart + 1;
  31. }
  32. static inline int fs_uart_id_smc2fsid(int id)
  33. {
  34. return fsid_smc1_uart + id - 1;
  35. }
  36. static inline int fs_uart_id_fsid2smc(int id)
  37. {
  38. return id - fsid_smc1_uart + 1;
  39. }
  40. struct fs_uart_platform_info {
  41. void(*init_ioports)(struct fs_uart_platform_info *);
  42. /* device specific information */
  43. int fs_no; /* controller index */
  44. char fs_type[4]; /* controller type */
  45. u32 uart_clk;
  46. u8 tx_num_fifo;
  47. u8 tx_buf_size;
  48. u8 rx_num_fifo;
  49. u8 rx_buf_size;
  50. u8 brg;
  51. u8 clk_rx;
  52. u8 clk_tx;
  53. };
  54. static inline int fs_uart_get_id(struct fs_uart_platform_info *fpi)
  55. {
  56. if(strstr(fpi->fs_type, "SMC"))
  57. return fs_uart_id_smc2fsid(fpi->fs_no);
  58. if(strstr(fpi->fs_type, "SCC"))
  59. return fs_uart_id_scc2fsid(fpi->fs_no);
  60. return fpi->fs_no;
  61. }
  62. #endif