mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
301940020a
A moderately busy release for SPI, the main core update was the merging of support for multiple chip selects, used in some flash configurations. There were also big overhauls for the AXI SPI Engine and PL022 drivers, plus some new device support for ST. There's a few patches for other trees, API updates to allow the multiple chip select support and one of the naming modernisations touched a controller embedded in the USB code. - Support for multiple chip selects. - A big overhaul for the AXI SPI engine driver, modernising it and adding a bunch of new features. - Modernisation of the PL022 driver, fixing some issues with submitting messages while in atomic context in the process. - Many drivers were converted to use new APIs which avoid outdated terminology for devices and controllers. - Support for ST Microelectronics STM32F7 and STM32MP25, and Renesas RZ/Five. -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEreZoqmdXGLWf4p/qJNaLcl1Uh9AFAmWbHmMACgkQJNaLcl1U h9CpSwf+O981469g1twyEpq5PJlNgdXmrKUpezcC18X4DLXmlf5hoCsHUFIU2DuX oBZuUQVp1KaEzJ4LX1giAOTuhfwPAItGR+/JMs6VxT/V0MMCHaNYcU5zLHXacDFL URU7hyyhxUp9PzGNI/IEQH2DPv3QVX8Z1CVQQNQpnTsvbpBEF/osxB3SdWg65Y4J B9nEW5hnyDsjxQVzjwCMFsy1vJeaBkP++zdPhPGE4RaNcweX+hksVRWVJ3DqUuJC u4IyO5Hmduqmyjyc7MEV6lekecnyHc72WIzFXJpy0FOW0CstOQD59D5Fnbdvbb9i mm3IJ1Vh/oepZBNPAmHCPqMEAqr5ZQ== =49Kh -----END PGP SIGNATURE----- Merge tag 'spi-v6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi Pull spi updates from Mark Brown: "A moderately busy release for SPI, the main core update was the merging of support for multiple chip selects, used in some flash configurations. There were also big overhauls for the AXI SPI Engine and PL022 drivers, plus some new device support for ST. There's a few patches for other trees, API updates to allow the multiple chip select support and one of the naming modernisations touched a controller embedded in the USB code. - Support for multiple chip selects. - A big overhaul for the AXI SPI engine driver, modernising it and adding a bunch of new features. - Modernisation of the PL022 driver, fixing some issues with submitting messages while in atomic context in the process. - Many drivers were converted to use new APIs which avoid outdated terminology for devices and controllers. - Support for ST Microelectronics STM32F7 and STM32MP25, and Renesas RZ/Five" * tag 'spi-v6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: (83 commits) spi: stm32: add st,stm32mp25-spi compatible supporting STM32MP25 soc dt-bindings: spi: stm32: add st,stm32mp25-spi compatible spi: stm32: use dma_get_slave_caps prior to configuring dma channel spi: axi-spi-engine: fix struct member doc warnings spi: pl022: update description of internal_cs_control() spi: pl022: delete description of cur_msg spi: dw: Remove Intel Thunder Bay SOC support spi: dw: Remove Intel Thunder Bay SOC support spi: sh-msiof: Enforce fixed DTDL for R-Car H3 spi: ljca: switch to use devm_spi_alloc_host() spi: cs42l43: switch to use devm_spi_alloc_host() spi: zynqmp-gqspi: switch to use modern name spi: zynq-qspi: switch to use modern name spi: xtensa-xtfpga: switch to use modern name spi: xlp: switch to use modern name spi: xilinx: switch to use modern name spi: xcomm: switch to use modern name spi: uniphier: switch to use modern name spi: topcliff-pch: switch to use modern name spi: wpcm-fiu: switch to use devm_spi_alloc_host() ...
73 lines
1.8 KiB
C
73 lines
1.8 KiB
C
// SPDX-License-Identifier: GPL-2.0-only
|
|
//
|
|
// CS35L56 HDA audio driver SPI binding
|
|
//
|
|
// Copyright (C) 2023 Cirrus Logic, Inc. and
|
|
// Cirrus Logic International Semiconductor Ltd.
|
|
|
|
#include <linux/module.h>
|
|
#include <linux/regmap.h>
|
|
#include <linux/spi/spi.h>
|
|
|
|
#include "cs35l56_hda.h"
|
|
|
|
static int cs35l56_hda_spi_probe(struct spi_device *spi)
|
|
{
|
|
struct cs35l56_hda *cs35l56;
|
|
int ret;
|
|
|
|
cs35l56 = devm_kzalloc(&spi->dev, sizeof(*cs35l56), GFP_KERNEL);
|
|
if (!cs35l56)
|
|
return -ENOMEM;
|
|
|
|
cs35l56->base.dev = &spi->dev;
|
|
|
|
#ifdef CS35L56_WAKE_HOLD_TIME_US
|
|
cs35l56->base.can_hibernate = true;
|
|
#endif
|
|
cs35l56->base.regmap = devm_regmap_init_spi(spi, &cs35l56_regmap_spi);
|
|
if (IS_ERR(cs35l56->base.regmap)) {
|
|
ret = PTR_ERR(cs35l56->base.regmap);
|
|
dev_err(cs35l56->base.dev, "Failed to allocate register map: %d\n",
|
|
ret);
|
|
return ret;
|
|
}
|
|
|
|
ret = cs35l56_hda_common_probe(cs35l56, spi_get_chipselect(spi, 0));
|
|
if (ret)
|
|
return ret;
|
|
ret = cs35l56_irq_request(&cs35l56->base, spi->irq);
|
|
if (ret < 0)
|
|
cs35l56_hda_remove(cs35l56->base.dev);
|
|
|
|
return ret;
|
|
}
|
|
|
|
static void cs35l56_hda_spi_remove(struct spi_device *spi)
|
|
{
|
|
cs35l56_hda_remove(&spi->dev);
|
|
}
|
|
|
|
static const struct spi_device_id cs35l56_hda_spi_id[] = {
|
|
{ "cs35l56-hda", 0 },
|
|
{}
|
|
};
|
|
|
|
static struct spi_driver cs35l56_hda_spi_driver = {
|
|
.driver = {
|
|
.name = "cs35l56-hda",
|
|
.pm = &cs35l56_hda_pm_ops,
|
|
},
|
|
.id_table = cs35l56_hda_spi_id,
|
|
.probe = cs35l56_hda_spi_probe,
|
|
.remove = cs35l56_hda_spi_remove,
|
|
};
|
|
module_spi_driver(cs35l56_hda_spi_driver);
|
|
|
|
MODULE_DESCRIPTION("HDA CS35L56 SPI driver");
|
|
MODULE_IMPORT_NS(SND_HDA_SCODEC_CS35L56);
|
|
MODULE_IMPORT_NS(SND_SOC_CS35L56_SHARED);
|
|
MODULE_AUTHOR("Richard Fitzgerald <rf@opensource.cirrus.com>");
|
|
MODULE_AUTHOR("Simon Trimmer <simont@opensource.cirrus.com>");
|
|
MODULE_LICENSE("GPL");
|