-
Notifications
You must be signed in to change notification settings - Fork 5.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ASoC: wm8731: Factor out the I2C and SPI bus code into separate modules
Placing both the I2C and SPI code in the same module causes problems with mixes of modular and non-modular builds of the buses so it's generally bad practice. As with other drivers split the bus code out of the WM8731 driver into separate modules. Signed-off-by: Mark Brown <[email protected]> Acked-by: Charles Keepax <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
- Loading branch information
Showing
9 changed files
with
183 additions
and
142 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
// SPDX-License-Identifier: GPL-2.0-only | ||
/* | ||
* wm8731-i2c.c -- WM8731 ALSA SoC Audio driver I2C code | ||
* | ||
* Copyright 2005 Openedhand Ltd. | ||
* Copyright 2006-12 Wolfson Microelectronics, plc | ||
* | ||
* Author: Richard Purdie <[email protected]> | ||
* | ||
* Based on wm8753.c by Liam Girdwood | ||
*/ | ||
|
||
#include <linux/i2c.h> | ||
#include <linux/module.h> | ||
#include <linux/of_device.h> | ||
|
||
#include "wm8731.h" | ||
|
||
|
||
static const struct of_device_id wm8731_of_match[] = { | ||
{ .compatible = "wlf,wm8731", }, | ||
{ } | ||
}; | ||
MODULE_DEVICE_TABLE(of, wm8731_of_match); | ||
|
||
static int wm8731_i2c_probe(struct i2c_client *i2c, | ||
const struct i2c_device_id *id) | ||
{ | ||
struct wm8731_priv *wm8731; | ||
int ret; | ||
|
||
wm8731 = devm_kzalloc(&i2c->dev, sizeof(struct wm8731_priv), | ||
GFP_KERNEL); | ||
if (wm8731 == NULL) | ||
return -ENOMEM; | ||
|
||
i2c_set_clientdata(i2c, wm8731); | ||
|
||
wm8731->regmap = devm_regmap_init_i2c(i2c, &wm8731_regmap); | ||
if (IS_ERR(wm8731->regmap)) { | ||
ret = PTR_ERR(wm8731->regmap); | ||
dev_err(&i2c->dev, "Failed to allocate register map: %d\n", | ||
ret); | ||
return ret; | ||
} | ||
|
||
return wm8731_init(&i2c->dev, wm8731); | ||
} | ||
|
||
static const struct i2c_device_id wm8731_i2c_id[] = { | ||
{ "wm8731", 0 }, | ||
{ } | ||
}; | ||
MODULE_DEVICE_TABLE(i2c, wm8731_i2c_id); | ||
|
||
static struct i2c_driver wm8731_i2c_driver = { | ||
.driver = { | ||
.name = "wm8731", | ||
.of_match_table = wm8731_of_match, | ||
}, | ||
.probe = wm8731_i2c_probe, | ||
.id_table = wm8731_i2c_id, | ||
}; | ||
|
||
module_i2c_driver(wm8731_i2c_driver); | ||
|
||
MODULE_DESCRIPTION("ASoC WM8731 driver - I2C"); | ||
MODULE_AUTHOR("Richard Purdie"); | ||
MODULE_LICENSE("GPL"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
// SPDX-License-Identifier: GPL-2.0-only | ||
/* | ||
* wm8731.c -- WM8731 ALSA SoC Audio driver | ||
* | ||
* Copyright 2005 Openedhand Ltd. | ||
* Copyright 2006-12 Wolfson Microelectronics, plc | ||
* | ||
* Author: Richard Purdie <[email protected]> | ||
* | ||
* Based on wm8753.c by Liam Girdwood | ||
*/ | ||
|
||
#include <linux/spi/spi.h> | ||
#include <linux/module.h> | ||
#include <linux/of_device.h> | ||
|
||
#include "wm8731.h" | ||
|
||
static const struct of_device_id wm8731_of_match[] = { | ||
{ .compatible = "wlf,wm8731", }, | ||
{ } | ||
}; | ||
MODULE_DEVICE_TABLE(of, wm8731_of_match); | ||
|
||
static int wm8731_spi_probe(struct spi_device *spi) | ||
{ | ||
struct wm8731_priv *wm8731; | ||
int ret; | ||
|
||
wm8731 = devm_kzalloc(&spi->dev, sizeof(*wm8731), GFP_KERNEL); | ||
if (wm8731 == NULL) | ||
return -ENOMEM; | ||
|
||
spi_set_drvdata(spi, wm8731); | ||
|
||
wm8731->regmap = devm_regmap_init_spi(spi, &wm8731_regmap); | ||
if (IS_ERR(wm8731->regmap)) { | ||
ret = PTR_ERR(wm8731->regmap); | ||
dev_err(&spi->dev, "Failed to allocate register map: %d\n", | ||
ret); | ||
return ret; | ||
} | ||
|
||
return wm8731_init(&spi->dev, wm8731); | ||
} | ||
|
||
static struct spi_driver wm8731_spi_driver = { | ||
.driver = { | ||
.name = "wm8731", | ||
.of_match_table = wm8731_of_match, | ||
}, | ||
.probe = wm8731_spi_probe, | ||
}; | ||
|
||
module_spi_driver(wm8731_spi_driver); | ||
|
||
MODULE_DESCRIPTION("ASoC WM8731 driver - SPI"); | ||
MODULE_AUTHOR("Richard Purdie"); | ||
MODULE_LICENSE("GPL"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.