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