sound:starfive:pwmdac:Modify compatible name
[platform/kernel/linux-starfive.git] / sound / soc / starfive / starfive_pwmdac_transmitter.c
1 /**
2   ******************************************************************************
3   * @file  sf_pwmdac_transmitter.c
4   * @author  StarFive Technology
5   * @version  V1.0
6   * @date  05/27/2021
7   * @brief
8   ******************************************************************************
9   * @copy
10   *
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.
17   *
18   * <h2><center>&copy; COPYRIGHT 20120 Shanghai StarFive Technology Co., Ltd. </center></h2>
19   */
20
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>
27 #include <linux/of.h>
28
29 #define DRV_NAME "pwmdac-dit"
30
31 #define STUB_RATES      SNDRV_PCM_RATE_8000_192000
32 #define STUB_FORMATS    (SNDRV_PCM_FMTBIT_S8|\
33                         SNDRV_PCM_FMTBIT_U8|\
34                         SNDRV_PCM_FMTBIT_S16_LE | \
35                         SNDRV_PCM_FMTBIT_S20_3LE | \
36                         SNDRV_PCM_FMTBIT_S24_LE  | \
37                         SNDRV_PCM_FMTBIT_S32_LE)
38
39 static const struct snd_soc_dapm_widget dit_widgets[] = {
40         SND_SOC_DAPM_OUTPUT("pwmdac-out"),
41 };
42
43 static const struct snd_soc_dapm_route dit_routes[] = {
44         { "pwmdac-out", NULL, "Playback" },
45 };
46
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),
52         .idle_bias_on           = 1,
53         .use_pmdown_time        = 1,
54         .endianness             = 1,
55         .non_legacy_dai_naming  = 1,
56 };
57
58 static struct snd_soc_dai_driver dit_stub_dai = {
59         .name           = "pwmdac-dit-hifi",
60         .playback       = {
61                 .stream_name    = "Playback",
62                 .channels_min   = 1,
63                 .channels_max   = 384,
64                 .rates          = STUB_RATES,
65                 .formats        = STUB_FORMATS,
66         },
67 };
68
69 static int pwmdac_dit_probe(struct platform_device *pdev)
70 {
71
72         return devm_snd_soc_register_component(&pdev->dev,
73                         &soc_codec_pwmdac_dit,
74                         &dit_stub_dai, 1);
75 }
76
77 #ifdef CONFIG_OF
78 static const struct of_device_id pwmdac_dit_dt_ids[] = {
79         { .compatible = "starfive,jh7110-pwmdac-dit", },
80         { }
81 };
82 MODULE_DEVICE_TABLE(of, pwmdac_dit_dt_ids);
83 #endif
84
85 static struct platform_driver pwmdac_dit_driver = {
86         .probe          = pwmdac_dit_probe,
87         .driver         = {
88                 .name   = DRV_NAME,
89                 .of_match_table = of_match_ptr(pwmdac_dit_dt_ids),
90         },
91 };
92
93 static int __init pwmdac_dit_driver_init(void)
94 {
95         return platform_driver_register(&pwmdac_dit_driver);
96 }
97
98 static void pwmdac_dit_driver_exit(void)
99 {
100         platform_driver_unregister(&pwmdac_dit_driver);
101 }
102
103 late_initcall(pwmdac_dit_driver_init);
104 module_exit(pwmdac_dit_driver_exit);
105
106
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");