14 #include <linux/module.h>
20 #include <linux/slab.h>
27 #include <mach/irqs.h>
31 #define DPS_RSTCT2_PER_EN (1 << 0)
32 #define DSP_RSTCT2_WD_PER_EN (1 << 1)
35 static struct clk *api_clk;
36 static struct clk *dsp_clk;
39 static void omap1_mcbsp_request(
unsigned int id)
45 if (
id == 0 ||
id == 2) {
49 if (!IS_ERR(api_clk) && !IS_ERR(dsp_clk)) {
64 static void omap1_mcbsp_free(
unsigned int id)
66 if (
id == 0 ||
id == 2) {
68 if (!IS_ERR(api_clk)) {
72 if (!IS_ERR(dsp_clk)) {
81 .request = omap1_mcbsp_request,
82 .free = omap1_mcbsp_free,
85 #define OMAP7XX_MCBSP1_BASE 0xfffb1000
86 #define OMAP7XX_MCBSP2_BASE 0xfffb1800
88 #define OMAP1510_MCBSP1_BASE 0xe1011800
89 #define OMAP1510_MCBSP2_BASE 0xfffb1000
90 #define OMAP1510_MCBSP3_BASE 0xe1017000
92 #define OMAP1610_MCBSP1_BASE 0xe1011800
93 #define OMAP1610_MCBSP2_BASE 0xfffb1000
94 #define OMAP1610_MCBSP3_BASE 0xe1017000
96 #if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)
97 struct resource omap7xx_mcbsp_res[][6] = {
154 #define omap7xx_mcbsp_res_0 omap7xx_mcbsp_res[0]
158 .ops = &omap1_mcbsp_ops,
161 .ops = &omap1_mcbsp_ops,
164 #define OMAP7XX_MCBSP_RES_SZ ARRAY_SIZE(omap7xx_mcbsp_res[1])
165 #define OMAP7XX_MCBSP_COUNT ARRAY_SIZE(omap7xx_mcbsp_res)
167 #define omap7xx_mcbsp_res_0 NULL
168 #define omap7xx_mcbsp_pdata NULL
169 #define OMAP7XX_MCBSP_RES_SZ 0
170 #define OMAP7XX_MCBSP_COUNT 0
173 #ifdef CONFIG_ARCH_OMAP15XX
174 struct resource omap15xx_mcbsp_res[][6] = {
258 #define omap15xx_mcbsp_res_0 omap15xx_mcbsp_res[0]
262 .ops = &omap1_mcbsp_ops,
265 .ops = &omap1_mcbsp_ops,
268 .ops = &omap1_mcbsp_ops,
271 #define OMAP15XX_MCBSP_RES_SZ ARRAY_SIZE(omap15xx_mcbsp_res[1])
272 #define OMAP15XX_MCBSP_COUNT ARRAY_SIZE(omap15xx_mcbsp_res)
274 #define omap15xx_mcbsp_res_0 NULL
275 #define omap15xx_mcbsp_pdata NULL
276 #define OMAP15XX_MCBSP_RES_SZ 0
277 #define OMAP15XX_MCBSP_COUNT 0
280 #ifdef CONFIG_ARCH_OMAP16XX
281 struct resource omap16xx_mcbsp_res[][6] = {
365 #define omap16xx_mcbsp_res_0 omap16xx_mcbsp_res[0]
369 .ops = &omap1_mcbsp_ops,
372 .ops = &omap1_mcbsp_ops,
375 .ops = &omap1_mcbsp_ops,
378 #define OMAP16XX_MCBSP_RES_SZ ARRAY_SIZE(omap16xx_mcbsp_res[1])
379 #define OMAP16XX_MCBSP_COUNT ARRAY_SIZE(omap16xx_mcbsp_res)
381 #define omap16xx_mcbsp_res_0 NULL
382 #define omap16xx_mcbsp_pdata NULL
383 #define OMAP16XX_MCBSP_RES_SZ 0
384 #define OMAP16XX_MCBSP_COUNT 0
394 if (!omap_mcbsp_devices) {
399 for (i = 0; i <
size; i++) {
410 new_mcbsp->
dev.platform_data = &config[
i];
416 omap_mcbsp_devices[
i] = new_mcbsp;
420 static int __init omap1_mcbsp_init(
void)
434 omap15xx_mcbsp_pdata,
440 omap16xx_mcbsp_pdata,