2 ******************************************************************************
3 * @file sf_pwmdac_transmitter.c
4 * @author StarFive Technology
8 ******************************************************************************
11 * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
12 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
13 * TIME. AS A RESULT, STARFIVE SHALL NOT BE HELD LIABLE FOR ANY
14 * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
15 * FROM THE CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
16 * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
18 * <h2><center>© COPYRIGHT 20120 Shanghai StarFive Technology Co., Ltd. </center></h2>
21 #include <linux/module.h>
22 #include <linux/moduleparam.h>
23 #include <linux/slab.h>
24 #include <sound/soc.h>
25 #include <sound/pcm.h>
26 #include <sound/initval.h>
29 #define DRV_NAME "pwmdac-dit"
31 #define STUB_RATES SNDRV_PCM_RATE_8000_192000
32 #define STUB_FORMATS (SNDRV_PCM_FMTBIT_S8|\
34 SNDRV_PCM_FMTBIT_S16_LE | \
35 SNDRV_PCM_FMTBIT_S20_3LE | \
36 SNDRV_PCM_FMTBIT_S24_LE | \
37 SNDRV_PCM_FMTBIT_S32_LE)
39 static const struct snd_soc_dapm_widget dit_widgets[] = {
40 SND_SOC_DAPM_OUTPUT("pwmdac-out"),
43 static const struct snd_soc_dapm_route dit_routes[] = {
44 { "pwmdac-out", NULL, "Playback" },
47 static struct snd_soc_component_driver soc_codec_pwmdac_dit = {
48 .dapm_widgets = dit_widgets,
49 .num_dapm_widgets = ARRAY_SIZE(dit_widgets),
50 .dapm_routes = dit_routes,
51 .num_dapm_routes = ARRAY_SIZE(dit_routes),
55 .non_legacy_dai_naming = 1,
58 static struct snd_soc_dai_driver dit_stub_dai = {
59 .name = "pwmdac-dit-hifi",
61 .stream_name = "Playback",
65 .formats = STUB_FORMATS,
69 static int pwmdac_dit_probe(struct platform_device *pdev)
72 return devm_snd_soc_register_component(&pdev->dev,
73 &soc_codec_pwmdac_dit,
78 static const struct of_device_id pwmdac_dit_dt_ids[] = {
79 { .compatible = "starfive,jh7110-pwmdac-dit", },
82 MODULE_DEVICE_TABLE(of, pwmdac_dit_dt_ids);
85 static struct platform_driver pwmdac_dit_driver = {
86 .probe = pwmdac_dit_probe,
89 .of_match_table = of_match_ptr(pwmdac_dit_dt_ids),
93 static int __init pwmdac_dit_driver_init(void)
95 return platform_driver_register(&pwmdac_dit_driver);
98 static void pwmdac_dit_driver_exit(void)
100 platform_driver_unregister(&pwmdac_dit_driver);
103 late_initcall(pwmdac_dit_driver_init);
104 module_exit(pwmdac_dit_driver_exit);
107 MODULE_AUTHOR("curry.zhang <curry.zhang@starfivetech.com>");
108 MODULE_DESCRIPTION("pwmdac dummy codec driver");
109 MODULE_LICENSE("GPL v2");
110 MODULE_ALIAS("platform: starfive-pwmdac dummy codec");