2021-12-17 11:57:05 +00:00
// SPDX-License-Identifier: GPL-2.0
//
2022-07-11 13:01:29 +03:00
// CS35l41 HDA SPI driver
2021-12-17 11:57:05 +00:00
//
// Copyright 2021 Cirrus Logic, Inc.
//
// Author: Lucas Tanure <tanureal@opensource.cirrus.com>
2022-07-12 18:35:18 +03:00
# include <linux/mod_devicetable.h>
2021-12-17 11:57:05 +00:00
# include <linux/module.h>
# include <linux/spi/spi.h>
# include "cs35l41_hda.h"
static int cs35l41_hda_spi_probe ( struct spi_device * spi )
{
const char * device_name ;
2022-07-11 13:01:29 +03:00
/*
* Compare against the device name so it works for SPI , normal ACPI
* and for ACPI by serial - multi - instantiate matching cases .
2021-12-17 11:57:05 +00:00
*/
if ( strstr ( dev_name ( & spi - > dev ) , " CSC3551 " ) )
device_name = " CSC3551 " ;
else
return - ENODEV ;
return cs35l41_hda_probe ( & spi - > dev , device_name , spi - > chip_select , spi - > irq ,
devm_regmap_init_spi ( spi , & cs35l41_regmap_spi ) ) ;
}
2022-01-23 18:52:01 +01:00
static void cs35l41_hda_spi_remove ( struct spi_device * spi )
2021-12-17 11:57:05 +00:00
{
2022-01-17 23:00:55 +01:00
cs35l41_hda_remove ( & spi - > dev ) ;
2021-12-17 11:57:05 +00:00
}
static const struct spi_device_id cs35l41_hda_spi_id [ ] = {
{ " cs35l41-hda " , 0 } ,
{ }
} ;
static const struct acpi_device_id cs35l41_acpi_hda_match [ ] = {
{ " CSC3551 " , 0 } ,
2022-07-12 18:35:18 +03:00
{ }
2021-12-17 11:57:05 +00:00
} ;
MODULE_DEVICE_TABLE ( acpi , cs35l41_acpi_hda_match ) ;
static struct spi_driver cs35l41_spi_driver = {
. driver = {
2022-05-09 22:46:38 +01:00
. name = " cs35l41-hda " ,
2022-07-12 18:35:18 +03:00
. acpi_match_table = cs35l41_acpi_hda_match ,
2022-06-30 01:23:30 +01:00
. pm = & cs35l41_hda_pm_ops ,
2021-12-17 11:57:05 +00:00
} ,
. id_table = cs35l41_hda_spi_id ,
. probe = cs35l41_hda_spi_probe ,
. remove = cs35l41_hda_spi_remove ,
} ;
module_spi_driver ( cs35l41_spi_driver ) ;
MODULE_DESCRIPTION ( " HDA CS35L41 driver " ) ;
2022-01-17 16:08:27 +00:00
MODULE_IMPORT_NS ( SND_HDA_SCODEC_CS35L41 ) ;
2021-12-17 11:57:05 +00:00
MODULE_AUTHOR ( " Lucas Tanure <tanureal@opensource.cirrus.com> " ) ;
MODULE_LICENSE ( " GPL " ) ;