|
From: | Mark Cave-Ayland |
Subject: | Re: [PATCH v3] dp8393x: don't force 32-bit register access |
Date: | Mon, 5 Jul 2021 20:33:37 +0100 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 |
On 05/07/2021 08:52, Mark Cave-Ayland wrote:
I think the problem is because of the interaction of .impl.max_access_size = 2 and the it_shift property specifying a stride of 4 bytes: when the 4 byte access is split into 2 x 2 byte accesses then for a read reg = addr >> s->it_shift causes the second access to be a duplicate of the first rather than containing zeros.
After some more experiments I'm fairly confident this is the issue: if you rely on applying it_shift within the MMIO access itself then you lose the zero extension of the result to the access size as done by the memory API.
I'll come up with a new version which I shall send as part of an updated and tested v2 of Phil's housekeeping patchset, since the endian changes were really helpful when studying the descriptors.
ATB, Mark.
[Prev in Thread] | Current Thread | [Next in Thread] |