mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
ASoC: SOF: Intel: pci-tng: revert invalid bar size setting
The logic for the ioremap is to find the resource index 3 (IRAM) and
infer the BAR address by subtracting the IRAM offset. The BAR size
defined in hardware specifications is 2MB.
The commit 5947b2726b
("ASoC: SOF: Intel: Check the bar size before
remapping") tried to find the BAR size by querying the resource length
instead of a pre-canned value, but by requesting the size for index 3
it only gets the size of the IRAM. That's obviously wrong and prevents
the probe from proceeding.
This commit attempted to fix an issue in a fuzzing/simulated
environment but created another on actual devices, so the best course
of action is to revert that change.
Reported-by: Ferry Toth <fntoth@gmail.com>
Tested-by: Ferry Toth <fntoth@gmail.com> (Intel Edison-Arduino)
Link: https://github.com/thesofproject/linux/issues/3901
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20230307095341.3222-1-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
6ba8ddf86a
commit
ca09e2a351
@ -75,11 +75,7 @@ static int tangier_pci_probe(struct snd_sof_dev *sdev)
|
||||
|
||||
/* LPE base */
|
||||
base = pci_resource_start(pci, desc->resindex_lpe_base) - IRAM_OFFSET;
|
||||
size = pci_resource_len(pci, desc->resindex_lpe_base);
|
||||
if (size < PCI_BAR_SIZE) {
|
||||
dev_err(sdev->dev, "error: I/O region is too small.\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
size = PCI_BAR_SIZE;
|
||||
|
||||
dev_dbg(sdev->dev, "LPE PHY base at 0x%x size 0x%x", base, size);
|
||||
sdev->bar[DSP_BAR] = devm_ioremap(sdev->dev, base, size);
|
||||
|
Loading…
Reference in New Issue
Block a user