root/sound/soc/fsl/efika-audio-fabric.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. efika_fabric_init

   1 /*
   2  * Efika driver for the PSC of the Freescale MPC52xx
   3  * configured as AC97 interface
   4  *
   5  * Copyright 2008 Jon Smirl, Digispeaker
   6  * Author: Jon Smirl <jonsmirl@gmail.com>
   7  *
   8  * This file is licensed under the terms of the GNU General Public License
   9  * version 2. This program is licensed "as is" without any warranty of any
  10  * kind, whether express or implied.
  11  */
  12 
  13 #include <linux/init.h>
  14 #include <linux/module.h>
  15 #include <linux/interrupt.h>
  16 #include <linux/device.h>
  17 #include <linux/delay.h>
  18 #include <linux/of_device.h>
  19 #include <linux/of_platform.h>
  20 #include <linux/dma-mapping.h>
  21 
  22 #include <sound/core.h>
  23 #include <sound/pcm.h>
  24 #include <sound/pcm_params.h>
  25 #include <sound/initval.h>
  26 #include <sound/soc.h>
  27 
  28 #include "mpc5200_dma.h"
  29 
  30 #define DRV_NAME "efika-audio-fabric"
  31 
  32 SND_SOC_DAILINK_DEFS(analog,
  33         DAILINK_COMP_ARRAY(COMP_CPU("mpc5200-psc-ac97.0")),
  34         DAILINK_COMP_ARRAY(COMP_CODEC("stac9766-codec",
  35                                       "stac9766-hifi-analog")),
  36         DAILINK_COMP_ARRAY(COMP_PLATFORM("mpc5200-pcm-audio")));
  37 
  38 SND_SOC_DAILINK_DEFS(iec958,
  39         DAILINK_COMP_ARRAY(COMP_CPU("mpc5200-psc-ac97.1")),
  40         DAILINK_COMP_ARRAY(COMP_CODEC("stac9766-codec",
  41                                       "stac9766-hifi-IEC958")),
  42         DAILINK_COMP_ARRAY(COMP_PLATFORM("mpc5200-pcm-audio")));
  43 
  44 static struct snd_soc_dai_link efika_fabric_dai[] = {
  45 {
  46         .name = "AC97",
  47         .stream_name = "AC97 Analog",
  48         SND_SOC_DAILINK_REG(analog),
  49 },
  50 {
  51         .name = "AC97",
  52         .stream_name = "AC97 IEC958",
  53         SND_SOC_DAILINK_REG(iec958),
  54 },
  55 };
  56 
  57 static struct snd_soc_card card = {
  58         .name = "Efika",
  59         .owner = THIS_MODULE,
  60         .dai_link = efika_fabric_dai,
  61         .num_links = ARRAY_SIZE(efika_fabric_dai),
  62 };
  63 
  64 static __init int efika_fabric_init(void)
  65 {
  66         struct platform_device *pdev;
  67         int rc;
  68 
  69         if (!of_machine_is_compatible("bplan,efika"))
  70                 return -ENODEV;
  71 
  72         pdev = platform_device_alloc("soc-audio", 1);
  73         if (!pdev) {
  74                 pr_err("efika_fabric_init: platform_device_alloc() failed\n");
  75                 return -ENODEV;
  76         }
  77 
  78         platform_set_drvdata(pdev, &card);
  79 
  80         rc = platform_device_add(pdev);
  81         if (rc) {
  82                 pr_err("efika_fabric_init: platform_device_add() failed\n");
  83                 platform_device_put(pdev);
  84                 return -ENODEV;
  85         }
  86         return 0;
  87 }
  88 
  89 module_init(efika_fabric_init);
  90 
  91 
  92 MODULE_AUTHOR("Jon Smirl <jonsmirl@gmail.com>");
  93 MODULE_DESCRIPTION(DRV_NAME ": mpc5200 Efika fabric driver");
  94 MODULE_LICENSE("GPL");
  95 

/* [<][>][^][v][top][bottom][index][help] */