mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
ASoC: SDCA: Pass device register map from IRQ alloc to handlers
Store a copy of the device register map in the structure for the IRQ handlers. This will allow the individual IRQ handlers access to the device level register map if required. Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.dev> Link: https://patch.msgid.link/20251020155512.353774-6-ckeepax@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
7159816707
commit
390c05f47d
@@ -23,6 +23,7 @@ struct sdca_function_data;
|
|||||||
/**
|
/**
|
||||||
* struct sdca_interrupt - contains information about a single SDCA interrupt
|
* struct sdca_interrupt - contains information about a single SDCA interrupt
|
||||||
* @name: The name of the interrupt.
|
* @name: The name of the interrupt.
|
||||||
|
* @device_regmap: Pointer to the IRQ regmap.
|
||||||
* @component: Pointer to the ASoC component owns the interrupt.
|
* @component: Pointer to the ASoC component owns the interrupt.
|
||||||
* @function: Pointer to the Function that the interrupt is associated with.
|
* @function: Pointer to the Function that the interrupt is associated with.
|
||||||
* @entity: Pointer to the Entity that the interrupt is associated with.
|
* @entity: Pointer to the Entity that the interrupt is associated with.
|
||||||
@@ -35,6 +36,7 @@ struct sdca_function_data;
|
|||||||
struct sdca_interrupt {
|
struct sdca_interrupt {
|
||||||
const char *name;
|
const char *name;
|
||||||
|
|
||||||
|
struct regmap *device_regmap;
|
||||||
struct snd_soc_component *component;
|
struct snd_soc_component *component;
|
||||||
struct sdca_function_data *function;
|
struct sdca_function_data *function;
|
||||||
struct sdca_entity *entity;
|
struct sdca_entity *entity;
|
||||||
|
|||||||
@@ -437,7 +437,7 @@ struct sdca_interrupt_info *sdca_irq_allocate(struct device *sdev,
|
|||||||
struct regmap *regmap, int irq)
|
struct regmap *regmap, int irq)
|
||||||
{
|
{
|
||||||
struct sdca_interrupt_info *info;
|
struct sdca_interrupt_info *info;
|
||||||
int ret;
|
int ret, i;
|
||||||
|
|
||||||
info = devm_kzalloc(sdev, sizeof(*info), GFP_KERNEL);
|
info = devm_kzalloc(sdev, sizeof(*info), GFP_KERNEL);
|
||||||
if (!info)
|
if (!info)
|
||||||
@@ -445,6 +445,9 @@ struct sdca_interrupt_info *sdca_irq_allocate(struct device *sdev,
|
|||||||
|
|
||||||
info->irq_chip = sdca_irq_chip;
|
info->irq_chip = sdca_irq_chip;
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_SIZE(info->irqs); i++)
|
||||||
|
info->irqs[i].device_regmap = regmap;
|
||||||
|
|
||||||
ret = devm_mutex_init(sdev, &info->irq_lock);
|
ret = devm_mutex_init(sdev, &info->irq_lock);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ERR_PTR(ret);
|
return ERR_PTR(ret);
|
||||||
|
|||||||
Reference in New Issue
Block a user