2021-12-17 11:57:05 +00:00
// SPDX-License-Identifier: GPL-2.0
//
2022-07-11 13:01:29 +03:00
// CS35l41 HDA I2C 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/i2c.h>
# include "cs35l41_hda.h"
static int cs35l41_hda_i2c_probe ( struct i2c_client * clt , const struct i2c_device_id * id )
{
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 ( & clt - > dev ) , " CLSA0100 " ) )
device_name = " CLSA0100 " ;
else if ( strstr ( dev_name ( & clt - > dev ) , " CSC3551 " ) )
device_name = " CSC3551 " ;
else
return - ENODEV ;
return cs35l41_hda_probe ( & clt - > dev , device_name , clt - > addr , clt - > irq ,
devm_regmap_init_i2c ( clt , & cs35l41_regmap_i2c ) ) ;
}
static int cs35l41_hda_i2c_remove ( struct i2c_client * clt )
{
2022-01-17 23:00:55 +01:00
cs35l41_hda_remove ( & clt - > dev ) ;
return 0 ;
2021-12-17 11:57:05 +00:00
}
static const struct i2c_device_id cs35l41_hda_i2c_id [ ] = {
{ " cs35l41-hda " , 0 } ,
{ }
} ;
static const struct acpi_device_id cs35l41_acpi_hda_match [ ] = {
{ " CLSA0100 " , 0 } ,
{ " 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 i2c_driver cs35l41_i2c_driver = {
. driver = {
. name = " cs35l41-hda " ,
2022-07-12 18:35:18 +03:00
. acpi_match_table = cs35l41_acpi_hda_match ,
2021-12-17 11:57:05 +00:00
} ,
. id_table = cs35l41_hda_i2c_id ,
. probe = cs35l41_hda_i2c_probe ,
. remove = cs35l41_hda_i2c_remove ,
} ;
module_i2c_driver ( cs35l41_i2c_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 " ) ;