From nobody Sun Feb 8 04:30:17 2026 Received: from mail-lj1-f175.google.com (mail-lj1-f175.google.com [209.85.208.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6F9F1230BE5; Wed, 2 Apr 2025 06:12:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743574365; cv=none; b=a4JaX070XMOtlimMBTBZ7UEdBfDNkfQs/2yI43+GMEZ29HI0+hKa2q/ByL/6hPu4fGK/n35d/ovNeL4QVu6sp3TKTMN5xmJ6wbtLkYR8uvc0nzC9EOPD2zMV8zzpbkLrbRAyDiqDRT2hpcVwMZjXA94Ps4m+wRlKqSet/aoIM2Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743574365; c=relaxed/simple; bh=qYfHo2KQHvNKc0ra0XY4yHSyf5lMppizDiG5nIkJLrQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NrvfT5imK4NkdOMbdIP3/nm2e+qLKI5CDrMn3sAVu/vokIAhBAGbhWv717QA3aoVtz//6CWNmNcaXvZT5Fz+Z1/Lh6wvWNlbbXQzIGCg4iVi0RBVdNCw1Wv3qF7GHHHTxmhq/vv4lNnlA6BkN41VvDAhGtVUYwvkvuCsIM6+m98= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=XcZ7hLP9; arc=none smtp.client-ip=209.85.208.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XcZ7hLP9" Received: by mail-lj1-f175.google.com with SMTP id 38308e7fff4ca-30db2c2c609so67832541fa.3; Tue, 01 Apr 2025 23:12:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743574361; x=1744179161; 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=LqLYe1FqZ+fWkZUMEsoaaGbBxE6T5DwROgxnXgSu3vs=; b=XcZ7hLP9GzaGuNnte3tsJ4aElqg6Rh8frt7qxSVclCx/zoDBBYGNK7jDnupt1IMmqN I9nFHBHnle/hng1258ngMu9grhdqL2jT0KcSxwDEVecnotojv7wo1qv4ym2EYnrnT5KV Q4Lev4sCyJccaKg3XxX658XuEaosZNu10fhO0FOK6SRyleeOzqA4bE3C/X1y7IL1+Vb3 zLZmtqC4+jmUT8r5Wbhdva2oadQIDeubCK6Pf4Xx2Lp+pPEd3yinHhet+Mv3UowdLuTY bUNdI5cBYzeaHTplTV2o+qkrxFZGc/JLdQPtV0seCPMz2InW8iLHBBbyA1ZnjinvaCxY BHCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743574361; x=1744179161; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LqLYe1FqZ+fWkZUMEsoaaGbBxE6T5DwROgxnXgSu3vs=; b=EfJdYc1MiZqRXYX/mpxWnMiUIUk0yEmtQBTUmhpWbNBSzPoQ8wru578uS9iDcd5MsK xSqG/IMZimIL5QZ/smP8YOZ/C+gaPr6RYk7M1ojtPLVEjK1V9XamPfDJrDMf1xfhyxGN /2tfe3CMUMGs5W5Or7deJAJn/iBQ7Gx6HcweNok1pJzz9fkmOL0NEY928FY0464JZBFn 0uKvWnLj8hvnawTjHn2Q26ZHeL5pN+fQ5AKop+94vkgyGvejVfYGgZll/uU6xgvc7ste GxofyriKXdGFpPo64DrJaSK/VR4YAcSx8H9kYK9qijmMIE5C/bRHl04T5hL2MINCKXg3 l5LQ== X-Forwarded-Encrypted: i=1; AJvYcCUUgHdycoOKVNAYJ3mOrSHLRBV9rrgNN8ZL4Y+OjEgr6ePgwT0IixaMn7dvkR3s9cmpG9dRizRMAtgdwBYZ@vger.kernel.org, AJvYcCUs32JkNmGBNcSFk+QswYZ4DyTALS7SsyK3A3f5W+1H1qUeLG6z0DkJWbIGTQx+PR6MLdVPps1XfY4a@vger.kernel.org X-Gm-Message-State: AOJu0YwdVIfi8dtQEh5oK/gruCy8XK5cYmL8JQyfduw1RQRcqVHgx6bU fPr6o0Nl93lTv5AbRR9KL5+vgLlk17Nukz/EkL8jODSN37OQPRN7 X-Gm-Gg: ASbGncu7Slj7mNo++jVm5qWzq6tmErts9/tFvQ4JH+XCqaex28o8vcGj+sO055WVSA1 s93+eP/QWf8UWyCk4sl2+3RT8L96xGWrPIxQwNyEe0ne7TDAY4qCRnNXAvrPdBlC1B/ZH8KuLE7 XTpFwYsXtdzCAD1a3l4J9yO7YKkQwI8qg+rmF2u/p96n7CY1v7yJQTWf65NpPUp40ihM8JpH+iI SBvtMZbkevf6c5QfxoV/4+4irdn61tGZq6kii6PXlFgQFoqGh9z6/zyBdSi4yxKX55bGq5zKnSd jREK5qr09EpdXdChpzY5z1agVtlOO0Ns6bd2ZRyvGXBrEEJ7NTaf+cWHU96sZNLFBBt9/4IC8cG vKibXJCrWf4DD X-Google-Smtp-Source: AGHT+IEOlVRNPfK6XvZfZI9GoCa8bFyIWYRL1kIm15RePsFCTW23VErkrA/u4u5KJPijLSBDY2ITUQ== X-Received: by 2002:a05:651c:312c:b0:30c:50fd:9afe with SMTP id 38308e7fff4ca-30eecd2b14amr21036011fa.9.1743574361185; Tue, 01 Apr 2025 23:12:41 -0700 (PDT) Received: from [192.168.1.11] (83-233-6-197.cust.bredband2.com. [83.233.6.197]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30dd2aa9118sm19336801fa.14.2025.04.01.23.12.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Apr 2025 23:12:40 -0700 (PDT) From: Marcus Folkesson Date: Wed, 02 Apr 2025 08:12:10 +0200 Subject: [PATCH 1/3] dt-bindings: st7571-i2c: Add Sitronix ST7571 panel bindings 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: <20250402-st7571-v1-1-351d6b9eeb4a@gmail.com> References: <20250402-st7571-v1-0-351d6b9eeb4a@gmail.com> In-Reply-To: <20250402-st7571-v1-0-351d6b9eeb4a@gmail.com> To: David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Marcus Folkesson X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2472; i=marcus.folkesson@gmail.com; h=from:subject:message-id; bh=qYfHo2KQHvNKc0ra0XY4yHSyf5lMppizDiG5nIkJLrQ=; b=owEBbQKS/ZANAwAIAYiATm9ZXVIyAcsmYgBn7NVH8bUZmUp+sDXnx+1m2Gbpsf0NJOj4/LoGp SQm5Bf40QiJAjMEAAEIAB0WIQQFUaLotmy1TWTBLGWIgE5vWV1SMgUCZ+zVRwAKCRCIgE5vWV1S MnfYD/9J49Orcaqbp7AXaRVq0lPTsokYkxYNLdJ/05TEhccGTRtZpDcgy3CtoMDFudImM9/+c6V 8p7q5yQLaoq4WVfes6wtYlrfZ/13wdGlTkfh5zxuaAvdYdL5zs3MJ2ustdg0j+HF65lWmoPrgET VMBbhQEUOIwZ+5+h3tLZDgNbPs+lB2FbRnCDxHK0AtB3sg53EHQjMXBZgF2fn9Rggilcuno4WPW XvFrs51gq4gNMqkp3yn9txSMAuIlOjuev/fmFiQRNV514VRqz7VbT5ni3TLed3D+fw8npOYOLqj +vIXk1+a8ZuzS5LOzf20+Swrc2Kj9yrGVhW+7oyfCWBbdQ14QPIQrfrtHhmdMFPUvxQFmR87Eyl H/DXyvKKCSM3SlcWJBjzuYyOT+CdfALX64N0CdTnPKQBt8Yx9VNFyQ+y6UEEG6fODQqSaZXrSWx HlKVwEQFerc7JFyr4zA6N2PL0e87FrY4RW6pSzwTqIVaT5RqSmIX2qJaXShR8uaA5c0RDbhMsNI ncYga/CEXV9k3LJCxl/jMkE1Ga/SK7FsAd9YnkVLqe000He1Qa40E2qBhnvcvCmYAmyL+Mr7OwG zdKjqVZ1FzEux9Jlj+iXO8sPOeLc6NPu9SGdPpBnN2QO9SZcJEeFqno3nTin/N5JA9osXUjmXsw GeAf8A21a35u8mA== X-Developer-Key: i=marcus.folkesson@gmail.com; a=openpgp; fpr=AB91D46C7E0F6E6FB2AB640EC0FE25D598F6C127 Sitronix ST7571 is a 4bit gray scale dot matrix LCD controller. The controller has a SPI, I2C and 8bit parallel interface, this is for the I2C interface only. Signed-off-by: Marcus Folkesson --- .../bindings/display/sitronix,st7571-i2c.yaml | 71 ++++++++++++++++++= ++++ 1 file changed, 71 insertions(+) diff --git a/Documentation/devicetree/bindings/display/sitronix,st7571-i2c.= yaml b/Documentation/devicetree/bindings/display/sitronix,st7571-i2c.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6e5e0994a98db646a37bb17c428= 9332546c9266e --- /dev/null +++ b/Documentation/devicetree/bindings/display/sitronix,st7571-i2c.yaml @@ -0,0 +1,71 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/sitronix,st7571-i2c.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Sitronix ST7571 Display Panels + +maintainers: + - Marcus Folkesson + +properties: + compatible: + const: sitronix,st7571-i2c + + reg: + description: I2C address of the LCD controller + maxItems: 1 + + sitronix,panel-width-mm: + description: physical panel width [mm] + + sitronix,panel-height-mm: + description: physical panel height [mm] + + sitronix,panel-nlines: + description: Number of lines in the panel + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 1 + maximum: 128 + default: 128 + + sitronix,panel-start-line: + description: Start line of the panel + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0 + maximum: 127 + default: 0 + + reset-gpios: + description: GPIO connected to the RST_N signal. + maxItems: 1 + +required: + - compatible + - reg + - reset-gpios + - sitronix,panel-width-mm + - sitronix,panel-height-mm + +additionalProperties: false + +examples: + - | + #include + # + i2c { + #address-cells =3D <1>; + #size-cells =3D <0>; + + display@3f { + compatible =3D "sitronix,st7571-i2c"; + reg =3D <0x3f>; + + reset-gpios =3D <&gpio0 3 GPIO_ACTIVE_HIGH>; + sitronix,panel-width-mm =3D <37>; + sitronix,panel-height-mm =3D <27>; + sitronix,panel-nlines =3D <96>; + sitronix,panel-start-line =3D <0>; + }; + }; --=20 2.48.1 From nobody Sun Feb 8 04:30:17 2026 Received: from mail-lj1-f175.google.com (mail-lj1-f175.google.com [209.85.208.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CED33231A41; Wed, 2 Apr 2025 06:12:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743574367; cv=none; b=KbPGwB/znFfWLyv7d1YwSeCFYlkipW/3Fj18+RdKXJNFGrIohHWyqvsfU/UHrV2qmv0WsbGD5PBOS8ckdxZmaobFKd0WrF+FQX0cAO55PlvjKYZrCoWKMQS326crmIut0rrGsGdWVqM4ufAcedSiViEnvBkZ3w8Khu76jnC4TWE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743574367; c=relaxed/simple; bh=rVktkbhZ73qxhxvZdI9XYvy0vnRRMgoRCdhnvs8LSms=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YVqfHk9ml6y0ygVk17osK/p5t/eh5nrsJo7BgJZLsF2Gdz+rdSc45eCUh2peczDfOFdWM6pLYgyB/8PeoCBUhA7ebmQeZvOw8GTKuB/82kT4JqVZEKCdrtqHuhkC//juXmDNLA15CqDYJlugNDYAHX8T+J+0Fi8ZGV7QuWGMtX8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=K//bFwEo; arc=none smtp.client-ip=209.85.208.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="K//bFwEo" Received: by mail-lj1-f175.google.com with SMTP id 38308e7fff4ca-30db1bc464dso55765531fa.0; Tue, 01 Apr 2025 23:12:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743574363; x=1744179163; 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=cV5ZHUICuxYNvHb937fMWFTBE1PnQy7W5glkS0eNxdA=; b=K//bFwEovblM5WZFfDLQcX+p7nvkc8vaI8KbHhCkTDt3jG33UUcIBxyOzPjA0nebEp rAq883z8j78ec6CuMVwRikVtoArehm+eGzRbKPYL4GWqdm3foAqT6lFgueeeMT0QeFL+ pqJc3wYd5YrHIMc0ZUrQDLgttfK5qP4I/hhdMdP9/C+8y9E3S5Q5OGDqz5ufSddEoFdV 8afwuIrudJTXNyHVniDnMBCtmFzP7eVlrc5S8bYeovE+Mq1fPRPW2L/xY3OVQXUa0/bR wFapQPhxBW30UVRXSPoW6G28WNgyWWXRA1j4dxuwJ773Fu+Ny5JWgogX7he1R44mj4GT P+NA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743574363; x=1744179163; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cV5ZHUICuxYNvHb937fMWFTBE1PnQy7W5glkS0eNxdA=; b=lwHLk2E79HVGyndpi2V7Hv9v4drkBRWnAVPQbdqxBgtLR/mE4ZmsFrFYGBfx0N9CI3 uh54q5rzWCd83lN4W/aBMA+MfO7H7FmuCAxXlU8e35AoHiQgBfx8calJkrb7sknG9H44 7Ikc0q3lUpM9gGJlFQxnkCOpC3u+nAQsdGYUp4S1QNyIFoIhyvU0RDnWyLpHg+w1giOE 6rHonPZx84s2jEYkTfMpw30cexegPQEyUoy50Euw343e+o1XbffTgRntB0jJtB2EVakr C0HawSQthplCbnSyHRYu6Z5dmf8fm7ZHB3QDrmwe0OmifmJyw8Tr2ShXHIexNW81/MGE q0XA== X-Forwarded-Encrypted: i=1; AJvYcCUqpYuoMtQMimdofSQTaB2StCDTzOthdwbB3SLbm/R7c5uhq4dthXMdjCA+uz5aY7xR5Lfb0fP3THv4rziV@vger.kernel.org, AJvYcCWAN3+G2jmCLQX8EAlz2xRhblg+jecg3MnVJp1tjYwqly1WlN2gSCOedoHem4ou6OQ/EIHBGC2BOiAI@vger.kernel.org X-Gm-Message-State: AOJu0Yw4ZJbbthgsd3ep6/SD5jRRgs/YdNaFHC5ulHKv+/yScwiTiasQ lv2HB3MrLg69fYT7lpXVnR9M3WFowBWv4AzJLHwZDkJuPqdo2Mf6QCaC/HR4Qgo= X-Gm-Gg: ASbGnctXu1t8xsupWTfMEjaX+IpQFowrLbqhNCWI3Tt6pDLl8ZDCOvy2M0U/whOzAEK srZt293gN9hJG/l/hN/8jhIC4C6pov5w1LnSlJvdg405gqyMpkIu4yS4hXWh0uNuxEG7NdYvV0y mpW8tpe6beCIkrMRK32IZKi7l/ZLHmmePRR3s8C1OQpPoptj4n9Ph3QkctDI1wZTEa/dT18lmSP 9q12Zsy+szhmi3hzwoSUfvmOR6aAJVxBm8VXyva6vFQ1KebGLmY0JW/c2k2Fz4k9cj7pPebEkBT ax4G7fZu6Am8fYmMDt/1SA2VNjk/JC93uN6q4htzXFR5JrmXGz27DR9j/Kl2lYHBqPJ6Te310oX sbLyedKk9Gt5s X-Google-Smtp-Source: AGHT+IHUj/Ty9pge8mfDlUOKnw6ytZHiet7VpbtZXmZmXojKYPFOv1Gq3ZqDeYGdlJUdlZePoxZnjQ== X-Received: by 2002:a05:651c:220d:b0:30b:b9e4:13c5 with SMTP id 38308e7fff4ca-30ef90ccfd1mr3413681fa.4.1743574362795; Tue, 01 Apr 2025 23:12:42 -0700 (PDT) Received: from [192.168.1.11] (83-233-6-197.cust.bredband2.com. [83.233.6.197]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30dd2aa9118sm19336801fa.14.2025.04.01.23.12.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Apr 2025 23:12:41 -0700 (PDT) From: Marcus Folkesson Date: Wed, 02 Apr 2025 08:12:11 +0200 Subject: [PATCH 2/3] drm/st7571-i2c: add support for Sitronix ST7571 LCD controller 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: <20250402-st7571-v1-2-351d6b9eeb4a@gmail.com> References: <20250402-st7571-v1-0-351d6b9eeb4a@gmail.com> In-Reply-To: <20250402-st7571-v1-0-351d6b9eeb4a@gmail.com> To: David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Marcus Folkesson X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=18061; i=marcus.folkesson@gmail.com; h=from:subject:message-id; bh=rVktkbhZ73qxhxvZdI9XYvy0vnRRMgoRCdhnvs8LSms=; b=owEBbQKS/ZANAwAIAYiATm9ZXVIyAcsmYgBn7NVM4LNkqygoDLJOBkg20tJVmzcYus9680fly SskpFIKZEyJAjMEAAEIAB0WIQQFUaLotmy1TWTBLGWIgE5vWV1SMgUCZ+zVTAAKCRCIgE5vWV1S MsaGD/oCrpPWO1u0rg3G0BqD9nVmzHRtsjZ0WdnmyjkT9nF+BMCEvo8Uggi9LoglvvQHW3cS1i+ h0fTiOBWRAUIov40EmGUs+JAw/VbXqq1HwcCQ/5TU2QxuDOB04F+RJhR/mXLX6YbnWfzfo744S4 lKXJbcX/drXtj1HItgDWbqZYv32Gg410KYqz4N+HD4dyTcfFYRJ/Lgs4fq4DDZk9Gq8dwkpHjiU nHWdureiFq+knrXm+Sa3AQ6VN2hy0FpVTrYYhH/ct9BnRIv5kjsKOpTfoW6+tsHhCpBAwJvMGdF EPb/sveXo5gQjVnUymftzyKz5CEUzveDPyoFeVRzLh0fbnvNBNcmz1+kznG4BPMaK0OzoheQiOy 6L1g6onUMBRK0FASpqWpcXGzsMv4fccD9gK8S3XD133X47VFeK7TUxJ16HRNaP6f4fOzsMW2jfM RsoK+fkbzxOKua6zp2idQ9jOBDUC6temS7ItKvPXmUOvAO4x6PqdYdmjhzV8A/sPUhoiwnXQJ4u TDm518O45+gnEoAXGyAj2XDXD8hbo7o3PAI3N8bKwJieYhLAsJGClMUtB82FSjTkOJlAGThhU2K +dF28+ZoEvvLD/h/Z5ceZyMUo3aA5I8pjwYVTpERNYFyfiGjWCS+Y3S4u69v3//ip11DaVQGyIz m6sPSFxwTS9u4hQ== X-Developer-Key: i=marcus.folkesson@gmail.com; a=openpgp; fpr=AB91D46C7E0F6E6FB2AB640EC0FE25D598F6C127 Sitronix ST7571 is a 4bit gray scale dot matrix LCD controller. The controller has a SPI, I2C and 8bit parallel interface, this driver is for the I2C interface only. Signed-off-by: Marcus Folkesson --- drivers/gpu/drm/tiny/Kconfig | 12 + drivers/gpu/drm/tiny/Makefile | 1 + drivers/gpu/drm/tiny/st7571-i2c.c | 563 ++++++++++++++++++++++++++++++++++= ++++ 3 files changed, 576 insertions(+) diff --git a/drivers/gpu/drm/tiny/Kconfig b/drivers/gpu/drm/tiny/Kconfig index 94cbdb1337c07f1628a33599a7130369b9d59d98..14096031e7c2d8f73c06c88e08f= 35aa5a3790a54 100644 --- a/drivers/gpu/drm/tiny/Kconfig +++ b/drivers/gpu/drm/tiny/Kconfig @@ -232,6 +232,18 @@ config TINYDRM_ST7586 =20 If M is selected the module will be called st7586. =20 +config TINYDRM_ST7571_I2C + tristate "DRM support for Sitronix ST7571 display panels (I2C)" + depends on DRM && I2C + select DRM_KMS_HELPER + select DRM_GEM_DMA_HELPER + select DRM_GEM_SHMEM_HELPER + select REGMAP_I2C + help + DRM driver for Sitronix ST7571 panels controlled over I2C. + + if M is selected the module will be called st7571-i2c. + config TINYDRM_ST7735R tristate "DRM support for Sitronix ST7715R/ST7735R display panels" depends on DRM && SPI diff --git a/drivers/gpu/drm/tiny/Makefile b/drivers/gpu/drm/tiny/Makefile index 60816d2eb4ff93b87228ed8eadd60a0a33a1144b..343813a965e13326bbb8520a5c3= 4d272ec7821d5 100644 --- a/drivers/gpu/drm/tiny/Makefile +++ b/drivers/gpu/drm/tiny/Makefile @@ -17,3 +17,4 @@ obj-$(CONFIG_TINYDRM_REPAPER) +=3D repaper.o obj-$(CONFIG_TINYDRM_SHARP_MEMORY) +=3D sharp-memory.o obj-$(CONFIG_TINYDRM_ST7586) +=3D st7586.o obj-$(CONFIG_TINYDRM_ST7735R) +=3D st7735r.o +obj-$(CONFIG_TINYDRM_ST7571_I2C) +=3D st7571-i2c.o diff --git a/drivers/gpu/drm/tiny/st7571-i2c.c b/drivers/gpu/drm/tiny/st757= 1-i2c.c new file mode 100644 index 0000000000000000000000000000000000000000..c26ecf8a4fd2115b808b126cccd= a74ea9079cd7c --- /dev/null +++ b/drivers/gpu/drm/tiny/st7571-i2c.c @@ -0,0 +1,563 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Driver for Sitronix ST7571, a 4 level gray scale dot matrix LCD control= ler + * + * Copyright (C) 2025 Marcus Folkesson + */ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define ST7571_COMMAND_MODE (0x00) +#define ST7571_DATA_MODE (0x40) + +/* Normal mode command set */ +#define ST7571_DISPLAY_OFF (0xae) +#define ST7571_DISPLAY_ON (0xaf) +#define ST7571_OSC_ON (0xab) +#define ST7571_SET_COLUMN_LSB(c) (0x00 | ((c) & 0xf)) +#define ST7571_SET_COLUMN_MSB(c) (0x10 | ((c) >> 4)) +#define ST7571_SET_COM0_LSB(x) ((x) & 0x7f) +#define ST7571_SET_COM0_MSB (0x44) +#define ST7571_SET_COM_SCAN_DIR(d) (0xc0 | (((d) << 3) & 0x8)) +#define ST7571_SET_CONTRAST_LSB(c) ((c) & 0x3f) +#define ST7571_SET_CONTRAST_MSB (0x81) +#define ST7571_SET_DISPLAY_DUTY_LSB(d) ((d) & 0xff) +#define ST7571_SET_DISPLAY_DUTY_MSB (0x48) +#define ST7571_SET_ENTIRE_DISPLAY_ON(p) (0xa4 | ((p) & 0x1)) +#define ST7571_SET_LCD_BIAS(b) (0x50 | ((b) & 0x7)) +#define ST7571_SET_MODE_LSB(m) ((m) & 0xfc) +#define ST7571_SET_MODE_MSB (0x38) +#define ST7571_SET_PAGE(p) (0xb0 | (p)) +#define ST7571_SET_POWER(p) (0x28 | ((p) & 0x7)) +#define ST7571_SET_REGULATOR_REG(r) (0x20 | ((r) & 0x7)) +#define ST7571_SET_REVERSE(r) (0xa6 | ((r) & 0x1)) +#define ST7571_SET_SEG_SCAN_DIR(d) (0xa0 | ((d) & 0x1)) +#define ST7571_SET_START_LINE_LSB(l) ((l) & 0x3f) +#define ST7571_SET_START_LINE_MSB (0x40) + +/* Extension command set 3 */ +#define ST7571_COMMAND_SET_3 (0x7b) +#define ST7571_SET_COLOR_MODE(c) (0x10 | ((c) & 0x1)) +#define ST7571_COLOR_MODE_BLACKWHITE (1) +#define ST7571_COLOR_MODE_GRAY (0) +#define ST7571_COMMAND_SET_NORMAL (0x00) + +#define DRIVER_NAME "st7571-i2c" +#define DRIVER_DESC "ST7571 DRM driver" +#define DRIVER_MAJOR 1 +#define DRIVER_MINOR 0 + +#define to_st7571(_dev) container_of(_dev, struct st7571_device, dev) + +struct st7571_device { + struct drm_device dev; + struct drm_simple_display_pipe pipe; + struct drm_connector conn; + struct drm_display_mode mode; + struct regmap *regmap; + struct i2c_client *client; + struct gpio_desc *reset; + u8 bpp; + u32 width_mm; + u32 height_mm; + u32 nlines; + u32 startline; + bool ignore_nak; +}; + +static int st7571_regmap_write(void *context, const void *data, size_t cou= nt) +{ + struct i2c_client *client =3D context; + struct st7571_device *st7571 =3D i2c_get_clientdata(client); + int ret; + + struct i2c_msg msg =3D { + .addr =3D st7571->client->addr, + .flags =3D st7571->ignore_nak ? I2C_M_IGNORE_NAK : 0, + .len =3D count, + .buf =3D (u8 *)data + }; + + ret =3D i2c_transfer(st7571->client->adapter, &msg, 1); + if (ret < 0) + return ret; + + return 0; +} + +static int st7571_regmap_read(void *context, const void *reg_buf, + size_t reg_size, void *val_buf, size_t val_size) +{ + return -EOPNOTSUPP; +} + +static int st7571_send_command_list(struct st7571_device *st7571, + const u8 *cmd_list, size_t len) +{ + int ret; + + for (int i =3D 0; i < len; i++) { + ret =3D regmap_write(st7571->regmap, ST7571_COMMAND_MODE, cmd_list[i]); + if (ret < 0) + return ret; + } + + return ret; +} + +static inline u8 st7571_transform_xy(const char *p, int x, int y) +{ + int xrest =3D x % 8; + u8 result =3D 0; + + /* + * Transforms an (x, y) pixel coordinate into a vertical 8-bit + * column from the framebuffer. It calculates the corresponding byte in t= he + * framebuffer, extracts the bit at the given x position across 8 consecu= tive + * rows, and packs those bits into a single byte. + * + * Return an 8-bit value representing a vertical column of pixels. + */ + x =3D x / 8; + y =3D (y / 8) * 8; + + for (int i =3D 0; i < 8; i++) { + int row_idx =3D y + i; + u8 byte =3D p[row_idx * 16 + x]; + u8 bit =3D (byte >> (7-xrest)) & 1; + + result |=3D (bit << i); + } + + return result; +} + +static int st7571_set_position(struct st7571_device *st7571, int x, int y) +{ + u8 cmd_list[] =3D { + ST7571_SET_COLUMN_LSB(x), + ST7571_SET_COLUMN_MSB(x), + ST7571_SET_PAGE(y/8), + }; + + return st7571_send_command_list(st7571, cmd_list, ARRAY_SIZE(cmd_list)); +} + +static int st7571_fb_blit_rect(struct drm_framebuffer *fb, + const struct iosys_map *vmap, + struct drm_rect *rect) +{ + struct st7571_device *st7571 =3D to_st7571(fb->dev); + + char row[256]; + char *pixel =3D vmap->vaddr; + int x1 =3D rect->x1 * st7571->bpp; + int x2 =3D rect->x2 * st7571->bpp; + + for (int y =3D rect->y1; y < rect->y2; y +=3D 8) { + for (int x =3D x1; x < x2; x++) + row[x] =3D st7571_transform_xy(pixel, x, y); + + st7571_set_position(st7571, rect->x1, y); + + /* TODO: Investige why we can't write multiple bytes at once */ + for (int x =3D x1; x < x2; x++) + regmap_bulk_write(st7571->regmap, ST7571_DATA_MODE, row + x, 1); + } + + return 0; +} + +static int st7571_fb_blit_fullscreen(struct drm_framebuffer *fb, + const struct iosys_map *map) +{ + struct drm_rect fullscreen =3D { + .x1 =3D 0, + .x2 =3D fb->width, + .y1 =3D 0, + .y2 =3D fb->height, + }; + + return st7571_fb_blit_rect(fb, map, &fullscreen); +} + +static int st7571_conn_get_modes(struct drm_connector *conn) +{ + struct st7571_device *st7571 =3D to_st7571(conn->dev); + + return drm_connector_helper_get_modes_fixed(conn, &st7571->mode); +} + +static const struct drm_connector_helper_funcs st7571_conn_helper_funcs = =3D { + .get_modes =3D st7571_conn_get_modes, +}; + +static const struct drm_connector_funcs st7571_conn_funcs =3D { + .fill_modes =3D drm_helper_probe_single_connector_modes, + .destroy =3D drm_connector_cleanup, + .reset =3D drm_atomic_helper_connector_reset, + .atomic_duplicate_state =3D drm_atomic_helper_connector_duplicate_state, + .atomic_destroy_state =3D drm_atomic_helper_connector_destroy_state, +}; + +static int st7571_conn_init(struct st7571_device *st7571) +{ + drm_connector_helper_add(&st7571->conn, &st7571_conn_helper_funcs); + return drm_connector_init(&st7571->dev, &st7571->conn, + &st7571_conn_funcs, DRM_MODE_CONNECTOR_Unknown); + +} + + +static void st7571_pipe_enable(struct drm_simple_display_pipe *pipe, + struct drm_crtc_state *crtc_state, + struct drm_plane_state *plane_state) +{ + struct drm_shadow_plane_state *shadow_plane_state =3D to_drm_shadow_plane= _state(plane_state); + + st7571_fb_blit_fullscreen(plane_state->fb, &shadow_plane_state->data[0]); +} + +static void st7571_pipe_update(struct drm_simple_display_pipe *pipe, + struct drm_plane_state *old_state) +{ + struct drm_plane_state *state =3D pipe->plane.state; + struct drm_shadow_plane_state *shadow_plane_state =3D to_drm_shadow_plane= _state(state); + struct drm_rect rect; + + if (state->fb && drm_atomic_helper_damage_merged(old_state, state, &rect)) + st7571_fb_blit_rect(state->fb, &shadow_plane_state->data[0], &rect); +} + +static const struct drm_simple_display_pipe_funcs st7571_pipe_funcs =3D { + .enable =3D st7571_pipe_enable, + .update =3D st7571_pipe_update, + DRM_GEM_SIMPLE_DISPLAY_PIPE_SHADOW_PLANE_FUNCS, +}; + +static const uint32_t st7571_formats[] =3D { + DRM_FORMAT_C1, + DRM_FORMAT_C2, +}; + +static const uint64_t st7571_modifiers[] =3D { + DRM_FORMAT_MOD_LINEAR, + DRM_FORMAT_MOD_INVALID +}; + +static int st7571_pipe_init(struct st7571_device *st7571) +{ + return drm_simple_display_pipe_init(&st7571->dev, + &st7571->pipe, + &st7571_pipe_funcs, + st7571_formats, + ARRAY_SIZE(st7571_formats), + st7571_modifiers, + &st7571->conn); +} + +static int st7571_set_pixel_format(struct st7571_device *st7571, + u32 pixel_format) +{ + u8 cmd_list[] =3D { + ST7571_COMMAND_SET_3, + ST7571_SET_COLOR_MODE(ST7571_COLOR_MODE_BLACKWHITE), + ST7571_COMMAND_SET_NORMAL, + }; + + switch (pixel_format) { + case DRM_FORMAT_C1: + cmd_list[1] =3D ST7571_SET_COLOR_MODE(ST7571_COLOR_MODE_BLACKWHITE); + st7571->bpp =3D 1; + break; + case DRM_FORMAT_C2: + cmd_list[1] =3D ST7571_SET_COLOR_MODE(ST7571_COLOR_MODE_GRAY); + st7571->bpp =3D 2; + break; + default: + return -EINVAL; + } + + return st7571_send_command_list(st7571, cmd_list, ARRAY_SIZE(cmd_list)); +} + +static struct drm_framebuffer* +st7571_fb_create(struct drm_device *dev, struct drm_file *file_priv, + const struct drm_mode_fb_cmd2 *mode_cmd) +{ + int ret =3D st7571_set_pixel_format(to_st7571(dev), mode_cmd->pixel_forma= t); + + if (ret) + return ERR_PTR(ret); + + return drm_gem_fb_create_with_dirty(dev, file_priv, mode_cmd); +} + +static const struct drm_mode_config_funcs st7571_mode_config_funcs =3D { + .fb_create =3D st7571_fb_create, + .atomic_check =3D drm_atomic_helper_check, + .atomic_commit =3D drm_atomic_helper_commit, +}; + +static int st7571_mode_config_init(struct st7571_device *st7571) +{ + struct drm_device *dev =3D &st7571->dev; + int ret; + + ret =3D drmm_mode_config_init(dev); + if (ret) + return ret; + + dev->mode_config.min_width =3D 0; + dev->mode_config.min_height =3D 0; + dev->mode_config.max_width =3D 128; + dev->mode_config.max_height =3D 128; + dev->mode_config.preferred_depth =3D 1; + dev->mode_config.prefer_shadow =3D 0; + dev->mode_config.funcs =3D &st7571_mode_config_funcs; + + return 0; +} + +DEFINE_DRM_GEM_FOPS(st7571_fops); + +static const struct drm_driver st7571_driver =3D { + .driver_features =3D DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC, + + .name =3D DRIVER_NAME, + .desc =3D DRIVER_DESC, + .major =3D DRIVER_MAJOR, + .minor =3D DRIVER_MINOR, + + .fops =3D &st7571_fops, + DRM_GEM_SHMEM_DRIVER_OPS, + DRM_FBDEV_DMA_DRIVER_OPS, +}; + +static const struct regmap_bus st7571_regmap_bus =3D { + .read =3D st7571_regmap_read, + .write =3D st7571_regmap_write, +}; + +static const struct regmap_config st7571_regmap_config =3D { + .reg_bits =3D 8, + .val_bits =3D 8, + .use_single_write =3D true, +}; + +static int st7571_parse_dt(struct st7571_device *st7571) +{ + struct device *dev =3D &st7571->client->dev; + struct device_node *np =3D dev->of_node; + + of_property_read_u32(np, "sitronix,panel-width-mm", &st7571->width_mm); + of_property_read_u32(np, "sitronix,panel-height-mm", &st7571->height_mm); + of_property_read_u32(np, "sitronix,panel-start-line", &st7571->startline); + of_property_read_u32(np, "sitronix,panel-nlines", &st7571->nlines); + + if (st7571->width_mm =3D=3D 0 || st7571->height_mm =3D=3D 0) { + dev_err(dev, "Invalid panel dimensions\n"); + return -EINVAL; + } + + /* Default to 128 lines if not specified */ + if (!st7571->nlines) + st7571->nlines =3D 128; + + if (st7571->startline + st7571->nlines > 128) { + dev_err(dev, "Invalid line configuration (start-line=3D%i, nlines=3D%i)\= n", + st7571->startline, st7571->nlines); + return -EINVAL; + } + + st7571->reset =3D devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); + if (IS_ERR(st7571->reset)) + return PTR_ERR(st7571->reset); + + return 0; +} + +static void st7571_create_mode(struct st7571_device *st7571) +{ + struct drm_display_mode st7571_mode =3D { + DRM_SIMPLE_MODE(128, st7571->nlines, st7571->width_mm, st7571->height_mm= ), + }; + + memcpy(&st7571->mode, &st7571_mode, sizeof(st7571_mode)); +} + +static void st7571_reset(struct st7571_device *st7571) +{ + gpiod_set_value_cansleep(st7571->reset, 0); + mdelay(20); + gpiod_set_value_cansleep(st7571->reset, 1); +} + +static int st7571_initialize(struct st7571_device *st7571) +{ + /* + * Most of the initialization sequence is taken directly from the + * referential initial code in the ST7571 datasheet. + */ + u8 commands[] =3D { + ST7571_DISPLAY_OFF, + ST7571_SET_MODE_MSB, + + ST7571_SET_MODE_LSB(0x94), + ST7571_SET_SEG_SCAN_DIR(0), + ST7571_SET_COM_SCAN_DIR(1), + + ST7571_SET_COM0_MSB, + ST7571_SET_COM0_LSB(0x00), + + ST7571_SET_START_LINE_MSB, + ST7571_SET_START_LINE_LSB(st7571->startline), + + ST7571_OSC_ON, + ST7571_SET_REGULATOR_REG(5), + ST7571_SET_CONTRAST_MSB, + ST7571_SET_CONTRAST_LSB(0x33), + ST7571_SET_LCD_BIAS(0x04), + ST7571_SET_DISPLAY_DUTY_MSB, + ST7571_SET_DISPLAY_DUTY_LSB(st7571->nlines), + + + ST7571_SET_POWER(0x4), /* Power Control, VC: ON, VR: OFF, VF: OFF */ + ST7571_SET_POWER(0x6), /* Power Control, VC: ON, VR: ON, VF: OFF */ + ST7571_SET_POWER(0x7), /* Power Control, VC: ON, VR: ON, VF: ON */ + + ST7571_SET_REVERSE(0), + ST7571_SET_ENTIRE_DISPLAY_ON(0), + + ST7571_DISPLAY_ON, + }; + + /* Perform a reset before initializing the controller */ + st7571_reset(st7571); + + return st7571_send_command_list(st7571, commands, ARRAY_SIZE(commands)); +} + + +static int st7571_probe(struct i2c_client *client) +{ + struct drm_device *dev; + struct st7571_device *st7571; + int ret; + + st7571 =3D devm_drm_dev_alloc(&client->dev, &st7571_driver, + struct st7571_device, dev); + if (IS_ERR(st7571)) + return PTR_ERR(st7571); + + dev =3D &st7571->dev; + st7571->client =3D client; + i2c_set_clientdata(client, st7571); + + ret =3D st7571_parse_dt(st7571); + if (ret) + return ret; + + /* Create mode with parsed values */ + st7571_create_mode(st7571); + + /* + * The chip nacks some messages but still works as expected. + * If the adapter does not support protocol mangling do + * not set the I2C_M_IGNORE_NAK flag at the expense * of possible + * cruft in the logs. + */ + if (i2c_check_functionality(client->adapter, I2C_FUNC_PROTOCOL_MANGLING)) + st7571->ignore_nak =3D true; + + st7571->regmap =3D devm_regmap_init(&client->dev, &st7571_regmap_bus, + client, &st7571_regmap_config); + if (IS_ERR(st7571->regmap)) { + dev_err(&client->dev, "Failed to initialize regmap\n"); + return PTR_ERR(st7571->regmap); + } + + ret =3D st7571_initialize(st7571); + if (ret) + return ret; + + ret =3D st7571_mode_config_init(st7571); + if (ret) + return ret; + + ret =3D st7571_conn_init(st7571); + if (ret < 0) + return ret; + + ret =3D st7571_pipe_init(st7571); + if (ret < 0) + return ret; + + drm_plane_enable_fb_damage_clips(&st7571->pipe.plane); + drm_mode_config_reset(dev); + + ret =3D drm_dev_register(dev, 0); + if (ret) + return ret; + + drm_client_setup(dev, NULL); + return 0; +} + +static void st7571_remove(struct i2c_client *client) +{ + struct st7571_device *st7571 =3D i2c_get_clientdata(client); + + drm_dev_unplug(&st7571->dev); + drm_atomic_helper_shutdown(&st7571->dev); +} + +static const struct of_device_id st7571_of_match[] =3D { + { .compatible =3D "sitronix,st7571-i2c" }, + {}, +}; +MODULE_DEVICE_TABLE(of, st7571_of_match); + + +static const struct i2c_device_id st7571_id[] =3D { + { "st7571-i2c", 0 }, + { } +}; +MODULE_DEVICE_TABLE(i2c, st7571_id); + +static struct i2c_driver st7571_i2c_driver =3D { + .driver =3D { + .name =3D "st7571-i2c", + .of_match_table =3D st7571_of_match, + }, + .probe =3D st7571_probe, + .remove =3D st7571_remove, + .id_table =3D st7571_id, +}; + +module_i2c_driver(st7571_i2c_driver); + +MODULE_AUTHOR("Marcus Folkesson "); +MODULE_DESCRIPTION("DRM Driver for Sitronix ST7571 LCD controller"); +MODULE_LICENSE("GPL"); --=20 2.48.1 From nobody Sun Feb 8 04:30:17 2026 Received: from mail-lj1-f176.google.com (mail-lj1-f176.google.com [209.85.208.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6F84823237B; Wed, 2 Apr 2025 06:12:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743574368; cv=none; b=jl6M314IK9tSXzQDV6NmiZXchMtySuZYdOLC+wqJut3M05mDoHo6d4315qH8Y5TsOPDU2VV5W2mhCSvIUWrW04c0nQGMCAlBhx5y9Fuc28hHA95jSPhs9NFjZ47v8c2V51HOMZp7gvk0mALqJmbIAvzDZbJZAXsonXnftEhQKRw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743574368; c=relaxed/simple; bh=dtSEtwC8H+CpvFv+jyq4hRv6iC0m6GDU67J6rIoLIGY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZF8Cuy0zXJEf1/HOId8jGSp95B/KbYr9SpDDp7VsGQVRqjTUwyfTSctp2DjGKRupkNoQonfwQsZEVvBhB6DqgyJH1yVojnFhqheOPFyP7nQWC+AuSCaOa6AMkmfW+mqUxvB0P0B81EDax73CYmaLn/8knKOiq7ZzWv7QnK8hBO0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=l20KAjft; arc=none smtp.client-ip=209.85.208.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="l20KAjft" Received: by mail-lj1-f176.google.com with SMTP id 38308e7fff4ca-30613802a04so64330081fa.2; Tue, 01 Apr 2025 23:12:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743574364; x=1744179164; 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=N5IKCpj0oMEBpJadgyoV7jDPfWfy4VMRLV22ZDS4/uw=; b=l20KAjftyp1YVogep0OVnKYKfqOvnhTY6hqbPrwMYHe5e8PnYnnAxch40aSGyc+Np3 UlDwQO5iDmTHvcB/5nD9O2vneDHowEeEivrl1NGtKRGhhcGMHpMmMYBgXwPYZfRtYUfE BMCSP7tEm83kAlYuBBTPhPSSmH7UaZe3iNU2JMvzBgJtPDFHYACvnD/IVGK0HXI78px8 VqoKxIny5+LoGjWbCnsyAa3V8PWXrnbUggDJvml0J8Ur4rzQ2RUWI3NJJcFfOxMVy6xZ h8sjmimlyFh++OvjaSiBDKlUH7OLaTdUbHqn634RuTNnz+sWocr0rZLDH4+wcftCyJKm lkDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743574364; x=1744179164; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=N5IKCpj0oMEBpJadgyoV7jDPfWfy4VMRLV22ZDS4/uw=; b=VsBX7Hscs/R3UTqI1vJb3Gb4N1FNwxPpR7ym6l3MvQ9z5sCLW/6WLQNGImfMJOBkoy 8+8waDm6hQdEnAY+jNXbXV+peqAT2llZIiHO63ZlDeD+6hEyHliWcwYIcK2TqJkZwH1n mg2vpMZO/dUy/HXoMXWmkz/Swya44wHnkR9kvK/LvgGrE0Bqw8QoQ8lf/MrpW1PGvK1U iK4UR25pyVmzF9EoCRDciDzctA3nCwFzfOZK9hWkxGxSF+TkTopUqQ7SULiP6PyEdJlc xp9fLfkH2AKRc+IwuQcXMAWRPk6Di3ackU0ToUph3THXKNZtDVjSw+NWTZ0n/c3dV7ry zPVQ== X-Forwarded-Encrypted: i=1; AJvYcCUVaRCEClR+u7PxO/jKFTWTGpe2Sf3pISgl2DSkfssoXDEbLHvuzCWrSdMDfMSe8uYxCktKqngrYSQcJjks@vger.kernel.org, AJvYcCWiLcZaJxQYXpzAf5y/CACk/oa5LeoTSwfN0gllY7JsNWfXpI04kkcehKa6AhFDSz+f6EqRzSXEfLCx@vger.kernel.org X-Gm-Message-State: AOJu0YytW+lsXm74TEkQIq1HWju6r+kTUa3ITcSqK7sIxKOdoKehxBIn 6h676mSVTtHwYh8RoR6/dulj7Of0vu3NH/UgKGHLM6EKpTQuyLUQ X-Gm-Gg: ASbGnctHgql5U6ffouxOPz5urVlmcMDxUSUoZmJFCwF7J5L+j58ens2HgoEGtr8Edbz tFjdKWCL+HUdkSxtqIkOq0cVGZdDSSHWeKHvUJ/Ez31RjspZMiYMoc5qU3LVBR4cH8d9Cn0PjVL g5R1pzK8Mgu6UOZkQ5NVl5MFo426hxdGD5sytZ1B4onCTvp1yiInil2OsU83zpK41Zwxlgf2LS+ r/01uEmMkeRL/0vfwKRAyqYdAqWpmgIiMsJgygeKgxNtT3zymXbwdBYwIuXadQfxJDb3j8Qr3eg tx75DQHNfL+0xBoNP8jJY2KZ1RW6eWd2EbEXvuRLzyU4aGFELPJXNLdZ2mvz59yVZWQAh2uGMYp U0rJ9bNh7gbXQ X-Google-Smtp-Source: AGHT+IE3Xek1eWBz2rPg/t6DOGrGPCI4yOiCOyocMpZtm9LdLXUZyNdRj/gglChvFsmeZjOHr95wtw== X-Received: by 2002:a2e:bd81:0:b0:30b:c3ce:ea1f with SMTP id 38308e7fff4ca-30ef90f9907mr3124251fa.15.1743574364342; Tue, 01 Apr 2025 23:12:44 -0700 (PDT) Received: from [192.168.1.11] (83-233-6-197.cust.bredband2.com. [83.233.6.197]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30dd2aa9118sm19336801fa.14.2025.04.01.23.12.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Apr 2025 23:12:43 -0700 (PDT) From: Marcus Folkesson Date: Wed, 02 Apr 2025 08:12:12 +0200 Subject: [PATCH 3/3] MAINTAINERS: add antry for Sitronix ST7571 LCD controller 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: <20250402-st7571-v1-3-351d6b9eeb4a@gmail.com> References: <20250402-st7571-v1-0-351d6b9eeb4a@gmail.com> In-Reply-To: <20250402-st7571-v1-0-351d6b9eeb4a@gmail.com> To: David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Marcus Folkesson X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=957; i=marcus.folkesson@gmail.com; h=from:subject:message-id; bh=dtSEtwC8H+CpvFv+jyq4hRv6iC0m6GDU67J6rIoLIGY=; b=owEBbQKS/ZANAwAIAYiATm9ZXVIyAcsmYgBn7NVRO6OWWtMvHUt6pKtvaDRkAxJB+E4FWveSD H7kL6SpjMmJAjMEAAEIAB0WIQQFUaLotmy1TWTBLGWIgE5vWV1SMgUCZ+zVUQAKCRCIgE5vWV1S Mp5eD/9A+/xujBrr5sGpXr7f1PH4ivOZCIFLSfbwEkx/HY65z2asgyJAnubDQMywXXS0C9Ka+L4 OTnlNtwpzkj6QTK4v8Tc1RrTTxB7LwlhAY503AQAYOM08b0uaLIXLtrczqD4eFkXhThnbkNSGYE X7Jnm+5P3dVDjMETJB0ZCREBzz3142pnA63FEBOKYLWbE9rUeVnQ/zpZHuG1hM3cdNO8wBLdaHM fMaBX0e17nWAZFRCTCVcMnDY0hdenx3Q14oolOWJdvByY/DMB/UYME15AVwWuTxh2ybwyT8qzqg wpGLpQ3z2jZEw4QMkBvPf65ya/3BSuElidSCb7d4v3WEtmb7sGOjsydlAnZsUjSARc2omG0Kuce vIWkbqMwQbI0S0oKDdAvFF8rrS+6CjKbK2p5cHagEoRSF4YGmPj00eCA1H1HOvdaN6UrKkT/nmO RW58J4mBTFkgndNRg3wGZnoz8jduoDu6ZDY3oil/3H5CAKJp0OWmVCjIsncgZclxwb0YMPqUeRH sjHZrZC2Okl2JxREG77x142l8nWjx+4osKxPX6z6/6Azcjg+qc8PUvQ1P7XLlJHzI3DPc5ucyF3 qzx53gR2RQeyqfZSByiQlSBXWExZaf/6/bkWrOgH3uQwIVRwD2dlhf+Ar8qXtxtpzepIyDB6r64 xYfPdEN4d5g1H4w== X-Developer-Key: i=marcus.folkesson@gmail.com; a=openpgp; fpr=AB91D46C7E0F6E6FB2AB640EC0FE25D598F6C127 Add MAINTAINERS entry for the Sitronix ST7571 dot matrix LCD controller. Signed-off-by: Marcus Folkesson --- MAINTAINERS | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 889bd4a59551c9bc125f94944a6e1c7e3ef2de83..00d19d45679f6d18a7e9c9e619b= 7642176b7ef95 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -7572,6 +7572,13 @@ T: git https://gitlab.freedesktop.org/drm/misc/kerne= l.git F: Documentation/devicetree/bindings/display/sitronix,st7586.txt F: drivers/gpu/drm/tiny/st7586.c =20 +DRM DRIVER FOR SITRONIX ST7571 PANELS +M: Marcus Folkesson +S: Maintained +T: git git://anongit.freedesktop.org/drm/drm-misc +F: Documentation/devicetree/bindings/display/sitronix,st7571-i2c.yaml +F: drivers/gpu/drm/tiny/st7571-i2c.c + DRM DRIVER FOR SITRONIX ST7701 PANELS M: Jagan Teki S: Maintained --=20 2.48.1