[PATCH v2 2/2] firmware: add exynos acpm driver
Krzysztof Kozlowski
krzk at kernel.org
Wed Oct 23 02:00:04 PDT 2024
On 22/10/2024 09:58, Tudor Ambarus wrote:
>
>>>>
>>>> I also cannot find any piece of code setting several of above, e.g. tx_base
>>>
>>> I'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 I
Where is any assignment to this member?
> don't have access to that to verify. Here are some debug prints made in
> the linux driver:
>
> [ 0.069575][ T1] gs-acpm-ipc 17610000.mailbox:
> exynos_mbox_chan_init ID = 2 poll = 1, mlen = 16, qlen = 5
> [ 0.069927][ T1] gs-acpm-ipc 17610000.mailbox:
> exynos_mbox_chan_init ID = 2 offsets: rx_base = 0x00038290 rx_front =
> 0x0003828c, rx_rear = 0x00038288
> [ 0.070449][ T1] gs-acpm-ipc 17610000.mailbox:
> exynos_mbox_chan_init ID = 2 offsets: tx_base = 0x000382f0 tx_front =
> 0x000382ec, tx_rear = 0x000382e8
>
>
> tx_base contains the SRAM offset of the RX queue used in linux. The
> offset is relative to the base address of the SRAM config data.
>
> tx_base is seen/named from the firmware's point of view, thus named TX.
> I assume the same struct is defined in the acpm firmware.
>
>
> Somewhere below in the linux driver I get the RX ring base address by doing:
>
> rx->base = exynos_acpm_get_iomem_addr(base, &shmem_chan->tx_base);
tx_base is still 0.
>
> where base is the SRAM base address of the channels configuration data.
>
> static void __iomem *exynos_acpm_get_iomem_addr(void __iomem *base,
>
>
> void __iomem *addr)
>
>
> {
>
>
> u32 offset;
>
>
>
>
>
> offset = readl_relaxed(addr);
>
>
> return base + offset;
>
>
> }
>
> Hope this clarifies a bit these struct members.
No, where is tx_base assigned?
Best regards,
Krzysztof
More information about the linux-arm-kernel
mailing list