Unverified Commit 79f4bde8 authored by Mark Brown's avatar Mark Brown
Browse files

ASoC: mt8188: add memory-region support

Merge series from Trevor Wu <trevor.wu@mediatek.com>:

This series introduces support for memory-region, allowing afe memif to
utilize the region specified in dts.
parents 860c9ef0 e3326e3b
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -25,6 +25,12 @@ properties:
  reset-names:
    const: audiosys

  memory-region:
    maxItems: 1
    description: |
      Shared memory region for AFE memif.  A "shared-dma-pool".
      See ../reserved-memory/reserved-memory.yaml for details.

  mediatek,topckgen:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: The phandle of the mediatek topckgen controller
@@ -176,6 +182,7 @@ examples:
        interrupts = <GIC_SPI 822 IRQ_TYPE_LEVEL_HIGH 0>;
        resets = <&watchdog 14>;
        reset-names = "audiosys";
        memory-region = <&snd_dma_mem_reserved>;
        mediatek,topckgen = <&topckgen>;
        mediatek,infracfg = <&infracfg_ao>;
        power-domains = <&spm 13>; //MT8188_POWER_DOMAIN_AUDIO
+6 −2
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_platform.h>
#include <linux/of_reserved_mem.h>
#include <linux/pm_runtime.h>
#include <linux/soc/mediatek/infracfg.h>
#include <linux/reset.h>
@@ -3193,11 +3194,15 @@ static int mt8188_afe_pcm_dev_probe(struct platform_device *pdev)
{
	struct mtk_base_afe *afe;
	struct mt8188_afe_private *afe_priv;
	struct device *dev;
	struct device *dev = &pdev->dev;
	struct reset_control *rstc;
	struct regmap *infra_ao;
	int i, irq_id, ret;

	ret = of_reserved_mem_device_init(dev);
	if (ret)
		dev_dbg(dev, "failed to assign memory region: %d\n", ret);

	ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(33));
	if (ret)
		return ret;
@@ -3213,7 +3218,6 @@ static int mt8188_afe_pcm_dev_probe(struct platform_device *pdev)

	afe_priv = afe->platform_priv;
	afe->dev = &pdev->dev;
	dev = afe->dev;

	afe->base_addr = devm_platform_ioremap_resource(pdev, 0);
	if (IS_ERR(afe->base_addr))