Received: by 2002:a05:7412:a9a2:b0:e2:908c:2ebd with SMTP id o34csp2595684rdh; Mon, 30 Oct 2023 01:51:37 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGcUCl84ATwumdoMg0PgDaSU0Pi8RxIc+c5KCZYFKnWXJ5R+LYhGuq2Xzol3aEJi2raE6kU X-Received: by 2002:a05:6a20:3d92:b0:17e:aa00:ca62 with SMTP id s18-20020a056a203d9200b0017eaa00ca62mr10958626pzi.17.1698655897540; Mon, 30 Oct 2023 01:51:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698655897; cv=none; d=google.com; s=arc-20160816; b=gazv2Ttg7dVMteqt+sZvsui5CbmqCCKOYDZ4cYI307cqJ1RHMCjOvykNWXiCH2+fK4 ImY/yUAb6/fI+K8aGpMvGOjCelroAI3Ezarsc0HqFIWDt3UThmFMg6pnBdnj0uqV6Wrw 12znz6LyMHqksPymo2iGj0sOXguuhMsSbDqRLPgULhYS1AnuCnSbEfJQ3h8omGpTh6TM d7qjPWMbN7KAwF0w4ENfrh3SQYvwbrJnEDAWvvThHTfYHXdp3bIVfxD5uXDGKYD5NRaq /gYuGOzSrZFdSz6SS8UtU42qkFjyWqI9XUmZGEdV48P4HI8wc1sd16ltZWUF2nEErkqe JSgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id; bh=LuYch8bY8VyKREQHgK69YB3eq1zzecYBxZp2ONjS6DY=; fh=J3rSMq2MhNzw4MeKUUoMMXOZ4B7HCQwnn+D7df0IsuI=; b=gJzljZ3/eUeMlQuX0yTMubEx1TGWoV9PKHWNymY5x9tWpbdNzcnlsH9/je3Vn/gqfk yYG+pKwNnbfgSXA/cMP8zZ0+0CfJG6qonSmPJ5qRKoGVEYO6pPswt1heWJc78snbc0Ne vSdeDEVQwRFhqq0pz2F27JPBFpYNR90qvntlKqFRR5WGkXoRNlc8JjDyPI1CTaMW7a25 yOm3yUZYDJI6BsyuMVvUVx+XoE7jGqYzg+HvQf81lqp71b+6TLuykUOq2DQqYq+xZCOx eWemCezXzsgehdhhCVaV7N4uUyIG2sQkI/DT8NRBFrlyf1ilBNis94ZDHpNUuH+pXdFt 2ypg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from pete.vger.email (pete.vger.email. [23.128.96.36]) by mx.google.com with ESMTPS id k62-20020a638441000000b005b8549f737dsi4715224pgd.708.2023.10.30.01.51.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Oct 2023 01:51:37 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) client-ip=23.128.96.36; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id DC16180511A3; Mon, 30 Oct 2023 01:51:34 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232261AbjJ3IvY (ORCPT + 99 others); Mon, 30 Oct 2023 04:51:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40900 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232257AbjJ3IvX (ORCPT ); Mon, 30 Oct 2023 04:51:23 -0400 Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 262859D for ; Mon, 30 Oct 2023 01:51:19 -0700 (PDT) Received: from loongson.cn (unknown [10.20.42.43]) by gateway (Coremail) with SMTP id _____8BxpPCFbj9lVrQ1AA--.39661S3; Mon, 30 Oct 2023 16:51:17 +0800 (CST) Received: from [10.20.42.43] (unknown [10.20.42.43]) by localhost.localdomain (Coremail) with SMTP id AQAAf8Bx7tyBbj9lBuU2AA--.52806S3; Mon, 30 Oct 2023 16:51:15 +0800 (CST) Message-ID: <292f7c44-a19a-4e0d-a73d-ca621ec26813@loongson.cn> Date: Mon, 30 Oct 2023 16:50:49 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 7/8] drm/loongson: Support to infer DC reversion from CPU's PRID value Content-Language: en-US To: Dmitry Baryshkov Cc: Maxime Ripard , Thomas Zimmermann , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org References: <20231029194607.379459-1-suijingfeng@loongson.cn> <20231029194607.379459-8-suijingfeng@loongson.cn> From: Sui Jingfeng In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-CM-TRANSID: AQAAf8Bx7tyBbj9lBuU2AA--.52806S3 X-CM-SenderInfo: xvxlyxpqjiv03j6o00pqjv00gofq/ X-Coremail-Antispam: 1Uk129KBj93XoWxXF13Gr15XrW7AFykKry5WrX_yoWrZrykpF W3AF1FkryDGw12k3sxZr18AF1aya4fXFWfuFs7Kw1qk34DAw17WFyUAF4Y9rZxZryxAry2 vr95KFWY9anIk3gCm3ZEXasCq-sJn29KB7ZKAUJUUUUr529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUU90b4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r1Y6r17M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVCY1x0267AK xVW8Jr0_Cr1UM2kKe7AKxVWUXVWUAwAS0I0E0xvYzxvE52x082IY62kv0487Mc804VCY07 AIYIkI8VC2zVCFFI0UMc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7IYx2IY67AKxVWU XVWUAwAv7VC2z280aVAFwI0_Cr0_Gr1UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvEwI xGrwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwCFI7km07C267AKxVWU XVWUAwC20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67 kF1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY 6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0x vEx4A2jsIE14v26r4j6F4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVj vjDU0xZFpf9x07jbDGOUUUUU= X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Mon, 30 Oct 2023 01:51:35 -0700 (PDT) Hi, On 2023/10/30 07:19, Dmitry Baryshkov wrote: > On Sun, 29 Oct 2023 at 21:46, Sui Jingfeng wrote: >> Due to the fact that the same display IP core has been integrated into >> different platform, there is a need to differentiate them on the runtime. >> The DC in LS7A1000/LS2K1000 has the PCI vendor & device ID of 0x0014:0x7A06 >> The DC in LS7A2000/LS2K2000 has the PCI vendor & device ID of 0x0014:0x7A36 >> >> Because the output ports and host platform of the DC IP varies, without a >> revision information we can't achieve fine-grained controls. The canonical >> approach to do such a thing is to read reversion register from the PCIe >> device. But LS2K1000 SoC was taped out at 2017, it is rather old. Our BIOS >> engineer don't assign a different revision ID to it, probably because of >> ignorance. >> >> LS2K2000 SoC was newly taped on 2023, we strictly force the BIOS engineer >> assign a different revision ID(0x10) to it. But the problem is that it is >> too casual, there is no formal convention or public documented rule >> established. For Loongson LS2K series SoC, the display controller IP is >> taped togather with the CPU core. For Loongson LS7A series bridge chips, >> the display controller IP is taped togather with the bridge chips itself. >> Consider the fact the all Loongson CPU has a unique PRID, this patch choose >> to infer DC reversion from CPU's PRID value. >> >> - LS3A4000/LS3A5000 has 0xC0 as its processor ID. >> - LS2K2000 has 0xB0 as its processor ID. >> - LS2K2000LA has 0xA0 as its processor ID. >> >> The provided approach has no dependency on DT or ACPI, thus is preferfed. >> Besides, this approach can be used to acquire more addtional HW features. >> So the provided method has the potential to bring more benifits. >> >> Signed-off-by: Sui Jingfeng >> --- >> drivers/gpu/drm/loongson/lsdc_drv.h | 2 ++ >> drivers/gpu/drm/loongson/lsdc_probe.c | 35 +++++++++++++++++++++++++++ >> drivers/gpu/drm/loongson/lsdc_probe.h | 2 ++ >> 3 files changed, 39 insertions(+) >> >> diff --git a/drivers/gpu/drm/loongson/lsdc_drv.h b/drivers/gpu/drm/loongson/lsdc_drv.h >> index 46ba9b88a30d..e1f4a2db2a0a 100644 >> --- a/drivers/gpu/drm/loongson/lsdc_drv.h >> +++ b/drivers/gpu/drm/loongson/lsdc_drv.h >> @@ -42,6 +42,8 @@ >> enum loongson_chip_id { >> CHIP_LS7A1000 = 0, >> CHIP_LS7A2000 = 1, >> + CHIP_LS2K1000 = 2, >> + CHIP_LS2K2000 = 3, >> CHIP_LS_LAST, >> }; >> >> diff --git a/drivers/gpu/drm/loongson/lsdc_probe.c b/drivers/gpu/drm/loongson/lsdc_probe.c >> index 48ba69bb8a98..f49b642d8f65 100644 >> --- a/drivers/gpu/drm/loongson/lsdc_probe.c >> +++ b/drivers/gpu/drm/loongson/lsdc_probe.c >> @@ -54,3 +54,38 @@ unsigned int loongson_cpu_get_prid(u8 *imp, u8 *rev) >> >> return prid; >> } >> + >> +enum loongson_chip_id loongson_chip_id_fixup(enum loongson_chip_id chip_id) >> +{ >> + u8 impl; >> + >> + if (loongson_cpu_get_prid(&impl, NULL)) { >> + /* >> + * LS2K2000 only has the LoongArch edition. >> + */ >> + if (chip_id == CHIP_LS7A2000) { >> + if (impl == LOONGARCH_CPU_IMP_LS2K2000) >> + return CHIP_LS2K2000; >> + } >> + >> + /* >> + * LS2K1000 has the LoongArch edition(with two LA264 CPU core) >> + * and the Mips edition(with two mips64r2 CPU core), Only the >> + * instruction set of the CPU are changed, the peripheral >> + * devices are basically same. >> + */ >> + if (chip_id == CHIP_LS7A1000) { >> +#if defined(__loongarch__) >> + if (impl == LOONGARCH_CPU_IMP_LS2K1000) >> + return CHIP_LS2K1000; >> +#endif >> + >> +#if defined(__mips__) >> + if (impl == LOONGSON_CPU_MIPS_IMP_LS2K) >> + return CHIP_LS2K1000; >> +#endif > Can you drop the ifdefs here? The code blocks do not seem to conflict > with each other. OK, no problem. Will be fixed at the next version. >> + } >> + } >> + >> + return chip_id; >> +} >> diff --git a/drivers/gpu/drm/loongson/lsdc_probe.h b/drivers/gpu/drm/loongson/lsdc_probe.h >> index 8bb6de2e3c64..8c630c5c90ce 100644 >> --- a/drivers/gpu/drm/loongson/lsdc_probe.h >> +++ b/drivers/gpu/drm/loongson/lsdc_probe.h >> @@ -9,4 +9,6 @@ >> /* Helpers for chip detection */ >> unsigned int loongson_cpu_get_prid(u8 *impl, u8 *rev); >> >> +enum loongson_chip_id loongson_chip_id_fixup(enum loongson_chip_id chip_id); >> + >> #endif >> -- >> 2.34.1 >> >