include/linux/fs_uart_pd.h
changeset 0 aa628870c1d3
equal deleted inserted replaced
-1:000000000000 0:aa628870c1d3
       
     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 
       
    12 #ifndef FS_UART_PD_H
       
    13 #define FS_UART_PD_H
       
    14 
       
    15 #include <asm/types.h>
       
    16 
       
    17 enum fs_uart_id {
       
    18 	fsid_smc1_uart,
       
    19 	fsid_smc2_uart,
       
    20 	fsid_scc1_uart,
       
    21 	fsid_scc2_uart,
       
    22 	fsid_scc3_uart,
       
    23 	fsid_scc4_uart,
       
    24 	fs_uart_nr,
       
    25 };
       
    26 
       
    27 static inline int fs_uart_id_scc2fsid(int id)
       
    28 {
       
    29     return fsid_scc1_uart + id - 1;
       
    30 }
       
    31 
       
    32 static inline int fs_uart_id_fsid2scc(int id)
       
    33 {
       
    34     return id - fsid_scc1_uart + 1;
       
    35 }
       
    36 
       
    37 static inline int fs_uart_id_smc2fsid(int id)
       
    38 {
       
    39     return fsid_smc1_uart + id - 1;
       
    40 }
       
    41 
       
    42 static inline int fs_uart_id_fsid2smc(int id)
       
    43 {
       
    44     return id - fsid_smc1_uart + 1;
       
    45 }
       
    46 
       
    47 struct fs_uart_platform_info {
       
    48         void(*init_ioports)(struct fs_uart_platform_info *);
       
    49 	/* device specific information */
       
    50 	int fs_no;		/* controller index */
       
    51 	char fs_type[4];        /* controller type  */
       
    52 	u32 uart_clk;
       
    53 	u8 tx_num_fifo;
       
    54 	u8 tx_buf_size;
       
    55 	u8 rx_num_fifo;
       
    56 	u8 rx_buf_size;
       
    57 	u8 brg;
       
    58 	u8 clk_rx;
       
    59 	u8 clk_tx;
       
    60 };
       
    61 
       
    62 static inline int fs_uart_get_id(struct fs_uart_platform_info *fpi)
       
    63 {
       
    64         if(strstr(fpi->fs_type, "SMC"))
       
    65                 return fs_uart_id_smc2fsid(fpi->fs_no);
       
    66         if(strstr(fpi->fs_type, "SCC"))
       
    67                 return fs_uart_id_scc2fsid(fpi->fs_no);
       
    68         return fpi->fs_no;
       
    69 }
       
    70 
       
    71 #endif