Commit | Line | Data |
---|---|---|
89933dee NJ |
1 | /* |
2 | * wm8727.c | |
3 | * | |
4 | * Created on: 15-Oct-2009 | |
5 | * Author: neil.jones@imgtec.com | |
6 | * | |
7 | * Copyright (C) 2009 Imagination Technologies Ltd. | |
8 | * | |
9 | * This program is free software; you can redistribute it and/or modify it | |
10 | * under the terms of the GNU General Public License as published by the | |
11 | * Free Software Foundation; either version 2 of the License, or (at your | |
12 | * option) any later version. | |
13 | */ | |
14 | ||
15 | #include <linux/init.h> | |
5a0e3ad6 | 16 | #include <linux/slab.h> |
89933dee NJ |
17 | #include <linux/module.h> |
18 | #include <linux/kernel.h> | |
19 | #include <linux/device.h> | |
20 | #include <sound/core.h> | |
21 | #include <sound/pcm.h> | |
22 | #include <sound/ac97_codec.h> | |
23 | #include <sound/initval.h> | |
24 | #include <sound/soc.h> | |
25 | ||
89933dee NJ |
26 | /* |
27 | * Note this is a simple chip with no configuration interface, sample rate is | |
28 | * determined automatically by examining the Master clock and Bit clock ratios | |
29 | */ | |
30 | #define WM8727_RATES (SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |\ | |
31 | SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000 |\ | |
32 | SNDRV_PCM_RATE_192000) | |
33 | ||
34 | ||
f0fba2ad LG |
35 | static struct snd_soc_dai_driver wm8727_dai = { |
36 | .name = "wm8727-hifi", | |
89933dee NJ |
37 | .playback = { |
38 | .stream_name = "Playback", | |
39 | .channels_min = 2, | |
40 | .channels_max = 2, | |
41 | .rates = WM8727_RATES, | |
42 | .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE, | |
43 | }, | |
44 | }; | |
89933dee | 45 | |
48bd3472 | 46 | static struct snd_soc_codec_driver soc_codec_dev_wm8727; |
cce2e9db | 47 | |
7a79e94e | 48 | static int wm8727_probe(struct platform_device *pdev) |
89933dee | 49 | { |
f0fba2ad LG |
50 | return snd_soc_register_codec(&pdev->dev, |
51 | &soc_codec_dev_wm8727, &wm8727_dai, 1); | |
89933dee NJ |
52 | } |
53 | ||
7a79e94e | 54 | static int wm8727_remove(struct platform_device *pdev) |
89933dee | 55 | { |
f0fba2ad | 56 | snd_soc_unregister_codec(&pdev->dev); |
89933dee NJ |
57 | return 0; |
58 | } | |
59 | ||
529697c5 | 60 | static struct platform_driver wm8727_codec_driver = { |
89933dee | 61 | .driver = { |
091edccf | 62 | .name = "wm8727", |
89933dee NJ |
63 | .owner = THIS_MODULE, |
64 | }, | |
65 | ||
f0fba2ad | 66 | .probe = wm8727_probe, |
7a79e94e | 67 | .remove = wm8727_remove, |
89933dee NJ |
68 | }; |
69 | ||
5bbcc3c0 | 70 | module_platform_driver(wm8727_codec_driver); |
89933dee NJ |
71 | |
72 | MODULE_DESCRIPTION("ASoC wm8727 driver"); | |
73 | MODULE_AUTHOR("Neil Jones"); | |
74 | MODULE_LICENSE("GPL"); |