blob: 86bb06a1b22ca99f206a90fa432c28e8d129dc8a [file] [log] [blame]
Thomas Gleixnerd2912cb2019-06-04 10:11:33 +02001// SPDX-License-Identifier: GPL-2.0-only
Atsushi Nemotoe24805d2009-05-19 22:12:15 +09002/*
3 * Generic TXx9 ACLC machine driver
4 *
5 * Copyright (C) 2009 Atsushi Nemoto
6 *
7 * Based on RBTX49xx patch from CELF patch archive.
8 * (C) Copyright TOSHIBA CORPORATION 2004-2006
9 *
Atsushi Nemotoe24805d2009-05-19 22:12:15 +090010 * This is a very generic AC97 sound machine driver for boards which
11 * have (AC97) audio at ACLC (e.g. RBTX49XX boards).
12 */
13
14#include <linux/module.h>
15#include <linux/platform_device.h>
16#include <sound/core.h>
17#include <sound/pcm.h>
18#include <sound/soc.h>
Atsushi Nemotoe24805d2009-05-19 22:12:15 +090019#include "txx9aclc.h"
20
21static struct snd_soc_dai_link txx9aclc_generic_dai = {
22 .name = "AC97",
23 .stream_name = "AC97 HiFi",
Liam Girdwoodf0fba2a2010-03-17 20:15:21 +000024 .cpu_dai_name = "txx9aclc-ac97",
25 .codec_dai_name = "ac97-hifi",
26 .platform_name = "txx9aclc-pcm-audio",
27 .codec_name = "ac97-codec",
Atsushi Nemotoe24805d2009-05-19 22:12:15 +090028};
29
30static struct snd_soc_card txx9aclc_generic_card = {
31 .name = "Generic TXx9 ACLC Audio",
Axel Line181d142011-12-23 14:54:30 +080032 .owner = THIS_MODULE,
Atsushi Nemotoe24805d2009-05-19 22:12:15 +090033 .dai_link = &txx9aclc_generic_dai,
34 .num_links = 1,
35};
36
Liam Girdwoodf0fba2a2010-03-17 20:15:21 +000037static struct platform_device *soc_pdev;
Atsushi Nemotoe24805d2009-05-19 22:12:15 +090038
39static int __init txx9aclc_generic_probe(struct platform_device *pdev)
40{
Atsushi Nemotoe24805d2009-05-19 22:12:15 +090041 int ret;
42
43 soc_pdev = platform_device_alloc("soc-audio", -1);
44 if (!soc_pdev)
45 return -ENOMEM;
Liam Girdwoodf0fba2a2010-03-17 20:15:21 +000046 platform_set_drvdata(soc_pdev, &txx9aclc_generic_card);
Atsushi Nemotoe24805d2009-05-19 22:12:15 +090047 ret = platform_device_add(soc_pdev);
48 if (ret) {
49 platform_device_put(soc_pdev);
50 return ret;
51 }
Liam Girdwoodf0fba2a2010-03-17 20:15:21 +000052
Atsushi Nemotoe24805d2009-05-19 22:12:15 +090053 return 0;
54}
55
56static int __exit txx9aclc_generic_remove(struct platform_device *pdev)
57{
Atsushi Nemotoe24805d2009-05-19 22:12:15 +090058 platform_device_unregister(soc_pdev);
59 return 0;
60}
61
62static struct platform_driver txx9aclc_generic_driver = {
Axel Linf6a74ce2011-10-03 09:38:32 +080063 .remove = __exit_p(txx9aclc_generic_remove),
Atsushi Nemotoe24805d2009-05-19 22:12:15 +090064 .driver = {
65 .name = "txx9aclc-generic",
Atsushi Nemotoe24805d2009-05-19 22:12:15 +090066 },
67};
68
69static int __init txx9aclc_generic_init(void)
70{
71 return platform_driver_probe(&txx9aclc_generic_driver,
72 txx9aclc_generic_probe);
73}
74
75static void __exit txx9aclc_generic_exit(void)
76{
77 platform_driver_unregister(&txx9aclc_generic_driver);
78}
79
80module_init(txx9aclc_generic_init);
81module_exit(txx9aclc_generic_exit);
82
83MODULE_AUTHOR("Atsushi Nemoto <anemo@mba.ocn.ne.jp>");
84MODULE_DESCRIPTION("Generic TXx9 ACLC ALSA SoC audio driver");
85MODULE_LICENSE("GPL");
Geert Uytterhoevenb0b4ce32010-04-08 20:52:00 +020086MODULE_ALIAS("platform:txx9aclc-generic");