From nobody Tue Aug 25 07:33:27 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 E2A45299937 for ; Wed, 8 Jul 2026 14:40:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783521658; cv=none; b=r/uf/IWPpdpB0KFc0Z5OLfD2nOMMy9g/vfttL08rziHdNyvdnM1sUu0JOMsXUriW8J3aHLNpk/8grDtaEX8M/2NQWXrJvuOcxEfDkCLLCOInVO7ZvnlYBOj8yppnXHSsQZLH24q82Sk84Ps4fR1IkN+m0pXaebs9IubG/skD1oc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783521658; c=relaxed/simple; bh=Uu69emYGs2xCa2QEFBGtCQhQgg/7WJY9mNOF4Qw6r5I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Mu/J9Rde0891ds4Nxk1mFWN/nKKfgEHjPrIyz4m1Rgwmloq6pSONm5yWIhk36Yq+f339qNXq/ZzS8ZDNlmuIr3XFw5PT6pMQu5XmnsTEUzI5x9KwxM3I2MjpFh/TO7FYA4c2tRhgoBHr4dnUYkUHvLmZ7vbhpHQCh8FOIbnLgNo= 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=hJ3jcTsW; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=StVLNTiW; arc=none smtp.client-ip=205.220.168.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="hJ3jcTsW"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="StVLNTiW" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 668D84Jc2678773 for ; Wed, 8 Jul 2026 14:40:56 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= LR/1mT0vFj+AZwZXRMTrkGiU02iXu02QvuQHVO1OrI4=; b=hJ3jcTsWMmuMKXIm LoXTAnabt4UCStww32FZCW63c8wb84MKnw39mQx0t0Jhc9Spo/GkvDeIVZJiHl6m GZDWwCBpu1TNbdPbE+j4wXfuzNhikEecZee2TgPWiiaByIaV9HTBMJNqbW8iY5G/ vMGhhlPn5o097vRfdd6h9cNDHNhYJ5VN94oenNr4s8ZE71glEABJG+YoI3cTzHcA v5DlC4MDNHuLvJDoHMJfjySRJOzjR6xJfAhDMKUBrEXhT0u9gh/RXa3kcG32yxJ3 OdPn76U64ffgIOoQ91GnOJOLG/1xvgRLVe8HEmdSMUpSnQ93VJYcArpvVpDl7Huf FZCImg== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f9q5s8e5v-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 08 Jul 2026 14:40:56 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-51c1e6f602cso14979101cf.3 for ; Wed, 08 Jul 2026 07:40:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783521655; x=1784126455; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=LR/1mT0vFj+AZwZXRMTrkGiU02iXu02QvuQHVO1OrI4=; b=StVLNTiWGjQWC3oFlq2QyDa8SW1tcSOnApAq9TkThblP76k3Fh3BWNAk5dxpFYu5xQ FDWwIzTK83SwwXB0K6vV7UgTXwMzb0uVzXp1R8/beWWVl6ekjP7MHpUijwXCkQJRRMi7 F9AyyKxWGmFm8hBQHbrMosf5F9otpPeXT809K4eKFi+TxFi6hlzZJ++lZxYfII2bibQC eTXvy9v3tJ93tdpwDkd5Sc7/vl/R9p9uXr9/cNYfJLEi6Q5tRrjxUgIUJm69JspG4wS/ XarWb9+l59fzmaefadaOw0XYLySSZwuizb8/w2buRwUPHUAaGwSqO1EAoxboCk3I2dmZ X37Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783521655; x=1784126455; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=LR/1mT0vFj+AZwZXRMTrkGiU02iXu02QvuQHVO1OrI4=; b=RkVAelJyFBfXETPJ6027F3BgK7Rqz/UUf2LAPUFP9rImnYVs/r/sa+4H4i0viyzGPT EZuiLFenGz83JfIMDDgxB6NSK4YG7r71ZYLSvr+lS17y4USZGcUGrUoqaOjEeiSEvuzq umECzI6eghOq7SuspyZUpelMoota92be3UV08TdEXtL++z4HtMwVpJwgpAGFHlLL7Q6J 10czw12i0juA5m6ReeX568If3WJoPyd4Fx1quDST7SYzH50ViJEinyflmOKA3emX5nIB sIRQ3C2UHdTFshbwzbWpe48kcSV2rUvzdU1kU813wqZSgfmrJGjrw6qR65DW2Dzhxvc+ C3GQ== X-Forwarded-Encrypted: i=1; AHgh+RqggwsMHITqt6/Fy0KLNIhemCMjaoZqP9nonco2iZVuuMl3nTNbdfSTyUs4VKQcl7SHfTpjtt/A4kPBPT4=@vger.kernel.org X-Gm-Message-State: AOJu0Yxl1IhbGDvmPIS9TANVj6rQm1l4R1ohUt1+5dM+UUY82Hos5yom VozoxhzzOeVS9ul17UmEFUPbeI+X8hjEo1IRc52RJApMUGKneDRuRKiB1G6aYRrD+Qk+xzAvBdx qxvD4ZrRPBHJoVPojr1kpwNboQLVsVQiFYQ9ZxOwQxJ0kSd0GpnAeQu2FZs5RDaYFVUQ= X-Gm-Gg: AfdE7cm16BS72cD6MGux/yVLmHEaV+jMlA+rpMJYS/ANXKo4iyQ+H+b1su8WAHJCMRL IEzBLsQkrdG9aXLRKeCOwHTBPc1PqA7BL4f10jfatSaeSPjndUuN3nuDLDWxCQpWK9EEb6iOT4y 5IoVAUqZJHkeWayw6Cvd2W4CmNCNOpnP5aZ21cGPcfVOlHlJOuHedkwKOGLqTK3v2K0632X7X2/ kxTY0YzK3g4kP5hVuaa6XqfnINt8JxXQWQLkPewi88CL6RWzGitt0F64c+zys3EeYPpwtY0vt50 t723F6QMmladr2PYm5gPUIc2W9i3GSr7NSYrDYPOkmj5F/0QDOBWwftGysWixXzpZ4CsdiV+Tyg Up9T29XixGy2uRl+ZZsocQzzTW54HghAx4EU= X-Received: by 2002:ac8:5783:0:b0:51b:f40b:2fac with SMTP id d75a77b69052e-51c8b48f6fbmr30984541cf.50.1783521655024; Wed, 08 Jul 2026 07:40:55 -0700 (PDT) X-Received: by 2002:ac8:5783:0:b0:51b:f40b:2fac with SMTP id d75a77b69052e-51c8b48f6fbmr30984061cf.50.1783521654571; Wed, 08 Jul 2026 07:40:54 -0700 (PDT) Received: from [127.0.1.1] ([178.197.223.174]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c15da821c58sm52543766b.48.2026.07.08.07.40.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jul 2026 07:40:53 -0700 (PDT) From: Krzysztof Kozlowski Date: Wed, 08 Jul 2026 16:40:32 +0200 Subject: [PATCH v4 2/7] dtc: dt-check-style: Allow space-aligning indentation in DTS 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: <20260708-dts-style-checker-v4-2-c175e6401150@oss.qualcomm.com> References: <20260708-dts-style-checker-v4-0-c175e6401150@oss.qualcomm.com> In-Reply-To: <20260708-dts-style-checker-v4-0-c175e6401150@oss.qualcomm.com> To: Rob Herring , Saravana Kannan , Krzysztof Kozlowski , Conor Dooley , Test User Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Daniel Golle , Krzysztof Kozlowski X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4784; i=krzysztof.kozlowski@oss.qualcomm.com; h=from:subject:message-id; bh=Uu69emYGs2xCa2QEFBGtCQhQgg/7WJY9mNOF4Qw6r5I=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBqTmFoKu/5XIf8cCLIb849GOcGDe/3PiDQZ/5hG iSach+TfkCJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCak5haAAKCRDBN2bmhouD 1//uD/0TkZ7aqZAMTOKFn8oFXb+r8+EKaxpMOS/Bavf6lbWivs+BbRKT1OMYaBs2PtDnGr8XmP6 fPuhOTgnM7loYCopx/cHk+eLqtWpRznApc6E6ydvqHwWj+n5zlJhR5SNaxf3PJz2L4G4WtJWdcG x9hL8PQ1URe05AjzY/v5qL7lwlsjfmIuipr8IzyQIQ9HobHCEH4KdUfomedR/pDn/gRsXWQWNtD 1oQr7KO7FpLSxOcR6fI4TZhslNuJRVdbcLPljh5HkOkpik7l1ZExxTNbV5wi2/dt6SfVBgITKi9 Ce09iaxOBLJ78he1bLHWUJptraaGzaoEpFtb0u9mjpuvwAnAR/iGToiPdffc3DLEZJmBAgRRg2t qunFFdZfiw1UDcaM6E7Ae1WUL/BHJVjFLWiULgeSIw22jJJ2lAfga1iMFbRQpxXUrtCvfjYrrXz vS+EItXt2rfnTpJyLhMORRK6x5T8jbfEveLY/kPghW2Wjq+TbPdyRxfwLuBl7FWxro/zzYdBejo 13Yk+/yZ+Q9tXqi4SO8mwyOUn9VKAlMdsFxQcS/RvRVh39YbUzJwOmThKk8FuOJ3/zQgX9ksOt+ qGZqMpFLa6EMJ0U1GkrmCOQlVgy5GVK/bKyc7Esk+lCNJRLE3zvP6fA0dTI9R6MeTiZIjuGnt0F s5b2bQ1jUTpx7Ww== X-Developer-Key: i=krzysztof.kozlowski@oss.qualcomm.com; a=openpgp; fpr=9BD07E0E0C51F8D59677B7541B93437D3B41629B X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA4MDE0NCBTYWx0ZWRfX5mPuDZUhlETK 4jo/eEjXphE4SmxUrWEOgB64ZAhWKub9Q+jwGYYqsExeUyoIwRPxuEIItvngXWnOIp5qu0kLTaQ 1sT/OhbKWNfbTaMkTQS0veVcldRClKwDbaov2WOfvSndQsTXnCMf3pIh9Ixrmcaik3V1n48t8de VX9SjKqmKFQ9IU2N6Bp/DBg2XsIBPE6EKt6Zb3Vhu/wvT0xA+LXeOLfwf3rLXkoRh8+sWPJZzMc A2Se4noYF08+lywrRGGx9ul9YYo+J4d8oqJb+7qdjws8yE/6PS3eiCW3ecfr/5Pi4HlPk2D8G8k cOWJv2Uef4eGsT6yOQtql/+N2b4g2615mSTllAYhw1LJt1wX8UDGEXN8BrSBn4H/pg5twvihwDP zdMGPK7JxITsSyZyqY4DfmZcoZbnIp9CUt2iX24iukfeR1DNLWrQi/ynnRCKnlDvtm6HcYmIzlo XkGoZU7Nt14PX31js+A== X-Proofpoint-ORIG-GUID: 0eThcQ2keDwYcoeEEFEYaRoD8fLbeavm X-Authority-Analysis: v=2.4 cv=NfTWEWD4 c=1 sm=1 tr=0 ts=6a4e6178 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=N6niishs+lR9UBL1FN3Qrw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=4QunWNA95kgjFIb9QjwA:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA4MDE0NCBTYWx0ZWRfXw3PaWtEfrm3c IssrYkCb5LzI0ALlA9vvHplSc6X3ks+i+Xfr5Ppi9jRjQD/qqxhRgWmHZ4dK80zAkxoV3WeQQtx RyGb2l2WFwu7uTaI+20wiBB3qlg81uk= X-Proofpoint-GUID: 0eThcQ2keDwYcoeEEFEYaRoD8fLbeavm X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-08_02,2026-07-08_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 phishscore=0 bulkscore=0 clxscore=1015 priorityscore=1501 impostorscore=0 malwarescore=0 adultscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607080144 DTS often have spaces after tabs in indentation for aligning continued lines of comments or list properties, thus allow such cases to avoid many false positives. What we can easily detect is a space followed by tab or too many spaces (more than alignment). OTOH, DTS example in YAML files does not have tabs at all and there is already rule for that, thus there is no point to check for mixed indentation there. Signed-off-by: Krzysztof Kozlowski --- Changes in v3: 1. Use re.search 2. Add dts-mixed-indent.dts test case v2: https://lore.kernel.org/r/20260706102421.343639-4-krzysztof.kozlowski@o= ss.qualcomm.com/ Changes in v2: 1. Rework idea. 2. Adjust function doc/comment. v1: https://lore.kernel.org/r/20260706071446.87669-2-krzysztof.kozlowski@os= s.qualcomm.com/ --- scripts/dtc/dt-check-style | 9 ++++++--- .../dtc/dt-style-selftest/bad/dts-mixed-indent.dts | 20 ++++++++++++++++= ++++ .../expected/dts-mixed-indent.dts.txt | 8 ++++++++ .../expected/yaml-mixed-indent.yaml.txt | 1 - 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/scripts/dtc/dt-check-style b/scripts/dtc/dt-check-style index 29b25ecf15c6..5d7765f35ecb 100755 --- a/scripts/dtc/dt-check-style +++ b/scripts/dtc/dt-check-style @@ -359,14 +359,17 @@ def check_tab_in_yaml_example(ctx): =20 =20 def check_mixed_indent_chars(ctx): - """Indent must be all-spaces or all-tabs, never mixed on one line.""" + """Indent must be all-tabs, except for aligning indentation (comments + or continued lines).""" for dl in ctx.lines: if not dl.indent_str: continue if dl.linetype =3D=3D LineType.PREPROCESSOR: continue - if ' ' in dl.indent_str and '\t' in dl.indent_str: + if re.search(r' \t', dl.indent_str): yield (dl.lineno, 'mixed tabs and spaces in indent') + if dl.indent_str.count(' ') > 7: + yield (dl.lineno, 'too many space characters in indent (more t= han 7)') =20 =20 def detect_indent_unit(ctx): @@ -932,7 +935,7 @@ RULES =3D [ check_tab_in_yaml_example, applies_to=3D('yaml',)), Rule('mixed-indent-chars', 'relaxed', 'indent must not mix tabs and spaces', - check_mixed_indent_chars), + check_mixed_indent_chars, applies_to=3D('dts', 'dtsi', 'dtso')), Rule('unclosed-block-comment', 'relaxed', 'every /* block comment must close with */', check_unclosed_block_comment), diff --git a/scripts/dtc/dt-style-selftest/bad/dts-mixed-indent.dts b/scrip= ts/dtc/dt-style-selftest/bad/dts-mixed-indent.dts new file mode 100644 index 000000000000..f0e40cfc910c --- /dev/null +++ b/scripts/dtc/dt-style-selftest/bad/dts-mixed-indent.dts @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +/* Test fixture: a .dts using wrong indent. */ + +/dts-v1/; + +/ { + compatible =3D "example,test-board"; + #address-cells =3D <1>; + #size-cells =3D <1>; + + soc@0 { + compatible =3D "simple-bus"; + ranges =3D <0 0 0 0xc0000000>; + + clocks =3D <1>, + <2>, + <3>; + resets =3D <5>; + }; +}; diff --git a/scripts/dtc/dt-style-selftest/expected/dts-mixed-indent.dts.tx= t b/scripts/dtc/dt-style-selftest/expected/dts-mixed-indent.dts.txt new file mode 100644 index 000000000000..54ddf3608244 --- /dev/null +++ b/scripts/dtc/dt-style-selftest/expected/dts-mixed-indent.dts.txt @@ -0,0 +1,8 @@ +# mode=3Dstrict +bad/dts-mixed-indent.dts:11: [indent-consistent] indent mismatch (expected= depth 1 * '\t') +bad/dts-mixed-indent.dts:11: [mixed-indent-chars] too many space character= s in indent (more than 7) +bad/dts-mixed-indent.dts:12: [indent-consistent] indent mismatch (expected= depth 2 * '\t') +bad/dts-mixed-indent.dts:12: [mixed-indent-chars] mixed tabs and spaces in= indent +bad/dts-mixed-indent.dts:13: [indent-consistent] indent mismatch (expected= depth 2 * '\t') +bad/dts-mixed-indent.dts:13: [mixed-indent-chars] mixed tabs and spaces in= indent +bad/dts-mixed-indent.dts:18: [indent-consistent] indent mismatch (expected= depth 2 * '\t') diff --git a/scripts/dtc/dt-style-selftest/expected/yaml-mixed-indent.yaml.= txt b/scripts/dtc/dt-style-selftest/expected/yaml-mixed-indent.yaml.txt index 4b3d990e0824..bc3fc3cf00cc 100644 --- a/scripts/dtc/dt-style-selftest/expected/yaml-mixed-indent.yaml.txt +++ b/scripts/dtc/dt-style-selftest/expected/yaml-mixed-indent.yaml.txt @@ -1,3 +1,2 @@ # mode=3Drelaxed -bad/yaml-mixed-indent.yaml:27: example 0 [mixed-indent-chars] mixed tabs a= nd spaces in indent bad/yaml-mixed-indent.yaml:27: example 0 [tab-in-yaml] tab character not a= llowed in DTS example --=20 2.53.0