Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 555b9ee1 authored by Stefan Kristiansson's avatar Stefan Kristiansson Committed by Mark Brown
Browse files

ASoC: ssm2602: add device tree bindings



Allow the ssm2602/ssm2603/ssm2604 codec driver to be
instantiated from the device tree.

Also, add Kconfig prompts to allow manual selection of both the
I2C and SPI configuration versions of the driver.

Signed-off-by: default avatarStefan Kristiansson <stefan.kristiansson@saunalahti.fi>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
Acked-by: default avatarLars-Peter Clausen <lars@metafoo.de>
parent fe2a08b3
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
Analog Devices SSM2602, SSM2603 and SSM2604 I2S audio CODEC devices

SSM2602 support both I2C and SPI as the configuration interface,
the selection is made by the MODE strap-in pin.
SSM2603 and SSM2604 only support I2C as the configuration interface.

Required properties:

  - compatible : One of "adi,ssm2602", "adi,ssm2603" or "adi,ssm2604"

  - reg : the I2C address of the device for I2C, the chip select
          number for SPI.

 Example:

	ssm2602: ssm2602@1a {
		compatible = "adi,ssm2602";
		reg = <0x1a>;
	};
+6 −2
Original line number Diff line number Diff line
@@ -520,12 +520,16 @@ config SND_SOC_SSM2602
	tristate

config SND_SOC_SSM2602_SPI
	tristate "Analog Devices SSM2602 CODEC - SPI"
	depends on SPI_MASTER
	select SND_SOC_SSM2602
	tristate
	select REGMAP_SPI

config SND_SOC_SSM2602_I2C
	tristate "Analog Devices SSM2602 CODEC - I2C"
	depends on I2C
	select SND_SOC_SSM2602
	tristate
	select REGMAP_I2C

config SND_SOC_STA32X
	tristate
+9 −0
Original line number Diff line number Diff line
@@ -41,10 +41,19 @@ static const struct i2c_device_id ssm2602_i2c_id[] = {
};
MODULE_DEVICE_TABLE(i2c, ssm2602_i2c_id);

static const struct of_device_id ssm2602_of_match[] = {
	{ .compatible = "adi,ssm2602", },
	{ .compatible = "adi,ssm2603", },
	{ .compatible = "adi,ssm2604", },
	{ }
};
MODULE_DEVICE_TABLE(of, ssm2602_of_match);

static struct i2c_driver ssm2602_i2c_driver = {
	.driver = {
		.name = "ssm2602",
		.owner = THIS_MODULE,
		.of_match_table = ssm2602_of_match,
	},
	.probe = ssm2602_i2c_probe,
	.remove = ssm2602_i2c_remove,
+7 −0
Original line number Diff line number Diff line
@@ -26,10 +26,17 @@ static int ssm2602_spi_remove(struct spi_device *spi)
	return 0;
}

static const struct of_device_id ssm2602_of_match[] = {
	{ .compatible = "adi,ssm2602", },
	{ }
};
MODULE_DEVICE_TABLE(of, ssm2602_of_match);

static struct spi_driver ssm2602_spi_driver = {
	.driver = {
		.name	= "ssm2602",
		.owner	= THIS_MODULE,
		.of_match_table = ssm2602_of_match,
	},
	.probe		= ssm2602_spi_probe,
	.remove		= ssm2602_spi_remove,