18c2ecf20Sopenharmony_ci/* 28c2ecf20Sopenharmony_ci * Platform information definitions for the CPM Uart driver. 38c2ecf20Sopenharmony_ci * 48c2ecf20Sopenharmony_ci * 2006 (c) MontaVista Software, Inc. 58c2ecf20Sopenharmony_ci * Vitaly Bordug <vbordug@ru.mvista.com> 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * This file is licensed under the terms of the GNU General Public License 88c2ecf20Sopenharmony_ci * version 2. This program is licensed "as is" without any warranty of any 98c2ecf20Sopenharmony_ci * kind, whether express or implied. 108c2ecf20Sopenharmony_ci */ 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci#ifndef FS_UART_PD_H 138c2ecf20Sopenharmony_ci#define FS_UART_PD_H 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci#include <asm/types.h> 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_cienum fs_uart_id { 188c2ecf20Sopenharmony_ci fsid_smc1_uart, 198c2ecf20Sopenharmony_ci fsid_smc2_uart, 208c2ecf20Sopenharmony_ci fsid_scc1_uart, 218c2ecf20Sopenharmony_ci fsid_scc2_uart, 228c2ecf20Sopenharmony_ci fsid_scc3_uart, 238c2ecf20Sopenharmony_ci fsid_scc4_uart, 248c2ecf20Sopenharmony_ci fs_uart_nr, 258c2ecf20Sopenharmony_ci}; 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_cistatic inline int fs_uart_id_scc2fsid(int id) 288c2ecf20Sopenharmony_ci{ 298c2ecf20Sopenharmony_ci return fsid_scc1_uart + id - 1; 308c2ecf20Sopenharmony_ci} 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_cistatic inline int fs_uart_id_fsid2scc(int id) 338c2ecf20Sopenharmony_ci{ 348c2ecf20Sopenharmony_ci return id - fsid_scc1_uart + 1; 358c2ecf20Sopenharmony_ci} 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_cistatic inline int fs_uart_id_smc2fsid(int id) 388c2ecf20Sopenharmony_ci{ 398c2ecf20Sopenharmony_ci return fsid_smc1_uart + id - 1; 408c2ecf20Sopenharmony_ci} 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_cistatic inline int fs_uart_id_fsid2smc(int id) 438c2ecf20Sopenharmony_ci{ 448c2ecf20Sopenharmony_ci return id - fsid_smc1_uart + 1; 458c2ecf20Sopenharmony_ci} 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_cistruct fs_uart_platform_info { 488c2ecf20Sopenharmony_ci void(*init_ioports)(struct fs_uart_platform_info *); 498c2ecf20Sopenharmony_ci /* device specific information */ 508c2ecf20Sopenharmony_ci int fs_no; /* controller index */ 518c2ecf20Sopenharmony_ci char fs_type[4]; /* controller type */ 528c2ecf20Sopenharmony_ci u32 uart_clk; 538c2ecf20Sopenharmony_ci u8 tx_num_fifo; 548c2ecf20Sopenharmony_ci u8 tx_buf_size; 558c2ecf20Sopenharmony_ci u8 rx_num_fifo; 568c2ecf20Sopenharmony_ci u8 rx_buf_size; 578c2ecf20Sopenharmony_ci u8 brg; 588c2ecf20Sopenharmony_ci u8 clk_rx; 598c2ecf20Sopenharmony_ci u8 clk_tx; 608c2ecf20Sopenharmony_ci}; 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_cistatic inline int fs_uart_get_id(struct fs_uart_platform_info *fpi) 638c2ecf20Sopenharmony_ci{ 648c2ecf20Sopenharmony_ci if(strstr(fpi->fs_type, "SMC")) 658c2ecf20Sopenharmony_ci return fs_uart_id_smc2fsid(fpi->fs_no); 668c2ecf20Sopenharmony_ci if(strstr(fpi->fs_type, "SCC")) 678c2ecf20Sopenharmony_ci return fs_uart_id_scc2fsid(fpi->fs_no); 688c2ecf20Sopenharmony_ci return fpi->fs_no; 698c2ecf20Sopenharmony_ci} 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ci#endif 72