[PATCH] drm/ast: Fix ARM compatibility
Thomas Zimmermann
tzimmermann at suse.de
Tue Apr 18 07:24:40 UTC 2023
Hi
Am 18.04.23 um 03:23 schrieb Jammy Huang:
> Hi Thomas,
>
> The Intel(x86) CPUs have a separate address space for "IO", but the ARM
> architecture only has "memory", so all IO devices are accessed as if
> they were memory. Which means ARM does not support isolated IO. Here is
> a related discussion on ARM's forum.
>
> https://community.arm.com/support-forums/f/architectures-and-processors-forum/52046/how-to-read-write-an-i-o-port-in-aarch64
>
> Thus, we want to adapt MMIO only after this patch.
What I mean is that there's a comment that says "assume the chip has
MMIO enabled by default (rev 0x20 and higher)". We also support revs
before 0x20. What happens to them?
Best regards
Thomas
>
> On 2023/4/17 下午 07:51, Thomas Zimmermann wrote:
>> Hi
>>
>> Am 07.04.23 um 04:09 schrieb Jammy Huang:
>>> Hi Thomas,
>>>
>>> Could you help review this patch??
>>>
>>> We met some problem on nvidia's ARM platfrom and need this patch to
>>> fix it.
>>>
>>> On 2023/3/2 上午 10:19, Jammy Huang wrote:
>>>> ARM architecture only has 'memory', so all devices are accessed by
>>>> MMIO.
>>>>
>>>> Signed-off-by: Jammy Huang <jammy_huang at aspeedtech.com>
>>>> ---
>>>> drivers/gpu/drm/ast/ast_main.c | 17 +----------------
>>>> 1 file changed, 1 insertion(+), 16 deletions(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/ast/ast_main.c
>>>> b/drivers/gpu/drm/ast/ast_main.c
>>>> index 794ffd4a29c5..f86d01e9f024 100644
>>>> --- a/drivers/gpu/drm/ast/ast_main.c
>>>> +++ b/drivers/gpu/drm/ast/ast_main.c
>>>> @@ -424,22 +424,7 @@ struct ast_device *ast_device_create(const
>>>> struct drm_driver *drv,
>>>> if (!ast->regs)
>>>> return ERR_PTR(-EIO);
>>>> - /*
>>>> - * If we don't have IO space at all, use MMIO now and
>>>> - * assume the chip has MMIO enabled by default (rev 0x20
>>>> - * and higher).
>>>> - */
>>>> - if (!(pci_resource_flags(pdev, 2) & IORESOURCE_IO)) {
>>>> - drm_info(dev, "platform has no IO space, trying MMIO\n");
>>>> - ast->ioregs = ast->regs + AST_IO_MM_OFFSET;
>>>> - }
>>>> -
>>>> - /* "map" IO regs if the above hasn't done so already */
>>>> - if (!ast->ioregs) {
>>>> - ast->ioregs = pcim_iomap(pdev, 2, 0);
>>
>> What happens on systems that use this branch?
>>
>> Best regards
>> Thomas
>>
>>>> - if (!ast->ioregs)
>>>> - return ERR_PTR(-EIO);
>>>> - }
>>>> + ast->ioregs = ast->regs + AST_IO_MM_OFFSET;
>>>> ast_detect_chip(dev, &need_post);
>>>>
>>>> base-commit: 254986e324add8a30d0019c6da59f81adc8b565f
>>>
>>
> --
> Best Regards
> Jammy
>
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20230418/2d951335/attachment.sig>
More information about the dri-devel
mailing list