diff options
Diffstat (limited to 'sound/soc/omap/mcbsp.c')
-rw-r--r-- | sound/soc/omap/mcbsp.c | 284 |
1 files changed, 38 insertions, 246 deletions
diff --git a/sound/soc/omap/mcbsp.c b/sound/soc/omap/mcbsp.c index 20d46bf3626b..be92a28e19ed 100644 --- a/sound/soc/omap/mcbsp.c +++ b/sound/soc/omap/mcbsp.c @@ -30,12 +30,6 @@ #include "mcbsp.h" -struct omap_mcbsp **mcbsp_ptr; -int omap_mcbsp_count; - -#define omap_mcbsp_check_valid_id(id) (id < omap_mcbsp_count) -#define id_to_mcbsp_ptr(id) mcbsp_ptr[id]; - static void omap_mcbsp_write(struct omap_mcbsp *mcbsp, u16 reg, u32 val) { void __iomem *addr = mcbsp->io_base + reg * mcbsp->pdata->reg_step; @@ -84,10 +78,8 @@ static int omap_mcbsp_st_read(struct omap_mcbsp *mcbsp, u16 reg) #define MCBSP_ST_WRITE(mcbsp, reg, val) \ omap_mcbsp_st_write(mcbsp, OMAP_ST_REG_##reg, val) -static void omap_mcbsp_dump_reg(u8 id) +static void omap_mcbsp_dump_reg(struct omap_mcbsp *mcbsp) { - struct omap_mcbsp *mcbsp = id_to_mcbsp_ptr(id); - dev_dbg(mcbsp->dev, "**** McBSP%d regs ****\n", mcbsp->id); dev_dbg(mcbsp->dev, "DRR2: 0x%04x\n", MCBSP_READ(mcbsp, DRR2)); @@ -160,16 +152,9 @@ static irqreturn_t omap_mcbsp_rx_irq_handler(int irq, void *dev_id) * You either call this function or set the McBSP registers * by yourself before calling omap_mcbsp_start(). */ -void omap_mcbsp_config(unsigned int id, const struct omap_mcbsp_reg_cfg *config) +void omap_mcbsp_config(struct omap_mcbsp *mcbsp, + const struct omap_mcbsp_reg_cfg *config) { - struct omap_mcbsp *mcbsp; - - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); - return; - } - mcbsp = id_to_mcbsp_ptr(id); - dev_dbg(mcbsp->dev, "Configuring McBSP%d phys_base: 0x%08lx\n", mcbsp->id, mcbsp->phys_base); @@ -190,7 +175,6 @@ void omap_mcbsp_config(unsigned int id, const struct omap_mcbsp_reg_cfg *config) MCBSP_WRITE(mcbsp, RCCR, config->rccr); } } -EXPORT_SYMBOL(omap_mcbsp_config); /** * omap_mcbsp_dma_params - returns the dma channel number @@ -200,22 +184,13 @@ EXPORT_SYMBOL(omap_mcbsp_config); * Returns the dma channel number for the rx channel or tx channel * based on the value of @stream for the requested mcbsp given by @id */ -int omap_mcbsp_dma_ch_params(unsigned int id, unsigned int stream) +int omap_mcbsp_dma_ch_params(struct omap_mcbsp *mcbsp, unsigned int stream) { - struct omap_mcbsp *mcbsp; - - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); - return -ENODEV; - } - mcbsp = id_to_mcbsp_ptr(id); - if (stream) return mcbsp->dma_rx_sync; else return mcbsp->dma_tx_sync; } -EXPORT_SYMBOL(omap_mcbsp_dma_ch_params); /** * omap_mcbsp_dma_reg_params - returns the address of mcbsp data register @@ -226,17 +201,10 @@ EXPORT_SYMBOL(omap_mcbsp_dma_ch_params); * to be used by DMA for transferring/receiving data based on the value of * @stream for the requested mcbsp given by @id */ -int omap_mcbsp_dma_reg_params(unsigned int id, unsigned int stream) +int omap_mcbsp_dma_reg_params(struct omap_mcbsp *mcbsp, unsigned int stream) { - struct omap_mcbsp *mcbsp; int data_reg; - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); - return -ENODEV; - } - mcbsp = id_to_mcbsp_ptr(id); - if (mcbsp->pdata->reg_size == 2) { if (stream) data_reg = OMAP_MCBSP_REG_DRR1; @@ -251,7 +219,6 @@ int omap_mcbsp_dma_reg_params(unsigned int id, unsigned int stream) return mcbsp->phys_dma_base + data_reg * mcbsp->pdata->reg_step; } -EXPORT_SYMBOL(omap_mcbsp_dma_reg_params); static void omap_st_on(struct omap_mcbsp *mcbsp) { @@ -320,18 +287,11 @@ static void omap_st_chgain(struct omap_mcbsp *mcbsp) ST_CH1GAIN(st_data->ch1gain)); } -int omap_st_set_chgain(unsigned int id, int channel, s16 chgain) +int omap_st_set_chgain(struct omap_mcbsp *mcbsp, int channel, s16 chgain) { - struct omap_mcbsp *mcbsp; struct omap_mcbsp_st_data *st_data; int ret = 0; - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); - return -ENODEV; - } - - mcbsp = id_to_mcbsp_ptr(id); st_data = mcbsp->st_data; if (!st_data) @@ -351,20 +311,12 @@ int omap_st_set_chgain(unsigned int id, int channel, s16 chgain) return ret; } -EXPORT_SYMBOL(omap_st_set_chgain); -int omap_st_get_chgain(unsigned int id, int channel, s16 *chgain) +int omap_st_get_chgain(struct omap_mcbsp *mcbsp, int channel, s16 *chgain) { - struct omap_mcbsp *mcbsp; struct omap_mcbsp_st_data *st_data; int ret = 0; - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); - return -ENODEV; - } - - mcbsp = id_to_mcbsp_ptr(id); st_data = mcbsp->st_data; if (!st_data) @@ -381,7 +333,6 @@ int omap_st_get_chgain(unsigned int id, int channel, s16 *chgain) return ret; } -EXPORT_SYMBOL(omap_st_get_chgain); static int omap_st_start(struct omap_mcbsp *mcbsp) { @@ -400,17 +351,10 @@ static int omap_st_start(struct omap_mcbsp *mcbsp) return 0; } -int omap_st_enable(unsigned int id) +int omap_st_enable(struct omap_mcbsp *mcbsp) { - struct omap_mcbsp *mcbsp; struct omap_mcbsp_st_data *st_data; - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); - return -ENODEV; - } - - mcbsp = id_to_mcbsp_ptr(id); st_data = mcbsp->st_data; if (!st_data) @@ -423,7 +367,6 @@ int omap_st_enable(unsigned int id) return 0; } -EXPORT_SYMBOL(omap_st_enable); static int omap_st_stop(struct omap_mcbsp *mcbsp) { @@ -439,18 +382,11 @@ static int omap_st_stop(struct omap_mcbsp *mcbsp) return 0; } -int omap_st_disable(unsigned int id) +int omap_st_disable(struct omap_mcbsp *mcbsp) { - struct omap_mcbsp *mcbsp; struct omap_mcbsp_st_data *st_data; int ret = 0; - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); - return -ENODEV; - } - - mcbsp = id_to_mcbsp_ptr(id); st_data = mcbsp->st_data; if (!st_data) @@ -463,19 +399,11 @@ int omap_st_disable(unsigned int id) return ret; } -EXPORT_SYMBOL(omap_st_disable); -int omap_st_is_enabled(unsigned int id) +int omap_st_is_enabled(struct omap_mcbsp *mcbsp) { - struct omap_mcbsp *mcbsp; struct omap_mcbsp_st_data *st_data; - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); - return -ENODEV; - } - - mcbsp = id_to_mcbsp_ptr(id); st_data = mcbsp->st_data; if (!st_data) @@ -484,115 +412,65 @@ int omap_st_is_enabled(unsigned int id) return st_data->enabled; } -EXPORT_SYMBOL(omap_st_is_enabled); /* * omap_mcbsp_set_rx_threshold configures the transmit threshold in words. * The threshold parameter is 1 based, and it is converted (threshold - 1) * for the THRSH2 register. */ -void omap_mcbsp_set_tx_threshold(unsigned int id, u16 threshold) +void omap_mcbsp_set_tx_threshold(struct omap_mcbsp *mcbsp, u16 threshold) { - struct omap_mcbsp *mcbsp; - - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); - return; - } - mcbsp = id_to_mcbsp_ptr(id); if (mcbsp->pdata->buffer_size == 0) return; if (threshold && threshold <= mcbsp->max_tx_thres) MCBSP_WRITE(mcbsp, THRSH2, threshold - 1); } -EXPORT_SYMBOL(omap_mcbsp_set_tx_threshold); /* * omap_mcbsp_set_rx_threshold configures the receive threshold in words. * The threshold parameter is 1 based, and it is converted (threshold - 1) * for the THRSH1 register. */ -void omap_mcbsp_set_rx_threshold(unsigned int id, u16 threshold) +void omap_mcbsp_set_rx_threshold(struct omap_mcbsp *mcbsp, u16 threshold) { - struct omap_mcbsp *mcbsp; - - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); - return; - } - mcbsp = id_to_mcbsp_ptr(id); if (mcbsp->pdata->buffer_size == 0) return; if (threshold && threshold <= mcbsp->max_rx_thres) MCBSP_WRITE(mcbsp, THRSH1, threshold - 1); } -EXPORT_SYMBOL(omap_mcbsp_set_rx_threshold); /* * omap_mcbsp_get_max_tx_thres just return the current configured * maximum threshold for transmission */ -u16 omap_mcbsp_get_max_tx_threshold(unsigned int id) +u16 omap_mcbsp_get_max_tx_threshold(struct omap_mcbsp *mcbsp) { - struct omap_mcbsp *mcbsp; - - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); - return -ENODEV; - } - mcbsp = id_to_mcbsp_ptr(id); - return mcbsp->max_tx_thres; } -EXPORT_SYMBOL(omap_mcbsp_get_max_tx_threshold); /* * omap_mcbsp_get_max_rx_thres just return the current configured * maximum threshold for reception */ -u16 omap_mcbsp_get_max_rx_threshold(unsigned int id) +u16 omap_mcbsp_get_max_rx_threshold(struct omap_mcbsp *mcbsp) { - struct omap_mcbsp *mcbsp; - - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); - return -ENODEV; - } - mcbsp = id_to_mcbsp_ptr(id); - return mcbsp->max_rx_thres; } -EXPORT_SYMBOL(omap_mcbsp_get_max_rx_threshold); -u16 omap_mcbsp_get_fifo_size(unsigned int id) +u16 omap_mcbsp_get_fifo_size(struct omap_mcbsp *mcbsp) { - struct omap_mcbsp *mcbsp; - - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); - return -ENODEV; - } - mcbsp = id_to_mcbsp_ptr(id); - return mcbsp->pdata->buffer_size; } -EXPORT_SYMBOL(omap_mcbsp_get_fifo_size); /* * omap_mcbsp_get_tx_delay returns the number of used slots in the McBSP FIFO */ -u16 omap_mcbsp_get_tx_delay(unsigned int id) +u16 omap_mcbsp_get_tx_delay(struct omap_mcbsp *mcbsp) { - struct omap_mcbsp *mcbsp; u16 buffstat; - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); - return -ENODEV; - } - mcbsp = id_to_mcbsp_ptr(id); if (mcbsp->pdata->buffer_size == 0) return 0; @@ -602,22 +480,15 @@ u16 omap_mcbsp_get_tx_delay(unsigned int id) /* Number of slots are different in McBSP ports */ return mcbsp->pdata->buffer_size - buffstat; } -EXPORT_SYMBOL(omap_mcbsp_get_tx_delay); /* * omap_mcbsp_get_rx_delay returns the number of free slots in the McBSP FIFO * to reach the threshold value (when the DMA will be triggered to read it) */ -u16 omap_mcbsp_get_rx_delay(unsigned int id) +u16 omap_mcbsp_get_rx_delay(struct omap_mcbsp *mcbsp) { - struct omap_mcbsp *mcbsp; u16 buffstat, threshold; - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); - return -ENODEV; - } - mcbsp = id_to_mcbsp_ptr(id); if (mcbsp->pdata->buffer_size == 0) return 0; @@ -632,41 +503,25 @@ u16 omap_mcbsp_get_rx_delay(unsigned int id) else return threshold - buffstat; } -EXPORT_SYMBOL(omap_mcbsp_get_rx_delay); /* * omap_mcbsp_get_dma_op_mode just return the current configured * operating mode for the mcbsp channel */ -int omap_mcbsp_get_dma_op_mode(unsigned int id) +int omap_mcbsp_get_dma_op_mode(struct omap_mcbsp *mcbsp) { - struct omap_mcbsp *mcbsp; int dma_op_mode; - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%u)\n", __func__, id + 1); - return -ENODEV; - } - mcbsp = id_to_mcbsp_ptr(id); - dma_op_mode = mcbsp->dma_op_mode; return dma_op_mode; } -EXPORT_SYMBOL(omap_mcbsp_get_dma_op_mode); -int omap_mcbsp_request(unsigned int id) +int omap_mcbsp_request(struct omap_mcbsp *mcbsp) { - struct omap_mcbsp *mcbsp; void *reg_cache; int err; - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); - return -ENODEV; - } - mcbsp = id_to_mcbsp_ptr(id); - reg_cache = kzalloc(mcbsp->reg_cache_size, GFP_KERNEL); if (!reg_cache) { return -ENOMEM; @@ -685,9 +540,7 @@ int omap_mcbsp_request(unsigned int id) spin_unlock(&mcbsp->lock); if (mcbsp->pdata && mcbsp->pdata->ops && mcbsp->pdata->ops->request) - mcbsp->pdata->ops->request(id); - - pm_runtime_get_sync(mcbsp->dev); + mcbsp->pdata->ops->request(mcbsp->id - 1); /* Enable wakeup behavior */ if (mcbsp->pdata->has_wakeup) @@ -726,14 +579,12 @@ err_free_irq: free_irq(mcbsp->tx_irq, (void *)mcbsp); err_clk_disable: if (mcbsp->pdata && mcbsp->pdata->ops && mcbsp->pdata->ops->free) - mcbsp->pdata->ops->free(id); + mcbsp->pdata->ops->free(mcbsp->id - 1); /* Disable wakeup behavior */ if (mcbsp->pdata->has_wakeup) MCBSP_WRITE(mcbsp, WAKEUPEN, 0); - pm_runtime_put_sync(mcbsp->dev); - spin_lock(&mcbsp->lock); mcbsp->free = true; mcbsp->reg_cache = NULL; @@ -743,28 +594,18 @@ err_kfree: return err; } -EXPORT_SYMBOL(omap_mcbsp_request); -void omap_mcbsp_free(unsigned int id) +void omap_mcbsp_free(struct omap_mcbsp *mcbsp) { - struct omap_mcbsp *mcbsp; void *reg_cache; - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); - return; - } - mcbsp = id_to_mcbsp_ptr(id); - if (mcbsp->pdata && mcbsp->pdata->ops && mcbsp->pdata->ops->free) - mcbsp->pdata->ops->free(id); + mcbsp->pdata->ops->free(mcbsp->id - 1); /* Disable wakeup behavior */ if (mcbsp->pdata->has_wakeup) MCBSP_WRITE(mcbsp, WAKEUPEN, 0); - pm_runtime_put_sync(mcbsp->dev); - if (mcbsp->rx_irq) free_irq(mcbsp->rx_irq, (void *)mcbsp); free_irq(mcbsp->tx_irq, (void *)mcbsp); @@ -782,25 +623,17 @@ void omap_mcbsp_free(unsigned int id) if (reg_cache) kfree(reg_cache); } -EXPORT_SYMBOL(omap_mcbsp_free); /* * Here we start the McBSP, by enabling transmitter, receiver or both. * If no transmitter or receiver is active prior calling, then sample-rate * generator and frame sync are started. */ -void omap_mcbsp_start(unsigned int id, int tx, int rx) +void omap_mcbsp_start(struct omap_mcbsp *mcbsp, int tx, int rx) { - struct omap_mcbsp *mcbsp; int enable_srg = 0; u16 w; - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); - return; - } - mcbsp = id_to_mcbsp_ptr(id); - if (mcbsp->st_data) omap_st_start(mcbsp); @@ -850,23 +683,14 @@ void omap_mcbsp_start(unsigned int id, int tx, int rx) } /* Dump McBSP Regs */ - omap_mcbsp_dump_reg(id); + omap_mcbsp_dump_reg(mcbsp); } -EXPORT_SYMBOL(omap_mcbsp_start); -void omap_mcbsp_stop(unsigned int id, int tx, int rx) +void omap_mcbsp_stop(struct omap_mcbsp *mcbsp, int tx, int rx) { - struct omap_mcbsp *mcbsp; int idle; u16 w; - if (!omap_mcbsp_check_valid_id(id)) { - printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); - return; - } - - mcbsp = id_to_mcbsp_ptr(id); - /* Reset transmitter */ tx &= 1; if (mcbsp->pdata->has_ccr) { @@ -899,19 +723,11 @@ void omap_mcbsp_stop(unsigned int id, int tx, int rx) if (mcbsp->st_data) omap_st_stop(mcbsp); } -EXPORT_SYMBOL(omap_mcbsp_stop); -int omap2_mcbsp_set_clks_src(u8 id, u8 fck_src_id) +int omap2_mcbsp_set_clks_src(struct omap_mcbsp *mcbsp, u8 fck_src_id) { - struct omap_mcbsp *mcbsp; const char *src; - if (!omap_mcbsp_check_valid_id(id)) { - pr_err("%s: Invalid id (%d)\n", __func__, id + 1); - return -EINVAL; - } - mcbsp = id_to_mcbsp_ptr(id); - if (fck_src_id == MCBSP_CLKS_PAD_SRC) src = "clks_ext"; else if (fck_src_id == MCBSP_CLKS_PRCM_SRC) @@ -924,13 +740,14 @@ int omap2_mcbsp_set_clks_src(u8 id, u8 fck_src_id) else return -EINVAL; } -EXPORT_SYMBOL(omap2_mcbsp_set_clks_src); -void omap2_mcbsp1_mux_clkr_src(u8 mux) +void omap2_mcbsp1_mux_clkr_src(struct omap_mcbsp *mcbsp, u8 mux) { - struct omap_mcbsp *mcbsp; const char *src; + if (mcbsp->id != 1) + return; + if (mux == CLKR_SRC_CLKR) src = "clkr"; else if (mux == CLKR_SRC_CLKX) @@ -938,17 +755,17 @@ void omap2_mcbsp1_mux_clkr_src(u8 mux) else return; - mcbsp = id_to_mcbsp_ptr(0); if (mcbsp->pdata->mux_signal) mcbsp->pdata->mux_signal(mcbsp->dev, "clkr", src); } -EXPORT_SYMBOL(omap2_mcbsp1_mux_clkr_src); -void omap2_mcbsp1_mux_fsr_src(u8 mux) +void omap2_mcbsp1_mux_fsr_src(struct omap_mcbsp *mcbsp, u8 mux) { - struct omap_mcbsp *mcbsp; const char *src; + if (mcbsp->id != 1) + return; + if (mux == FSR_SRC_FSR) src = "fsr"; else if (mux == FSR_SRC_FSX) @@ -956,11 +773,9 @@ void omap2_mcbsp1_mux_fsr_src(u8 mux) else return; - mcbsp = id_to_mcbsp_ptr(0); if (mcbsp->pdata->mux_signal) mcbsp->pdata->mux_signal(mcbsp->dev, "fsr", src); } -EXPORT_SYMBOL(omap2_mcbsp1_mux_fsr_src); #define max_thres(m) (mcbsp->pdata->buffer_size) #define valid_threshold(m, val) ((val) <= max_thres(m)) @@ -1177,11 +992,10 @@ static void __devexit omap_st_remove(struct omap_mcbsp *mcbsp) * McBSP1 and McBSP3 are directly mapped on 1610 and 1510. * 730 has only 2 McBSP, and both of them are MPU peripherals. */ -static int __devinit omap_mcbsp_probe(struct platform_device *pdev) +int __devinit omap_mcbsp_probe(struct platform_device *pdev) { struct omap_mcbsp_platform_data *pdata = pdev->dev.platform_data; struct omap_mcbsp *mcbsp; - int id = pdev->id - 1; struct resource *res; int ret = 0; @@ -1194,12 +1008,6 @@ static int __devinit omap_mcbsp_probe(struct platform_device *pdev) dev_dbg(&pdev->dev, "Initializing OMAP McBSP (%d).\n", pdev->id); - if (id >= omap_mcbsp_count) { - dev_err(&pdev->dev, "Invalid McBSP device id (%d)\n", id); - ret = -EINVAL; - goto exit; - } - mcbsp = kzalloc(sizeof(struct omap_mcbsp), GFP_KERNEL); if (!mcbsp) { ret = -ENOMEM; @@ -1207,7 +1015,7 @@ static int __devinit omap_mcbsp_probe(struct platform_device *pdev) } spin_lock_init(&mcbsp->lock); - mcbsp->id = id + 1; + mcbsp->id = pdev->id; mcbsp->free = true; res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "mpu"); @@ -1268,7 +1076,6 @@ static int __devinit omap_mcbsp_probe(struct platform_device *pdev) mcbsp->pdata = pdata; mcbsp->dev = &pdev->dev; - mcbsp_ptr[id] = mcbsp; platform_set_drvdata(pdev, mcbsp); pm_runtime_enable(mcbsp->dev); @@ -1323,7 +1130,7 @@ exit: return ret; } -static int __devexit omap_mcbsp_remove(struct platform_device *pdev) +int __devexit omap_mcbsp_remove(struct platform_device *pdev) { struct omap_mcbsp *mcbsp = platform_get_drvdata(pdev); @@ -1349,18 +1156,3 @@ static int __devexit omap_mcbsp_remove(struct platform_device *pdev) return 0; } - -static struct platform_driver omap_mcbsp_driver = { - .probe = omap_mcbsp_probe, - .remove = __devexit_p(omap_mcbsp_remove), - .driver = { - .name = "omap-mcbsp", - }, -}; - -module_platform_driver(omap_mcbsp_driver); - -MODULE_AUTHOR("Samuel Ortiz <samuel.ortiz@nokia.com>"); -MODULE_DESCRIPTION("OMAP McBSP core driver"); -MODULE_LICENSE("GPL"); -MODULE_ALIAS("platform:omap-mcbsp"); |