Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/sound/hda/codecs/side-codecs/cs35l41_hda_spi.c
26481 views
1
// SPDX-License-Identifier: GPL-2.0
2
//
3
// CS35l41 HDA SPI driver
4
//
5
// Copyright 2021 Cirrus Logic, Inc.
6
//
7
// Author: Lucas Tanure <[email protected]>
8
9
#include <linux/mod_devicetable.h>
10
#include <linux/module.h>
11
#include <linux/spi/spi.h>
12
13
#include "cs35l41_hda.h"
14
15
static int cs35l41_hda_spi_probe(struct spi_device *spi)
16
{
17
const char *device_name;
18
19
/*
20
* Compare against the device name so it works for SPI, normal ACPI
21
* and for ACPI by serial-multi-instantiate matching cases.
22
*/
23
if (strstr(dev_name(&spi->dev), "CSC3551"))
24
device_name = "CSC3551";
25
else
26
return -ENODEV;
27
28
return cs35l41_hda_probe(&spi->dev, device_name, spi_get_chipselect(spi, 0), spi->irq,
29
devm_regmap_init_spi(spi, &cs35l41_regmap_spi), SPI);
30
}
31
32
static void cs35l41_hda_spi_remove(struct spi_device *spi)
33
{
34
cs35l41_hda_remove(&spi->dev);
35
}
36
37
static const struct spi_device_id cs35l41_hda_spi_id[] = {
38
{ "cs35l41-hda", 0 },
39
{}
40
};
41
MODULE_DEVICE_TABLE(spi, cs35l41_hda_spi_id);
42
43
static const struct acpi_device_id cs35l41_acpi_hda_match[] = {
44
{ "CSC3551", 0 },
45
{}
46
};
47
MODULE_DEVICE_TABLE(acpi, cs35l41_acpi_hda_match);
48
49
static struct spi_driver cs35l41_spi_driver = {
50
.driver = {
51
.name = "cs35l41-hda",
52
.acpi_match_table = cs35l41_acpi_hda_match,
53
.pm = &cs35l41_hda_pm_ops,
54
},
55
.id_table = cs35l41_hda_spi_id,
56
.probe = cs35l41_hda_spi_probe,
57
.remove = cs35l41_hda_spi_remove,
58
};
59
module_spi_driver(cs35l41_spi_driver);
60
61
MODULE_DESCRIPTION("HDA CS35L41 driver");
62
MODULE_IMPORT_NS("SND_HDA_SCODEC_CS35L41");
63
MODULE_AUTHOR("Lucas Tanure <[email protected]>");
64
MODULE_LICENSE("GPL");
65
66