diff options
Diffstat (limited to 'drivers/serial/cpm_uart/cpm_uart.h')
-rw-r--r-- | drivers/serial/cpm_uart/cpm_uart.h | 58 |
1 files changed, 51 insertions, 7 deletions
diff --git a/drivers/serial/cpm_uart/cpm_uart.h b/drivers/serial/cpm_uart/cpm_uart.h index 73c8a088c160..3b35cb779539 100644 --- a/drivers/serial/cpm_uart/cpm_uart.h +++ b/drivers/serial/cpm_uart/cpm_uart.h | |||
@@ -5,11 +5,20 @@ | |||
5 | * | 5 | * |
6 | * Copyright (C) 2004 Freescale Semiconductor, Inc. | 6 | * Copyright (C) 2004 Freescale Semiconductor, Inc. |
7 | * | 7 | * |
8 | * 2006 (c) MontaVista Software, Inc. | ||
9 | * Vitaly Bordug <vbordug@ru.mvista.com> | ||
10 | * | ||
11 | * This file is licensed under the terms of the GNU General Public License | ||
12 | * version 2. This program is licensed "as is" without any warranty of any | ||
13 | * kind, whether express or implied. | ||
14 | * | ||
8 | */ | 15 | */ |
9 | #ifndef CPM_UART_H | 16 | #ifndef CPM_UART_H |
10 | #define CPM_UART_H | 17 | #define CPM_UART_H |
11 | 18 | ||
12 | #include <linux/config.h> | 19 | #include <linux/config.h> |
20 | #include <linux/platform_device.h> | ||
21 | #include <linux/fs_uart_pd.h> | ||
13 | 22 | ||
14 | #if defined(CONFIG_CPM2) | 23 | #if defined(CONFIG_CPM2) |
15 | #include "cpm_uart_cpm2.h" | 24 | #include "cpm_uart_cpm2.h" |
@@ -26,14 +35,14 @@ | |||
26 | #define FLAG_SMC 0x00000002 | 35 | #define FLAG_SMC 0x00000002 |
27 | #define FLAG_CONSOLE 0x00000001 | 36 | #define FLAG_CONSOLE 0x00000001 |
28 | 37 | ||
29 | #define UART_SMC1 0 | 38 | #define UART_SMC1 fsid_smc1_uart |
30 | #define UART_SMC2 1 | 39 | #define UART_SMC2 fsid_smc2_uart |
31 | #define UART_SCC1 2 | 40 | #define UART_SCC1 fsid_scc1_uart |
32 | #define UART_SCC2 3 | 41 | #define UART_SCC2 fsid_scc2_uart |
33 | #define UART_SCC3 4 | 42 | #define UART_SCC3 fsid_scc3_uart |
34 | #define UART_SCC4 5 | 43 | #define UART_SCC4 fsid_scc4_uart |
35 | 44 | ||
36 | #define UART_NR 6 | 45 | #define UART_NR fs_uart_nr |
37 | 46 | ||
38 | #define RX_NUM_FIFO 4 | 47 | #define RX_NUM_FIFO 4 |
39 | #define RX_BUF_SIZE 32 | 48 | #define RX_BUF_SIZE 32 |
@@ -64,6 +73,7 @@ struct uart_cpm_port { | |||
64 | uint dp_addr; | 73 | uint dp_addr; |
65 | void *mem_addr; | 74 | void *mem_addr; |
66 | dma_addr_t dma_addr; | 75 | dma_addr_t dma_addr; |
76 | u32 mem_size; | ||
67 | /* helpers */ | 77 | /* helpers */ |
68 | int baud; | 78 | int baud; |
69 | int bits; | 79 | int bits; |
@@ -90,4 +100,38 @@ void scc2_lineif(struct uart_cpm_port *pinfo); | |||
90 | void scc3_lineif(struct uart_cpm_port *pinfo); | 100 | void scc3_lineif(struct uart_cpm_port *pinfo); |
91 | void scc4_lineif(struct uart_cpm_port *pinfo); | 101 | void scc4_lineif(struct uart_cpm_port *pinfo); |
92 | 102 | ||
103 | /* | ||
104 | virtual to phys transtalion | ||
105 | */ | ||
106 | static inline unsigned long cpu2cpm_addr(void* addr, struct uart_cpm_port *pinfo) | ||
107 | { | ||
108 | int offset; | ||
109 | u32 val = (u32)addr; | ||
110 | /* sane check */ | ||
111 | if (likely((val >= (u32)pinfo->mem_addr)) && | ||
112 | (val<((u32)pinfo->mem_addr + pinfo->mem_size))) { | ||
113 | offset = val - (u32)pinfo->mem_addr; | ||
114 | return pinfo->dma_addr+offset; | ||
115 | } | ||
116 | /* something nasty happened */ | ||
117 | BUG(); | ||
118 | return 0; | ||
119 | } | ||
120 | |||
121 | static inline void *cpm2cpu_addr(unsigned long addr, struct uart_cpm_port *pinfo) | ||
122 | { | ||
123 | int offset; | ||
124 | u32 val = addr; | ||
125 | /* sane check */ | ||
126 | if (likely((val >= pinfo->dma_addr) && | ||
127 | (val<(pinfo->dma_addr + pinfo->mem_size)))) { | ||
128 | offset = val - (u32)pinfo->dma_addr; | ||
129 | return (void*)(pinfo->mem_addr+offset); | ||
130 | } | ||
131 | /* something nasty happened */ | ||
132 | BUG(); | ||
133 | return 0; | ||
134 | } | ||
135 | |||
136 | |||
93 | #endif /* CPM_UART_H */ | 137 | #endif /* CPM_UART_H */ |