From nobody Tue Dec 16 21:18:48 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0F8032F60DD for ; Thu, 11 Dec 2025 09:02:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765443782; cv=none; b=B7G9qB9nY+0hjnECAJvkURl78TpNC2b24wkIRgYD8d6mvLh6BOpErp7RyfMH7MA/xF8L3qiBCwh971Hiv22ewMxtq+FeQ8S8vFxIyQg8D9bX8kNLmJimOUKMsUdYw1R0RAwxODa2iom7AVi3E+SkTQyO6I3URk69efuBz297nDM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765443782; c=relaxed/simple; bh=LC6+YJ+r4Oa4PWxB06n5WJfG0upbybA1CX3fP7BHWJs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=unuktjY08XWQxbR7/1Bgd3kxzxEI9Ck0lq8J02xjabTeJmLfqXYoJQZPIVSlcGzUyKuuI/a1s+t0de3lbwEkjp3CRBGaCCsa28v4OKuk0XcwZiE6wf0MPwh63sSyt49mFyb6CKUiYhVxxbViHExzFJSAhVxj6608wtdf0xrNkRc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=PITZM+fb; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=T6YQ/r8/; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="PITZM+fb"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="T6YQ/r8/" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BB8gbAV1352150 for ; Thu, 11 Dec 2025 09:02:59 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= +NgoTJmSdoAfs6QQOK57IwUDwNIJjJ23MvoLDcN9wIM=; b=PITZM+fbzzYAgRQV gMkpjWAjnJrz9vo3jNp9vuqZqeNzbBuYx8aDainS3XlwRWMMW4t/FPLanC0/HMjJ UrBmYBeM5O7ShRtEjBY/vrdYxI4k7aZonixL0mx7xszzLrHxmWzRWbkSu/eSOIFW HJzKevQdY+WwfJK2LVldE5C5t7O84qokiDOnR0ZtuD3doXX784X3yAIRXG166rdd 46cWbnf6Bh4lkPWKrp7TtGW7uJAkU03npFSJViZDntyJktV2fG2qd/3++RnyiOS9 eOfU+irKSK7R+1XVEcor6Vl2X0yH0RmGmnBtwFTnUKH8jNZb6GxIwW3ZNCmZFd4R RRizFw== Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4aybhpawhw-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 11 Dec 2025 09:02:58 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-341616a6fb7so836468a91.0 for ; Thu, 11 Dec 2025 01:02:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1765443778; x=1766048578; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=+NgoTJmSdoAfs6QQOK57IwUDwNIJjJ23MvoLDcN9wIM=; b=T6YQ/r8/KqXeH9UwI8NuZPDCczSbwV2MJpsdrfxJUOs24l3xbhl2uf6x/+yUYw6mw0 J/j6CHUwj633tM+VQKWNCpzAOoVrkfPwxGruAOTInCP0oKzZvVrYC26QgJYGcjNbzv3C VXHRhnKa65OZZhH4KErgYMyzOYy3ct1JwMIBqSwqNjsTmCPFhTalRAvQqlTaUjdanqNG Nm0J6/0rdZVh2IdhsV3hPBk3tkxRLt1DJrR6JHCPiBVoiXIkbYwI3sNPUZMw0VON5067 oiJesinGdfLVZ9fcBLTRN/k8YrM9tOtloqkyfYjiWq5cK07mdSBeNgyY/fYdTKf8QB8b Hmww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765443778; x=1766048578; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=+NgoTJmSdoAfs6QQOK57IwUDwNIJjJ23MvoLDcN9wIM=; b=jAzk1GxW0cq0qd0psJCrQapPvcvIr+TOR2eaScUcXFtcmNEQ3HSt/mAE2QXwWEQRjl VYO4Ue8X+qDfqjsmXVVbJC+LuU3aosd8LjYR1yDqw5lvrI3w1uatQlUU19rCGZRk07Ef oNA/cKit98W+Zl4EVKGv1NZ+qdOD7fjE4n8EDZCZMAon8Y7prro2MkEHdtkdJbnAjy1e FFb7XJyRmKaJLtJ9lkbIPoHnRlQnFtyExGufaZf2/gnN+4jU7WPX1wXboDE3gQQDAc7w g9/dwbYIX772tIf8nKdP+3zhvvvXMA2nGCBe7M3dNYojd1zNs7gFbAf1UGMqpIEZvl71 2S4w== X-Forwarded-Encrypted: i=1; AJvYcCVTN1op/c1+MWt9PSBjamIZrkZ3Cwhw2vel2iIWK1quqfNFvZFhUcX2EpCFebT+jAsLC4lalb4ttTvcF7U=@vger.kernel.org X-Gm-Message-State: AOJu0Yx7b1JRseEqyeUlC8uXZbCl0Y8f/0aFG0kmGQTxBXh4kTx3G2d2 IxONgnLrCOquksH1cz6Q45dmJnG9EvGm4AeuMOUCkO00i8l9S7eYPBK28dBEfuirOIiiGKUE8Wd wzFsfWGCbrpZTmol0D5FdZJM2ymxONZ4FDQsIN+wCOstwAEhZELud6dRHvJIrv6Qpsn4= X-Gm-Gg: AY/fxX4jldaWLP2f6L/ViN52VYRIqnRqxzIPCMbkEwxcSdHF8qIzSISGW/GFucBaWiM ptEz+xFKSlhBCHYWydoquKGJzv/4EaGIZwMG+4Z8KpemoejV7to2GY3k5KOZ5mI2zT35Wr2gN12 zYDoIElJJCV5VeBvAOXt61Jco8mz1R4ySxRU/Qy5BtMw6YjArffQ9PaC4gkMTegiaE5pgm/kYh2 tEOxAx+DPNaW+H5iBUUZ3LLXfj3/gTfCNNOUKsikglh8MMk/md/oTkS8wlRZTCYRe9skPdNuZW0 tLE5PsxskJT3wntAyv58iSxr8NOaXvNbLhXOpmWy0mzh76D4Hih4hXV6WrU/tNRLMTEo8FOsj4C sywqGlE8DG8OXFYt3BZ5nCDVqn/+fBz8CVMc7FDaRtks8L/VHhFP7ggLYx8F1chjCwdoLPm+b55 OpvCYnha2hWWbW2M4MZsi1zPOjKYKGxQ== X-Received: by 2002:a05:6a20:a110:b0:366:14b0:4b0f with SMTP id adf61e73a8af0-366e3de7b04mr5898669637.75.1765443777613; Thu, 11 Dec 2025 01:02:57 -0800 (PST) X-Google-Smtp-Source: AGHT+IHRRruCQfp9AbvMcWtmH5QzkjuM7BYpunQ0FdzkcV1+6D7ZrkkUw39KCB1GqEam4QQI5pVAEw== X-Received: by 2002:a05:6a20:a110:b0:366:14b0:4b0f with SMTP id adf61e73a8af0-366e3de7b04mr5898628637.75.1765443777102; Thu, 11 Dec 2025 01:02:57 -0800 (PST) Received: from hu-pankpati-blr.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com. [103.229.18.19]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-34a92860032sm1273780a91.11.2025.12.11.01.02.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Dec 2025 01:02:56 -0800 (PST) From: Pankaj Patil Date: Thu, 11 Dec 2025 14:32:36 +0530 Subject: [PATCH v3 2/2] soc: qcom: llcc-qcom: Add support for Glymur Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251211-glymur_llcc_enablement-v3-2-43457b354b0d@oss.qualcomm.com> References: <20251211-glymur_llcc_enablement-v3-0-43457b354b0d@oss.qualcomm.com> In-Reply-To: <20251211-glymur_llcc_enablement-v3-0-43457b354b0d@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Conor Dooley , Jonathan Cameron , Rob Herring , Krzysztof Kozlowski Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Pankaj Patil , rajendra.nayak@oss.qualcomm.com, sibi.sankar@oss.qualcomm.com, Konrad Dybcio X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1765443765; l=6824; i=pankaj.patil@oss.qualcomm.com; s=20251121; h=from:subject:message-id; bh=LC6+YJ+r4Oa4PWxB06n5WJfG0upbybA1CX3fP7BHWJs=; b=ExiET/4JVUY5qyR5XcDjzS6gIT7OM0fOTglFMc0os4WkCZ/J2HSLLZbIJ4gU3HcQkq0M+WHXz zE26cZskaVRCmetsjrIcavKL4rfa1G/+YkkUeqsTXiYWsXIwnHczCpB X-Developer-Key: i=pankaj.patil@oss.qualcomm.com; a=ed25519; pk=pWpEq/tlX6TaKH1UQolvxjRD+Vdib/sEkb8bH8AL6gc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjExMDA2NyBTYWx0ZWRfX6jt9EsDkFZRO kJ85z1MxoUW943ldWH0CYhIDUQJzXqO2LeORwCePp1IS9zB405Hwe2ip9jMmRaIfsCb7kGCfHeS 3P1sRc7n5lefdmp8HFI1I9t0IL4cOZFrQrygzo6n8d9WtaNXuBvTWSL6vzYC14cf2SuAsUZB/NT x6QIFktqDxYSGPDygErPttt6CqiQQ6UPFynJxg5fx2DAzDG7HKjU8KnOAkmIeFA0U6wDZlVAmx8 vZnqZcKmD9QpPB4LDTKqityAgWYElkmjYM9zBUDFuRxV46FriMIOCtBSos6ILOlcLujwh2LjEbr dGYSieVmLWXidJ1m7ck2An7tC4TEMEpDu3Ypbaw4BB+zMtr7PshP4rIskZev6jVNnfMIGzjYvHw nakgXYSFfK9NjenYDZMHnxOGgKxRlA== X-Proofpoint-ORIG-GUID: krbc7Pd467ZfT9UURkFvGX0_wWThTbU_ X-Proofpoint-GUID: krbc7Pd467ZfT9UURkFvGX0_wWThTbU_ X-Authority-Analysis: v=2.4 cv=LJ9rgZW9 c=1 sm=1 tr=0 ts=693a88c2 cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=7DQyclDd9yYmhgmT4UAA:9 a=QEXdDO2ut3YA:10 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-10_03,2025-12-09_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 spamscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 lowpriorityscore=0 bulkscore=0 malwarescore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512110067 Add system cache table(SCT) and configs for Glymur SoC Updated the list of usecase id's to enable additional clients for Glymur Reviewed-by: Konrad Dybcio Signed-off-by: Pankaj Patil --- drivers/soc/qcom/llcc-qcom.c | 207 +++++++++++++++++++++++++++++++++= ++++ include/linux/soc/qcom/llcc-qcom.h | 4 + 2 files changed, 211 insertions(+) diff --git a/drivers/soc/qcom/llcc-qcom.c b/drivers/soc/qcom/llcc-qcom.c index 13e174267294..1abfda7a58f2 100644 --- a/drivers/soc/qcom/llcc-qcom.c +++ b/drivers/soc/qcom/llcc-qcom.c @@ -182,6 +182,197 @@ enum llcc_reg_offset { LLCC_TRP_WRS_CACHEABLE_EN, }; =20 +static const struct llcc_slice_config glymur_data[] =3D { + { + .usecase_id =3D LLCC_CPUSS, + .slice_id =3D 1, + .max_cap =3D 7680, + .priority =3D 1, + .bonus_ways =3D 0xFFF, + .res_ways =3D 0x0, + .vict_prio =3D true, + .activate_on_init =3D true, + }, { + .usecase_id =3D LLCC_VIDSC0, + .slice_id =3D 2, + .max_cap =3D 512, + .priority =3D 3, + .fixed_size =3D true, + .bonus_ways =3D 0xFFF, + .res_ways =3D 0x0, + .vict_prio =3D true, + }, { + .usecase_id =3D LLCC_AUDIO, + .slice_id =3D 6, + .max_cap =3D 1024, + .priority =3D 1, + .fixed_size =3D true, + .bonus_ways =3D 0xFFF, + .res_ways =3D 0x0, + .vict_prio =3D true, + }, { + .usecase_id =3D LLCC_VIDSC1, + .slice_id =3D 4, + .max_cap =3D 512, + .priority =3D 3, + .fixed_size =3D true, + .bonus_ways =3D 0xFFF, + .res_ways =3D 0x0, + .vict_prio =3D true, + }, { + .usecase_id =3D LLCC_CMPT, + .slice_id =3D 10, + .max_cap =3D 7680, + .priority =3D 1, + .fixed_size =3D true, + .bonus_ways =3D 0xFFF, + .res_ways =3D 0x0, + .vict_prio =3D true, + }, { + .usecase_id =3D LLCC_GPUHTW, + .slice_id =3D 11, + .max_cap =3D 512, + .priority =3D 1, + .fixed_size =3D true, + .bonus_ways =3D 0xFFF, + .res_ways =3D 0x0, + .vict_prio =3D true, + }, { + .usecase_id =3D LLCC_GPU, + .slice_id =3D 9, + .max_cap =3D 7680, + .priority =3D 1, + .bonus_ways =3D 0xFFF, + .res_ways =3D 0x0, + .write_scid_en =3D true, + .write_scid_cacheable_en =3D true, + .stale_en =3D true, + .vict_prio =3D true, + }, { + .usecase_id =3D LLCC_MMUHWT, + .slice_id =3D 18, + .max_cap =3D 768, + .priority =3D 1, + .fixed_size =3D true, + .bonus_ways =3D 0xFFF, + .res_ways =3D 0x0, + .vict_prio =3D true, + .activate_on_init =3D true, + }, { + .usecase_id =3D LLCC_AUDHW, + .slice_id =3D 22, + .max_cap =3D 1024, + .priority =3D 1, + .fixed_size =3D true, + .bonus_ways =3D 0xFFF, + .res_ways =3D 0x0, + .vict_prio =3D true, + }, { + .usecase_id =3D LLCC_CVP, + .slice_id =3D 8, + .max_cap =3D 64, + .priority =3D 3, + .fixed_size =3D true, + .bonus_ways =3D 0xFFF, + .res_ways =3D 0x0, + .vict_prio =3D true, + }, { + .usecase_id =3D LLCC_WRCACHE, + .slice_id =3D 31, + .max_cap =3D 1536, + .priority =3D 1, + .fixed_size =3D true, + .bonus_ways =3D 0xFFF, + .res_ways =3D 0x0, + .vict_prio =3D true, + .activate_on_init =3D true, + }, { + .usecase_id =3D LLCC_CMPTHCP, + .slice_id =3D 17, + .max_cap =3D 256, + .priority =3D 3, + .fixed_size =3D true, + .bonus_ways =3D 0xFFF, + .res_ways =3D 0x0, + .vict_prio =3D true, + }, { + .usecase_id =3D LLCC_LCPDARE, + .slice_id =3D 30, + .max_cap =3D 768, + .priority =3D 3, + .fixed_size =3D true, + .bonus_ways =3D 0xFFF, + .res_ways =3D 0x0, + .alloc_oneway_en =3D true, + .vict_prio =3D true, + .activate_on_init =3D true, + }, { + .usecase_id =3D LLCC_AENPU, + .slice_id =3D 3, + .max_cap =3D 3072, + .priority =3D 1, + .fixed_size =3D true, + .bonus_ways =3D 0xFFF, + .res_ways =3D 0x0, + .cache_mode =3D 2, + .vict_prio =3D true, + }, { + .usecase_id =3D LLCC_ISLAND1, + .slice_id =3D 12, + .max_cap =3D 5632, + .priority =3D 7, + .fixed_size =3D true, + .bonus_ways =3D 0x0, + .res_ways =3D 0x7FF, + .vict_prio =3D true, + }, { + .usecase_id =3D LLCC_VIDVSP, + .slice_id =3D 28, + .max_cap =3D 256, + .priority =3D 3, + .fixed_size =3D true, + .bonus_ways =3D 0xFFF, + .res_ways =3D 0x0, + .vict_prio =3D true, + }, { + .usecase_id =3D LLCC_OOBM_NS, + .slice_id =3D 5, + .max_cap =3D 512, + .priority =3D 1, + .bonus_ways =3D 0xFFF, + .res_ways =3D 0x0, + .vict_prio =3D true, + }, { + .usecase_id =3D LLCC_CPUSS_OPP, + .slice_id =3D 32, + .max_cap =3D 0, + .fixed_size =3D true, + .bonus_ways =3D 0x0, + .res_ways =3D 0x0, + .vict_prio =3D true, + .activate_on_init =3D true, + }, { + .usecase_id =3D LLCC_PCIE_TCU, + .slice_id =3D 19, + .max_cap =3D 256, + .priority =3D 1, + .fixed_size =3D true, + .bonus_ways =3D 0xFFF, + .res_ways =3D 0x0, + .vict_prio =3D true, + .activate_on_init =3D true, + }, { + .usecase_id =3D LLCC_VIDSC_VSP1, + .slice_id =3D 29, + .max_cap =3D 256, + .priority =3D 3, + .fixed_size =3D true, + .bonus_ways =3D 0xFFF, + .res_ways =3D 0x0, + .vict_prio =3D true, + } +}; + static const struct llcc_slice_config ipq5424_data[] =3D { { .usecase_id =3D LLCC_CPUSS, @@ -3872,6 +4063,16 @@ static const struct qcom_llcc_config kaanapali_cfg[]= =3D { }, }; =20 +static const struct qcom_llcc_config glymur_cfg[] =3D { + { + .sct_data =3D glymur_data, + .size =3D ARRAY_SIZE(glymur_data), + .reg_offset =3D llcc_v6_reg_offset, + .edac_reg_offset =3D &llcc_v2_1_edac_reg_offset, + .no_edac =3D true, + }, +}; + static const struct qcom_llcc_config qcs615_cfg[] =3D { { .sct_data =3D qcs615_data, @@ -4103,6 +4304,11 @@ static const struct qcom_sct_config kaanapali_cfgs = =3D { .num_config =3D ARRAY_SIZE(kaanapali_cfg), }; =20 +static const struct qcom_sct_config glymur_cfgs =3D { + .llcc_config =3D glymur_cfg, + .num_config =3D ARRAY_SIZE(glymur_cfg), +}; + static const struct qcom_sct_config qcs615_cfgs =3D { .llcc_config =3D qcs615_cfg, .num_config =3D ARRAY_SIZE(qcs615_cfg), @@ -4941,6 +5147,7 @@ static int qcom_llcc_probe(struct platform_device *pd= ev) } =20 static const struct of_device_id qcom_llcc_of_match[] =3D { + { .compatible =3D "qcom,glymur-llcc", .data =3D &glymur_cfgs }, { .compatible =3D "qcom,ipq5424-llcc", .data =3D &ipq5424_cfgs}, { .compatible =3D "qcom,kaanapali-llcc", .data =3D &kaanapali_cfgs}, { .compatible =3D "qcom,qcs615-llcc", .data =3D &qcs615_cfgs}, diff --git a/include/linux/soc/qcom/llcc-qcom.h b/include/linux/soc/qcom/ll= cc-qcom.h index 0287f9182c4d..8243ab3a12a8 100644 --- a/include/linux/soc/qcom/llcc-qcom.h +++ b/include/linux/soc/qcom/llcc-qcom.h @@ -74,13 +74,17 @@ #define LLCC_CAMSRTIP 73 #define LLCC_CAMRTRF 74 #define LLCC_CAMSRTRF 75 +#define LLCC_OOBM_NS 81 +#define LLCC_OOBM_S 82 #define LLCC_VIDEO_APV 83 #define LLCC_COMPUTE1 87 #define LLCC_CPUSS_OPP 88 #define LLCC_CPUSSMPAM 89 +#define LLCC_VIDSC_VSP1 91 #define LLCC_CAM_IPE_STROV 92 #define LLCC_CAM_OFE_STROV 93 #define LLCC_CPUSS_HEU 94 +#define LLCC_PCIE_TCU 97 #define LLCC_MDM_PNG_FIXED 100 =20 /** --=20 2.34.1