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 5947b2726beb6 ("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 */
|
/* LPE base */
|
||||||
base = pci_resource_start(pci, desc->resindex_lpe_base) - IRAM_OFFSET;
|
base = pci_resource_start(pci, desc->resindex_lpe_base) - IRAM_OFFSET;
|
||||||
size = pci_resource_len(pci, desc->resindex_lpe_base);
|
size = PCI_BAR_SIZE;
|
||||||
if (size < PCI_BAR_SIZE) {
|
|
||||||
dev_err(sdev->dev, "error: I/O region is too small.\n");
|
|
||||||
return -ENODEV;
|
|
||||||
}
|
|
||||||
|
|
||||||
dev_dbg(sdev->dev, "LPE PHY base at 0x%x size 0x%x", base, 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);
|
sdev->bar[DSP_BAR] = devm_ioremap(sdev->dev, base, size);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user