Re: [PATCH v2 2/2] firmware: add exynos acpm driver
From: Tudor Ambarus <tudor.ambarus@linaro.org>
Date: 2024-10-23 10:02:10
Also in:
linux-samsung-soc, lkml
On 10/23/24 10:53 AM, Tudor Ambarus wrote:
On 10/23/24 10:00 AM, Krzysztof Kozlowski wrote:quoted
quoted
quoted
quoted
quoted
I also cannot find any piece of code setting several of above, e.g. tx_baseI'm not writing any SRAM configuration fields, these fields are used to read/retrive the channel parameters from SRAM.I meany tx_base is always 0. Where is this property set? Ever?It's not zero. My assumption is it is set in the acpm firmware, but IWhere is any assignment to this member?In probe() you'll see that exynos_acpm->shmem is a pointer in SRAM to a struct exynos_acpm_shmem __iomem *shmem; Then in: static int exynos_acpm_chans_init() { struct exynos_acpm_shmem_chan __iomem *shmem_chans, *shmem_chan; struct exynos_acpm_shmem __iomem *shmem = exynos_acpm->shmem; ... shmem_chans = exynos_acpm_get_iomem_addr(exynos_acpm->sram_base, &shmem->chans); ... } shmem->chans is not initialized (or tx_base). I'm using its address in SRAM (&shmem->chans) which I then read it with readl_relaxed(). I guess one can do the same using offsetof: shmem_chans = readl_realaxed(shmem + offsetof(struct exynos_acpm_shmem, chans));
I forgot to add the sram_base, the counter example should have been: shmem_chans = exynos_acpm->sram_base + readl_realaxed(shmem + offsetof(struct exynos_acpm_shmem, chans));