diff options
| author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2008-07-30 00:36:03 -0400 |
|---|---|---|
| committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2008-07-30 00:36:03 -0400 |
| commit | 3a1a8acf690873f0ee2d8a648c2ec185f4294bd2 (patch) | |
| tree | 4cd633c0836f7bb30c3ce28d9b85ac0e5c21a7e2 /include/asm-powerpc | |
| parent | 6e86841d05f371b5b9b86ce76c02aaee83352298 (diff) | |
| parent | cf0d19fb3032ebf2cf8e5217da00f51dc025aa8e (diff) | |
Merge commit 'kumar/kumar-next'
Diffstat (limited to 'include/asm-powerpc')
| -rw-r--r-- | include/asm-powerpc/cpm.h | 3 | ||||
| -rw-r--r-- | include/asm-powerpc/cpm2.h | 46 |
2 files changed, 36 insertions, 13 deletions
diff --git a/include/asm-powerpc/cpm.h b/include/asm-powerpc/cpm.h index 63a55337c2de..24d79e3abd8e 100644 --- a/include/asm-powerpc/cpm.h +++ b/include/asm-powerpc/cpm.h | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | 3 | ||
| 4 | #include <linux/compiler.h> | 4 | #include <linux/compiler.h> |
| 5 | #include <linux/types.h> | 5 | #include <linux/types.h> |
| 6 | #include <linux/of.h> | ||
| 6 | 7 | ||
| 7 | /* Opcodes common to CPM1 and CPM2 | 8 | /* Opcodes common to CPM1 and CPM2 |
| 8 | */ | 9 | */ |
| @@ -100,4 +101,6 @@ unsigned long cpm_muram_offset(void __iomem *addr); | |||
| 100 | dma_addr_t cpm_muram_dma(void __iomem *addr); | 101 | dma_addr_t cpm_muram_dma(void __iomem *addr); |
| 101 | int cpm_command(u32 command, u8 opcode); | 102 | int cpm_command(u32 command, u8 opcode); |
| 102 | 103 | ||
| 104 | int cpm2_gpiochip_add32(struct device_node *np); | ||
| 105 | |||
| 103 | #endif | 106 | #endif |
diff --git a/include/asm-powerpc/cpm2.h b/include/asm-powerpc/cpm2.h index 2c7fd9cee291..2a6fa0183ac9 100644 --- a/include/asm-powerpc/cpm2.h +++ b/include/asm-powerpc/cpm2.h | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | 12 | ||
| 13 | #include <asm/immap_cpm2.h> | 13 | #include <asm/immap_cpm2.h> |
| 14 | #include <asm/cpm.h> | 14 | #include <asm/cpm.h> |
| 15 | #include <sysdev/fsl_soc.h> | ||
| 15 | 16 | ||
| 16 | #ifdef CONFIG_PPC_85xx | 17 | #ifdef CONFIG_PPC_85xx |
| 17 | #define CPM_MAP_ADDR (get_immrbase() + 0x80000) | 18 | #define CPM_MAP_ADDR (get_immrbase() + 0x80000) |
| @@ -93,10 +94,40 @@ extern cpm_cpm2_t __iomem *cpmp; /* Pointer to comm processor */ | |||
| 93 | #define cpm_dpfree cpm_muram_free | 94 | #define cpm_dpfree cpm_muram_free |
| 94 | #define cpm_dpram_addr cpm_muram_addr | 95 | #define cpm_dpram_addr cpm_muram_addr |
| 95 | 96 | ||
| 96 | extern void cpm_setbrg(uint brg, uint rate); | ||
| 97 | extern void cpm2_fastbrg(uint brg, uint rate, int div16); | ||
| 98 | extern void cpm2_reset(void); | 97 | extern void cpm2_reset(void); |
| 99 | 98 | ||
| 99 | /* Baud rate generators. | ||
| 100 | */ | ||
| 101 | #define CPM_BRG_RST ((uint)0x00020000) | ||
| 102 | #define CPM_BRG_EN ((uint)0x00010000) | ||
| 103 | #define CPM_BRG_EXTC_INT ((uint)0x00000000) | ||
| 104 | #define CPM_BRG_EXTC_CLK3_9 ((uint)0x00004000) | ||
| 105 | #define CPM_BRG_EXTC_CLK5_15 ((uint)0x00008000) | ||
| 106 | #define CPM_BRG_ATB ((uint)0x00002000) | ||
| 107 | #define CPM_BRG_CD_MASK ((uint)0x00001ffe) | ||
| 108 | #define CPM_BRG_DIV16 ((uint)0x00000001) | ||
| 109 | |||
| 110 | #define CPM2_BRG_INT_CLK (get_brgfreq()) | ||
| 111 | #define CPM2_BRG_UART_CLK (CPM2_BRG_INT_CLK/16) | ||
| 112 | |||
| 113 | extern void __cpm2_setbrg(uint brg, uint rate, uint clk, int div16, int src); | ||
| 114 | |||
| 115 | /* This function is used by UARTS, or anything else that uses a 16x | ||
| 116 | * oversampled clock. | ||
| 117 | */ | ||
| 118 | static inline void cpm_setbrg(uint brg, uint rate) | ||
| 119 | { | ||
| 120 | __cpm2_setbrg(brg, rate, CPM2_BRG_UART_CLK, 0, CPM_BRG_EXTC_INT); | ||
| 121 | } | ||
| 122 | |||
| 123 | /* This function is used to set high speed synchronous baud rate | ||
| 124 | * clocks. | ||
| 125 | */ | ||
| 126 | static inline void cpm2_fastbrg(uint brg, uint rate, int div16) | ||
| 127 | { | ||
| 128 | __cpm2_setbrg(brg, rate, CPM2_BRG_INT_CLK, div16, CPM_BRG_EXTC_INT); | ||
| 129 | } | ||
| 130 | |||
| 100 | /* Function code bits, usually generic to devices. | 131 | /* Function code bits, usually generic to devices. |
| 101 | */ | 132 | */ |
| 102 | #define CPMFCR_GBL ((u_char)0x20) /* Set memory snooping */ | 133 | #define CPMFCR_GBL ((u_char)0x20) /* Set memory snooping */ |
| @@ -195,17 +226,6 @@ typedef struct smc_uart { | |||
| 195 | #define SMCM_TX ((unsigned char)0x02) | 226 | #define SMCM_TX ((unsigned char)0x02) |
| 196 | #define SMCM_RX ((unsigned char)0x01) | 227 | #define SMCM_RX ((unsigned char)0x01) |
| 197 | 228 | ||
| 198 | /* Baud rate generators. | ||
| 199 | */ | ||
| 200 | #define CPM_BRG_RST ((uint)0x00020000) | ||
| 201 | #define CPM_BRG_EN ((uint)0x00010000) | ||
| 202 | #define CPM_BRG_EXTC_INT ((uint)0x00000000) | ||
| 203 | #define CPM_BRG_EXTC_CLK3_9 ((uint)0x00004000) | ||
| 204 | #define CPM_BRG_EXTC_CLK5_15 ((uint)0x00008000) | ||
| 205 | #define CPM_BRG_ATB ((uint)0x00002000) | ||
| 206 | #define CPM_BRG_CD_MASK ((uint)0x00001ffe) | ||
| 207 | #define CPM_BRG_DIV16 ((uint)0x00000001) | ||
| 208 | |||
| 209 | /* SCCs. | 229 | /* SCCs. |
| 210 | */ | 230 | */ |
| 211 | #define SCC_GSMRH_IRP ((uint)0x00040000) | 231 | #define SCC_GSMRH_IRP ((uint)0x00040000) |
