Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  * Platform information definitions for the CPM Uart driver.
0003  *
0004  * 2006 (c) MontaVista Software, Inc.
0005  * Vitaly Bordug <vbordug@ru.mvista.com>
0006  *
0007  * This file is licensed under the terms of the GNU General Public License
0008  * version 2. This program is licensed "as is" without any warranty of any
0009  * kind, whether express or implied.
0010  */
0011 
0012 #ifndef FS_UART_PD_H
0013 #define FS_UART_PD_H
0014 
0015 #include <asm/types.h>
0016 
0017 enum fs_uart_id {
0018     fsid_smc1_uart,
0019     fsid_smc2_uart,
0020     fsid_scc1_uart,
0021     fsid_scc2_uart,
0022     fsid_scc3_uart,
0023     fsid_scc4_uart,
0024     fs_uart_nr,
0025 };
0026 
0027 static inline int fs_uart_id_scc2fsid(int id)
0028 {
0029     return fsid_scc1_uart + id - 1;
0030 }
0031 
0032 static inline int fs_uart_id_fsid2scc(int id)
0033 {
0034     return id - fsid_scc1_uart + 1;
0035 }
0036 
0037 static inline int fs_uart_id_smc2fsid(int id)
0038 {
0039     return fsid_smc1_uart + id - 1;
0040 }
0041 
0042 static inline int fs_uart_id_fsid2smc(int id)
0043 {
0044     return id - fsid_smc1_uart + 1;
0045 }
0046 
0047 struct fs_uart_platform_info {
0048         void(*init_ioports)(struct fs_uart_platform_info *);
0049     /* device specific information */
0050     int fs_no;      /* controller index */
0051     char fs_type[4];        /* controller type  */
0052     u32 uart_clk;
0053     u8 tx_num_fifo;
0054     u8 tx_buf_size;
0055     u8 rx_num_fifo;
0056     u8 rx_buf_size;
0057     u8 brg;
0058     u8 clk_rx;
0059     u8 clk_tx;
0060 };
0061 
0062 static inline int fs_uart_get_id(struct fs_uart_platform_info *fpi)
0063 {
0064         if(strstr(fpi->fs_type, "SMC"))
0065                 return fs_uart_id_smc2fsid(fpi->fs_no);
0066         if(strstr(fpi->fs_type, "SCC"))
0067                 return fs_uart_id_scc2fsid(fpi->fs_no);
0068         return fpi->fs_no;
0069 }
0070 
0071 #endif