[{"id":3676225,"web_url":"http://patchwork.ozlabs.org/comment/3676225/","msgid":"<5d1dd70e-0300-4ca0-adb9-73f03cf4bf4d@oss.qualcomm.com>","list_archive_url":null,"date":"2026-04-12T01:06:51","subject":"Re: [PATCH v2 21/21] gpio: add GPIO controller found on Waveshare DSI\n TOUCH panels","submitter":{"id":90146,"url":"http://patchwork.ozlabs.org/api/people/90146/","name":"Jie Gan","email":"jie.gan@oss.qualcomm.com"},"content":"On 4/11/2026 8:10 PM, Dmitry Baryshkov wrote:\n> The Waveshare DSI TOUCH family of panels has separate on-board GPIO\n> controller, which controls power supplies to the panel and the touch\n> screen and provides reset pins for both the panel and the touchscreen.\n> Also it provides a simple PWM controller for panel backlight. Add\n> support for this GPIO controller.\n> \n> Tested-by: Riccardo Mereu <r.mereu@arduino.cc>\n> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>\n> ---\n>   drivers/gpio/Kconfig              |  10 ++\n>   drivers/gpio/Makefile             |   1 +\n>   drivers/gpio/gpio-waveshare-dsi.c | 208 ++++++++++++++++++++++++++++++++++++++\n>   3 files changed, 219 insertions(+)\n> \n> diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig\n> index dbe7c6e63eab..1b210c451151 100644\n> --- a/drivers/gpio/Kconfig\n> +++ b/drivers/gpio/Kconfig\n> @@ -805,6 +805,16 @@ config GPIO_VISCONTI\n>   \thelp\n>   \t  Say yes here to support GPIO on Tohisba Visconti.\n>   \n> +config GPIO_WAVESHARE_DSI_TOUCH\n> +\ttristate \"Waveshare GPIO controller for DSI panels\"\n> +\tdepends on BACKLIGHT_CLASS_DEVICE\n> +\tdepends on I2C\n> +\tselect REGMAP_I2C\n> +\thelp\n> +\t  Enable support for the GPIO and PWM controller found on Waveshare DSI\n> +\t  TOUCH panel kits. It provides GPIOs (used for regulator control and\n> +          resets) and backlight support.\n> +\n>   config GPIO_WCD934X\n>   \ttristate \"Qualcomm Technologies Inc WCD9340/WCD9341 GPIO controller driver\"\n>   \tdepends on MFD_WCD934X\n> diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile\n> index 20d4a57afdaa..75ce89fc3b93 100644\n> --- a/drivers/gpio/Makefile\n> +++ b/drivers/gpio/Makefile\n> @@ -207,6 +207,7 @@ obj-$(CONFIG_GPIO_VIRTUSER)\t\t+= gpio-virtuser.o\n>   obj-$(CONFIG_GPIO_VIRTIO)\t\t+= gpio-virtio.o\n>   obj-$(CONFIG_GPIO_VISCONTI)\t\t+= gpio-visconti.o\n>   obj-$(CONFIG_GPIO_VX855)\t\t+= gpio-vx855.o\n> +obj-$(CONFIG_GPIO_WAVESHARE_DSI_TOUCH)\t+= gpio-waveshare-dsi.o\n>   obj-$(CONFIG_GPIO_WCD934X)\t\t+= gpio-wcd934x.o\n>   obj-$(CONFIG_GPIO_WHISKEY_COVE)\t\t+= gpio-wcove.o\n>   obj-$(CONFIG_GPIO_WINBOND)\t\t+= gpio-winbond.o\n> diff --git a/drivers/gpio/gpio-waveshare-dsi.c b/drivers/gpio/gpio-waveshare-dsi.c\n> new file mode 100644\n> index 000000000000..f4a1d4d3b872\n> --- /dev/null\n> +++ b/drivers/gpio/gpio-waveshare-dsi.c\n> @@ -0,0 +1,208 @@\n> +// SPDX-License-Identifier: GPL-2.0\n> +/*\n> + * Copyright (C) 2024 Waveshare International Limited\n> + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n> + */\n> +\n> +#include <linux/backlight.h>\n> +#include <linux/err.h>\n> +#include <linux/fb.h>\n> +#include <linux/gpio/driver.h>\n> +#include <linux/module.h>\n> +#include <linux/of.h>\n> +#include <linux/regmap.h>\n> +\n> +/* I2C registers of the microcontroller. */\n> +#define REG_TP\t\t0x94\n> +#define REG_LCD\t\t0x95\n> +#define REG_PWM\t\t0x96\n> +#define REG_SIZE\t0x97\n> +#define REG_ID\t\t0x98\n> +#define REG_VERSION\t0x99\n> +\n> +enum {\n> +\tGPIO_AVDD = 0,\n> +\tGPIO_PANEL_RESET = 1,\n> +\tGPIO_BL_ENABLE = 2,\n> +\tGPIO_IOVCC = 4,\n> +\tGPIO_VCC = 8,\n> +\tGPIO_TS_RESET = 9,\n> +};\n> +\n> +#define NUM_GPIO 16\n> +\n> +struct waveshare_gpio {\n> +\tstruct mutex dir_lock;\n> +\tstruct mutex pwr_lock;\n> +\tstruct regmap *regmap;\n> +\tu16 poweron_state;\n> +\n> +\tstruct gpio_chip gc;\n> +};\n> +\n> +static const struct regmap_config waveshare_gpio_regmap_config = {\n> +\t.reg_bits = 8,\n> +\t.val_bits = 8,\n> +\t.max_register = REG_PWM,\n\n.max_register = REG_VERSION,\n\ncheck comments in probe\n\n> +};\n> +\n> +static int waveshare_gpio_get(struct waveshare_gpio *state, unsigned int offset)\n> +{\n> +\tu16 pwr_state;\n> +\n> +\tguard(mutex)(&state->pwr_lock);\n> +\tpwr_state = state->poweron_state & BIT(offset);\n> +\n> +\treturn !!pwr_state;\n> +}\n> +\n> +static int waveshare_gpio_set(struct waveshare_gpio *state, unsigned int offset, int value)\n> +{\n> +\tu16 last_val;\n> +\tint err;\n> +\n> +\tguard(mutex)(&state->pwr_lock);\n> +\n> +\tlast_val = state->poweron_state;\n> +\tif (value)\n> +\t\tlast_val |= BIT(offset);\n> +\telse\n> +\t\tlast_val &= ~BIT(offset);\n> +\n> +\tstate->poweron_state = last_val;\n> +\n> +\terr = regmap_write(state->regmap, REG_TP, last_val >> 8);\n> +\tif (!err)\n> +\t\terr = regmap_write(state->regmap, REG_LCD, last_val & 0xff);\n> +\n> +\treturn err;\n> +}\n> +\n> +static int waveshare_gpio_gpio_get_direction(struct gpio_chip *gc, unsigned int offset)\n> +{\n> +\treturn GPIO_LINE_DIRECTION_OUT;\n> +}\n> +\n> +static int waveshare_gpio_gpio_get(struct gpio_chip *gc, unsigned int offset)\n> +{\n> +\tstruct waveshare_gpio *state = gpiochip_get_data(gc);\n> +\n> +\treturn waveshare_gpio_get(state, offset);\n> +}\n> +\n> +static int waveshare_gpio_gpio_set(struct gpio_chip *gc, unsigned int offset, int value)\n> +{\n> +\tstruct waveshare_gpio *state = gpiochip_get_data(gc);\n> +\n> +\treturn waveshare_gpio_set(state, offset, value);\n> +}\n> +\n> +static int waveshare_gpio_update_status(struct backlight_device *bl)\n> +{\n> +\tstruct waveshare_gpio *state = bl_get_data(bl);\n> +\tint brightness = backlight_get_brightness(bl);\n> +\n> +\twaveshare_gpio_set(state, GPIO_BL_ENABLE, brightness);\n> +\n> +\treturn regmap_write(state->regmap, REG_PWM, brightness);\n> +}\n> +\n> +static const struct backlight_ops waveshare_gpio_bl = {\n> +\t.update_status = waveshare_gpio_update_status,\n> +};\n> +\n> +static int waveshare_gpio_probe(struct i2c_client *i2c)\n> +{\n> +\tstruct backlight_properties props = {};\n> +\tstruct waveshare_gpio *state;\n> +\tstruct device *dev = &i2c->dev;\n> +\tstruct backlight_device *bl;\n> +\tstruct regmap *regmap;\n> +\tunsigned int data;\n> +\tint ret;\n> +\n> +\tstate = devm_kzalloc(dev, sizeof(*state), GFP_KERNEL);\n> +\tif (!state)\n> +\t\treturn -ENOMEM;\n> +\n> +\tret = devm_mutex_init(dev, &state->dir_lock);\n> +\tif (ret)\n> +\t\treturn ret;\n> +\n> +\tret = devm_mutex_init(dev, &state->pwr_lock);\n> +\tif (ret)\n> +\t\treturn ret;\n> +\n> +\tregmap = devm_regmap_init_i2c(i2c, &waveshare_gpio_regmap_config);\n\nfor waveshare_gpio_regmap_config: .max_register = REG_PWM,\n\n> +\tif (IS_ERR(regmap))\n> +\t\treturn dev_err_probe(dev, PTR_ERR(regmap), \"Failed to allocate register map\\n\");\n> +\n> +\tstate->regmap = regmap;\n> +\ti2c_set_clientdata(i2c, state);\n> +\n> +\tret = regmap_read(regmap, REG_ID, &data);\n\nREG_ID here is 0x98,\n\nin _regmap_read -> regmap_readable will check the max_register, then \nreturn -EIO.\n\n> +\tif (ret < 0)\n> +\t\treturn dev_err_probe(dev, ret, \"Failed to read register\\n\");\n> +\n> +\tdev_dbg(dev, \"waveshare panel hw id = 0x%x\\n\", data);\n> +\n> +\tret = regmap_read(regmap, REG_SIZE, &data);\n\nditto.\n\nThanks,\nJie\n\n> +\tif (ret < 0)\n> +\t\treturn dev_err_probe(dev, ret, \"Failed to read register\\n\");\n> +\n> +\tdev_dbg(dev, \"waveshare panel size = %d\\n\", data);\n> +\n> +\tret = regmap_read(regmap, REG_VERSION, &data);\n> +\tif (ret < 0)\n> +\t\treturn dev_err_probe(dev, ret, \"Failed to read register\\n\");\n> +\n> +\tdev_dbg(dev, \"waveshare panel mcu version = 0x%x\\n\", data);\n> +\n> +\tret = waveshare_gpio_set(state, GPIO_TS_RESET, 1);\n> +\tif (ret)\n> +\t\treturn dev_err_probe(dev, ret, \"Failed to program GPIOs\\n\");\n> +\n> +\tmsleep(20);\n> +\n> +\tstate->gc.parent = dev;\n> +\tstate->gc.label = i2c->name;\n> +\tstate->gc.owner = THIS_MODULE;\n> +\tstate->gc.base = -1;\n> +\tstate->gc.ngpio = NUM_GPIO;\n> +\n> +\t/* it is output only */\n> +\tstate->gc.get = waveshare_gpio_gpio_get;\n> +\tstate->gc.set = waveshare_gpio_gpio_set;\n> +\tstate->gc.get_direction = waveshare_gpio_gpio_get_direction;\n> +\tstate->gc.can_sleep = true;\n> +\n> +\tret = devm_gpiochip_add_data(dev, &state->gc, state);\n> +\tif (ret)\n> +\t\treturn dev_err_probe(dev, ret, \"Failed to create gpiochip\\n\");\n> +\n> +\tprops.type = BACKLIGHT_RAW;\n> +\tprops.max_brightness = 255;\n> +\tprops.brightness = 255;\n> +\tbl = devm_backlight_device_register(dev, dev_name(dev), dev, state,\n> +\t\t\t\t\t    &waveshare_gpio_bl, &props);\n> +\treturn PTR_ERR_OR_ZERO(bl);\n> +}\n> +\n> +static const struct of_device_id waveshare_gpio_dt_ids[] = {\n> +\t{ .compatible = \"waveshare,dsi-touch-gpio\" },\n> +\t{},\n> +};\n> +MODULE_DEVICE_TABLE(of, waveshare_gpio_dt_ids);\n> +\n> +static struct i2c_driver waveshare_gpio_regulator_driver = {\n> +\t.driver = {\n> +\t\t.name = \"waveshare-regulator\",\n> +\t\t.of_match_table = of_match_ptr(waveshare_gpio_dt_ids),\n> +\t},\n> +\t.probe = waveshare_gpio_probe,\n> +};\n> +\n> +module_i2c_driver(waveshare_gpio_regulator_driver);\n> +\n> +MODULE_DESCRIPTION(\"GPIO controller driver for Waveshare DSI touch panels\");\n> +MODULE_LICENSE(\"GPL\");\n>","headers":{"Return-Path":"\n <linux-gpio+bounces-35059-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-gpio@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256\n header.s=qcppdkim1 header.b=bDK5SyAt;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.a=rsa-sha256 header.s=google header.b=eAAjnHbK;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-gpio+bounces-35059-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com\n header.b=\"bDK5SyAt\";\n\tdkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.b=\"eAAjnHbK\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=205.220.168.131","smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=oss.qualcomm.com"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4ftXSZ0nvBz1xtJ\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 12 Apr 2026 11:07:09 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 238CD30191BA\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 12 Apr 2026 01:07:05 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 29341261B71;\n\tSun, 12 Apr 2026 01:07:04 +0000 (UTC)","from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com\n [205.220.168.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 8080B22425B\n\tfor <linux-gpio@vger.kernel.org>; Sun, 12 Apr 2026 01:07:02 +0000 (UTC)","from pps.filterd (m0279867.ppops.net [127.0.0.1])\n\tby mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63BMtIw5710111\n\tfor <linux-gpio@vger.kernel.org>; Sun, 12 Apr 2026 01:07:01 GMT","from mail-pl1-f199.google.com (mail-pl1-f199.google.com\n [209.85.214.199])\n\tby mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dfeyysm1h-1\n\t(version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n\tfor <linux-gpio@vger.kernel.org>; Sun, 12 Apr 2026 01:07:01 +0000 (GMT)","by mail-pl1-f199.google.com with SMTP id\n d9443c01a7336-2b2ec17dc21so2278055ad.2\n        for <linux-gpio@vger.kernel.org>;\n Sat, 11 Apr 2026 18:07:01 -0700 (PDT)","from [10.133.33.83] (tpe-colo-wan-fw-bordernet.qualcomm.com.\n [103.229.16.4])\n        by smtp.gmail.com with ESMTPSA id\n d9443c01a7336-2b2d4f27048sm67859815ad.62.2026.04.11.18.06.53\n        (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n        Sat, 11 Apr 2026 18:06:59 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1775956023; cv=none;\n b=Lsm6P08qrZFSdoJc2uKsu4whM+5goP+PCaPSZ0UoggIM9W35YhLReIZ+zgbuA2Foq/qHd9QtrBuwQbJQhIlNdl+k2RMxwxIIW1cNwpaaIQJw8UCqSWCfyY24EBFdD+jQEUGjnOzQwxIpOoOCmtXErPcuY8eHrni4LW9ZPmNae14=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1775956023; c=relaxed/simple;\n\tbh=QDUhZKKvtr2X4IM8glTRV7TMMVZIqOuU1zNVoqUWBM0=;\n\th=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:\n\t In-Reply-To:Content-Type;\n b=BWB167xzgbOmiOITUFjM9zrirPUF+KO4jDcZi0SM+Bk0ujs43oQzn0jZX4ArqPbJiYMkqbwfzAAxkS/7azFXxfc9b1y8NiygHgnODhlYtOMZsk88HYj+XzSGuXQgi0LxppSvq5TSgkb73XA0bXHHsO2KQf4t5EubA1Hl2oTvnj8=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com;\n spf=pass smtp.mailfrom=oss.qualcomm.com;\n dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com\n header.b=bDK5SyAt;\n dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.b=eAAjnHbK; arc=none smtp.client-ip=205.220.168.131","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n\tcc:content-transfer-encoding:content-type:date:from:in-reply-to\n\t:message-id:mime-version:references:subject:to; s=qcppdkim1; bh=\n\tCj8Mv/ie2mU8MZuhnfvt5j6+NsZ00dsXgrPHeC4p2KE=; b=bDK5SyAtxhPNqro1\n\t6lhbERpWBuOxd727/SN+AagqeMkwhsq11T80PHXYmWmgYQIDidfkzGbKUlSuOgLh\n\t81a5IIkZlY5ym4OmJE7vaSgSrr2ydiB/SllrKh5wmxACnts2QAkaTJqr6RSzATL3\n\tW5fZzRyXSeL3+SvF3r8Sh0fU5beg+tSouU9erl/8TwRgdTePokqXb25DQJzB/Y8s\n\tdV+0fTP1rn8OorLmkcB3CyhAk9uB5GeSLYiKYvlOG2egFzhvaq2FHhgVqaphNKgS\n\t0+N5u6OPx4utNo2Lj+XlTSsHDykiu6OuglzlhYnpasQRvxZBdXB/XxvxCUpd4CXp\n\tKyrFVQ==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=oss.qualcomm.com; s=google; t=1775956021; x=1776560821;\n darn=vger.kernel.org;\n        h=content-transfer-encoding:in-reply-to:from:content-language\n         :references:cc:to:subject:user-agent:mime-version:date:message-id\n         :from:to:cc:subject:date:message-id:reply-to;\n        bh=Cj8Mv/ie2mU8MZuhnfvt5j6+NsZ00dsXgrPHeC4p2KE=;\n        b=eAAjnHbK0E2dnl4110m8G7lf4RyD4KCHQgzKLz6CC9tA75G7IJRQB52CEGcD2NEm07\n         VhC46xwyE9QHLX1f/zjz6/FuH4H39h9rvCGaVSlC1k6vyra2DJpsPJ4Md7C3PJeUub6X\n         ydGNiqXBO8nrPckmQ+JIIvvWZQyzdlhGgWJdBeprtawFxz3mCdRa6L+FN6YhrD+vA8wC\n         NoKSuOOPUl5tQCe1Q+rcWfvK6BoYZFmFAz00g0dCnrVYUZgzJ7sK+d51Xswu4npwgJ6Y\n         1blv70GiY5TaSV+nDLiH/WiPsSaphNCGYe670vydlfd9XQxuQtEEfWuhUc+hrZOXkd3n\n         W66w=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20251104; t=1775956021; x=1776560821;\n        h=content-transfer-encoding:in-reply-to:from:content-language\n         :references:cc:to:subject:user-agent:mime-version:date:message-id\n         :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n         :reply-to;\n        bh=Cj8Mv/ie2mU8MZuhnfvt5j6+NsZ00dsXgrPHeC4p2KE=;\n        b=jn4T9FoF6phGAzrW6e8xnSHaxvll7IIk6TtxiOF0NVrWLv6eZa12uWf8TMjdtU8xEx\n         38wEvSrtqVaMC//eqk2yBxDfdbuzLhFukM/tKPUXqPaPw88f6FqXfW/EuXt4/hBpCgWr\n         unsB4+dItYZexjPYvTOzkH1hbEDrK1sSjENM+2yz2WLn6DzWr1dekLZLumGhK2AQlsLo\n         xdUu66ez33vjOqLYTrDi25SDCvQPrF0/11UMdhvipbrJLMdHaDrzc30KX+RCK6XhoxVM\n         iXZT6nXV3aWBWqptBNONOacpd/5fLop8xSA8tg8vjnqDX0iPyzIgRhLfVxFIGfB94ZKE\n         I09Q==","X-Forwarded-Encrypted":"i=1;\n AFNElJ9/L9Kl2emGmMgUEAK3PccAqrrjgEskuX5Sq3R3JJvfoWYXwMMjjUBl7gqqW/nIXWe0zhJSWl22hrWN@vger.kernel.org","X-Gm-Message-State":"AOJu0YxzNIxIueNHKvXs1iBZr+hb7TXJGzZ9MdBcjW8u9d1IsGyzWSho\n\t80/vUPlrrGpSHfeeAtiDiUgaZVFEXNCoPmURVgfHH5Qagf68cdpBwlIvkZw2jXUan0XOpE0mPAi\n\tXNuJDj17jAC4VCPLgA6XHwlqEA0Po7Fwtn/N+HbD/ZC7UflFFzwI6fjDjvZLi3B7X","X-Gm-Gg":"AeBDieuRCJ+7T8OghjngKgPRzL4Vjla0O6AnXpfAWYljjkgoZBJqaoFS8sXLwVclInl\n\typOXmLmpc4FvYtkEtD7S06I1wETeRn0uxAD4rChgr6ZAXdr+dwwvOI5sTnWq8nX+Wr9f6jMxHr9\n\tt/qDnaQi7Ccjj0XaGTb/yE47At6ewiSS27biDCCZ6cmM2ZFC4C6Aj5fltJB9Rhs66ohITvaHgBg\n\trUCPdGwQL9s24TWbLZbbk9mko5xoAcS3bSWOLQ1ygEJ78JeI4mBCSPQRnJwKmWpf3a+ggxnMDyN\n\t3OENO4JfrFzcW6Etao4a089ANCWAdpV69Wg4CVBfWY4HEImeA01f4Ef0/h6w+nn2mvG67aHCWP6\n\tfcLTnyOYl0jbiFdgTQ2oaFdUob0oOuq3ChvsytCWfTTNAnyGzoYBkvteqCtlfl8zofjUq5v9Qqq\n\t6OmpD9N1BOhA==","X-Received":["by 2002:a17:902:a982:b0:2b0:445a:8c7b with SMTP id\n d9443c01a7336-2b2d59a0c3cmr64582125ad.15.1775956020871;\n        Sat, 11 Apr 2026 18:07:00 -0700 (PDT)","by 2002:a17:902:a982:b0:2b0:445a:8c7b with SMTP id\n d9443c01a7336-2b2d59a0c3cmr64581845ad.15.1775956020278;\n        Sat, 11 Apr 2026 18:07:00 -0700 (PDT)"],"Message-ID":"<5d1dd70e-0300-4ca0-adb9-73f03cf4bf4d@oss.qualcomm.com>","Date":"Sun, 12 Apr 2026 09:06:51 +0800","Precedence":"bulk","X-Mailing-List":"linux-gpio@vger.kernel.org","List-Id":"<linux-gpio.vger.kernel.org>","List-Subscribe":"<mailto:linux-gpio+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-gpio+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v2 21/21] gpio: add GPIO controller found on Waveshare DSI\n TOUCH panels","To":"Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,\n        Neil Armstrong <neil.armstrong@linaro.org>,\n        Jessica Zhang <jesszhan0024@gmail.com>,\n        David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,\n        Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,\n        Maxime Ripard <mripard@kernel.org>,\n        Thomas Zimmermann <tzimmermann@suse.de>,\n Rob Herring <robh@kernel.org>,\n        Krzysztof Kozlowski <krzk+dt@kernel.org>,\n        Conor Dooley <conor+dt@kernel.org>,\n        Cong Yang <yangcong5@huaqin.corp-partner.google.com>,\n        Ondrej Jirman <megi@xff.cz>,\n        Javier Martinez Canillas <javierm@redhat.com>,\n        Jagan Teki <jagan@edgeble.ai>, Liam Girdwood <lgirdwood@gmail.com>,\n        Mark Brown <broonie@kernel.org>, Linus Walleij <linusw@kernel.org>,\n        Bartosz Golaszewski <brgl@kernel.org>","Cc":"dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org,\n        linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org,\n        Riccardo Mereu <r.mereu@arduino.cc>","References":"<20260411-waveshare-dsi-touch-v2-0-75cdbeac5156@oss.qualcomm.com>\n <20260411-waveshare-dsi-touch-v2-21-75cdbeac5156@oss.qualcomm.com>","Content-Language":"en-US","From":"Jie Gan <jie.gan@oss.qualcomm.com>","In-Reply-To":"\n <20260411-waveshare-dsi-touch-v2-21-75cdbeac5156@oss.qualcomm.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","X-Proofpoint-GUID":"j3FcY8TlpOm_61YupUNfMUJJoElSxl-9","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDEyMDAwOCBTYWx0ZWRfXwy3ernMJYgR/\n kA9qn8CmX1ySzn89r4wpNBEq/NcP/SjEEN12GSyBE2FmFrCDj4OncRyzoevD3kgqF2Rh6+SkIOU\n f8/by8R3M8av3kLf0XGHp150f5SRrSu3o95Dhu3g+lUFtIeuU/g8ATiATrG/BPsmIZZx+69Co76\n FRRuYgl9P3tU6xFqMWgvS3Z8M/i+8bBvEx1jEGSZKBjN+t2hId5A2HlnR8Ut1vRdUHcyCsjXZvf\n BlAIaTGFOY5Z0kPk7aGXs72thINiPdF9JNQ5NyGdZGHJdXDFu7Wa5OTHlOzackptu457CNpXOI8\n wKj+shKYuUhnF1Y4SYMbwis8t1vo9+zYo18zJUneX3KP2byIVVcj1xQwmQRzKkqQ8TFbf19Jxhp\n 2iw/XwB6a63LWlGN4AyEdmskhM1fsbs+boJnoW5aauxRcTUF4lNPjPXWZnqrOKfuEYhce0/4nz8\n IxbgxX1BQ5OZHcK5HoA==","X-Authority-Analysis":"v=2.4 cv=FPQrAeos c=1 sm=1 tr=0 ts=69daf035 cx=c_pps\n a=JL+w9abYAAE89/QcEU+0QA==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17\n a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10\n a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22\n a=EUspDBNiAAAA:8 a=f_8IO1HHPxn9Zh0c9RAA:9 a=QEXdDO2ut3YA:10\n a=324X-CrmTo6CU4MGRt3R:22","X-Proofpoint-ORIG-GUID":"j3FcY8TlpOm_61YupUNfMUJJoElSxl-9","X-Proofpoint-Virus-Version":"vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-11_07,2026-04-09_02,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n phishscore=0 suspectscore=0 impostorscore=0 malwarescore=0 adultscore=0\n clxscore=1015 spamscore=0 priorityscore=1501 bulkscore=0 lowpriorityscore=0\n classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0\n reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604120008"}},{"id":3676328,"web_url":"http://patchwork.ozlabs.org/comment/3676328/","msgid":"<mb6qy4hlwqvhwon57nlfc2aaqtc55lbwj5fjclv6y54wyimuhr@5qks67lpakz4>","list_archive_url":null,"date":"2026-04-12T17:17:57","subject":"Re: [PATCH v2 21/21] gpio: add GPIO controller found on Waveshare\n DSI TOUCH panels","submitter":{"id":90483,"url":"http://patchwork.ozlabs.org/api/people/90483/","name":"Dmitry Baryshkov","email":"dmitry.baryshkov@oss.qualcomm.com"},"content":"On Sun, Apr 12, 2026 at 09:06:51AM +0800, Jie Gan wrote:\n> \n> \n> On 4/11/2026 8:10 PM, Dmitry Baryshkov wrote:\n> > The Waveshare DSI TOUCH family of panels has separate on-board GPIO\n> > controller, which controls power supplies to the panel and the touch\n> > screen and provides reset pins for both the panel and the touchscreen.\n> > Also it provides a simple PWM controller for panel backlight. Add\n> > support for this GPIO controller.\n> > \n> > Tested-by: Riccardo Mereu <r.mereu@arduino.cc>\n> > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>\n> > ---\n> >   drivers/gpio/Kconfig              |  10 ++\n> >   drivers/gpio/Makefile             |   1 +\n> >   drivers/gpio/gpio-waveshare-dsi.c | 208 ++++++++++++++++++++++++++++++++++++++\n> >   3 files changed, 219 insertions(+)\n> > \n> > diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig\n> > index dbe7c6e63eab..1b210c451151 100644\n> > --- a/drivers/gpio/Kconfig\n> > +++ b/drivers/gpio/Kconfig\n> > @@ -805,6 +805,16 @@ config GPIO_VISCONTI\n> >   \thelp\n> >   \t  Say yes here to support GPIO on Tohisba Visconti.\n> > +config GPIO_WAVESHARE_DSI_TOUCH\n> > +\ttristate \"Waveshare GPIO controller for DSI panels\"\n> > +\tdepends on BACKLIGHT_CLASS_DEVICE\n> > +\tdepends on I2C\n> > +\tselect REGMAP_I2C\n> > +\thelp\n> > +\t  Enable support for the GPIO and PWM controller found on Waveshare DSI\n> > +\t  TOUCH panel kits. It provides GPIOs (used for regulator control and\n> > +          resets) and backlight support.\n> > +\n> >   config GPIO_WCD934X\n> >   \ttristate \"Qualcomm Technologies Inc WCD9340/WCD9341 GPIO controller driver\"\n> >   \tdepends on MFD_WCD934X\n> > diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile\n> > index 20d4a57afdaa..75ce89fc3b93 100644\n> > --- a/drivers/gpio/Makefile\n> > +++ b/drivers/gpio/Makefile\n> > @@ -207,6 +207,7 @@ obj-$(CONFIG_GPIO_VIRTUSER)\t\t+= gpio-virtuser.o\n> >   obj-$(CONFIG_GPIO_VIRTIO)\t\t+= gpio-virtio.o\n> >   obj-$(CONFIG_GPIO_VISCONTI)\t\t+= gpio-visconti.o\n> >   obj-$(CONFIG_GPIO_VX855)\t\t+= gpio-vx855.o\n> > +obj-$(CONFIG_GPIO_WAVESHARE_DSI_TOUCH)\t+= gpio-waveshare-dsi.o\n> >   obj-$(CONFIG_GPIO_WCD934X)\t\t+= gpio-wcd934x.o\n> >   obj-$(CONFIG_GPIO_WHISKEY_COVE)\t\t+= gpio-wcove.o\n> >   obj-$(CONFIG_GPIO_WINBOND)\t\t+= gpio-winbond.o\n> > diff --git a/drivers/gpio/gpio-waveshare-dsi.c b/drivers/gpio/gpio-waveshare-dsi.c\n> > new file mode 100644\n> > index 000000000000..f4a1d4d3b872\n> > --- /dev/null\n> > +++ b/drivers/gpio/gpio-waveshare-dsi.c\n> > @@ -0,0 +1,208 @@\n> > +// SPDX-License-Identifier: GPL-2.0\n> > +/*\n> > + * Copyright (C) 2024 Waveshare International Limited\n> > + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n> > + */\n> > +\n> > +#include <linux/backlight.h>\n> > +#include <linux/err.h>\n> > +#include <linux/fb.h>\n> > +#include <linux/gpio/driver.h>\n> > +#include <linux/module.h>\n> > +#include <linux/of.h>\n> > +#include <linux/regmap.h>\n> > +\n> > +/* I2C registers of the microcontroller. */\n> > +#define REG_TP\t\t0x94\n> > +#define REG_LCD\t\t0x95\n> > +#define REG_PWM\t\t0x96\n> > +#define REG_SIZE\t0x97\n> > +#define REG_ID\t\t0x98\n> > +#define REG_VERSION\t0x99\n> > +\n> > +enum {\n> > +\tGPIO_AVDD = 0,\n> > +\tGPIO_PANEL_RESET = 1,\n> > +\tGPIO_BL_ENABLE = 2,\n> > +\tGPIO_IOVCC = 4,\n> > +\tGPIO_VCC = 8,\n> > +\tGPIO_TS_RESET = 9,\n> > +};\n> > +\n> > +#define NUM_GPIO 16\n> > +\n> > +struct waveshare_gpio {\n> > +\tstruct mutex dir_lock;\n> > +\tstruct mutex pwr_lock;\n> > +\tstruct regmap *regmap;\n> > +\tu16 poweron_state;\n> > +\n> > +\tstruct gpio_chip gc;\n> > +};\n> > +\n> > +static const struct regmap_config waveshare_gpio_regmap_config = {\n> > +\t.reg_bits = 8,\n> > +\t.val_bits = 8,\n> > +\t.max_register = REG_PWM,\n> \n> .max_register = REG_VERSION,\n> \n> check comments in probe\n\nYep, thanks (and for other comments too)!","headers":{"Return-Path":"\n <linux-gpio+bounces-35064-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-gpio@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256\n header.s=qcppdkim1 header.b=TXhNqKJu;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.a=rsa-sha256 header.s=google header.b=fb7F1rTZ;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-gpio+bounces-35064-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com\n header.b=\"TXhNqKJu\";\n\tdkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.b=\"fb7F1rTZ\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=205.220.168.131","smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=oss.qualcomm.com"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fty2m04j0z1yGg\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 13 Apr 2026 03:19:43 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 3D7F6301F48C\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 12 Apr 2026 17:18:05 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 99C2C342517;\n\tSun, 12 Apr 2026 17:18:04 +0000 (UTC)","from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com\n [205.220.168.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 40250340DAB\n\tfor <linux-gpio@vger.kernel.org>; Sun, 12 Apr 2026 17:18:03 +0000 (UTC)","from pps.filterd (m0279865.ppops.net [127.0.0.1])\n\tby mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63CE4cYJ3560487\n\tfor <linux-gpio@vger.kernel.org>; Sun, 12 Apr 2026 17:18:02 GMT","from mail-qt1-f200.google.com (mail-qt1-f200.google.com\n [209.85.160.200])\n\tby mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dffb0jprh-1\n\t(version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n\tfor <linux-gpio@vger.kernel.org>; Sun, 12 Apr 2026 17:18:02 +0000 (GMT)","by mail-qt1-f200.google.com with SMTP id\n d75a77b69052e-50b6f869676so67394501cf.2\n        for <linux-gpio@vger.kernel.org>;\n Sun, 12 Apr 2026 10:18:02 -0700 (PDT)","from umbar.lan\n (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi.\n [2001:14ba:a073:af00:264b:feff:fe8b:be8a])\n        by smtp.gmail.com with ESMTPSA id\n 2adb3069b0e04-5a3eee93264sm2063738e87.29.2026.04.12.10.17.59\n        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n        Sun, 12 Apr 2026 10:17:59 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776014284; cv=none;\n b=f0liW56C1639BKpbal29oXxt0jWNG6ypc6lSHQaG6AOIlZZVAIBPrfqqUGWTbUUsTVZayHEP9hYEy6liLhITjI/uidkhsnWNs3ZmSIMm9wCxjwMbmWaKJZAJBGwEbpbka6UOVuLlHb3eDgnQgcbMPNohmgUWPkG0aVqGeEDA5XI=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776014284; c=relaxed/simple;\n\tbh=/0IXeZLJtN9yg58h1wAvFw+ow3JGYqoePLVKo+DjFLM=;\n\th=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:\n\t Content-Type:Content-Disposition:In-Reply-To;\n b=FN/lVNWuqcIEn7MqiX7KX/WlNZEzp1a+AteCG9XZL1WcD3JjGuqeoCmCeUri90GBIHVv078IUvwPMX7xLq0Y8SKpjj7BUBuIhy9AON/RcdBxnI/QdO/nKBGaz9fCMuKmwBJEk0jzoRa8yc1gcRtEJehDhYeK8+IJmoiAKcIMpbE=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com;\n spf=pass smtp.mailfrom=oss.qualcomm.com;\n dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com\n header.b=TXhNqKJu;\n dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.b=fb7F1rTZ; arc=none smtp.client-ip=205.220.168.131","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n\tcc:content-type:date:from:in-reply-to:message-id:mime-version\n\t:references:subject:to; s=qcppdkim1; bh=awvj3JA9kyhP+O20XoYCNKRQ\n\ths00blktdD733kRwv78=; b=TXhNqKJuHoyRlvpafbZMF30GZ8EHAoH/FfLfQc6q\n\t1sqtm0N1eZ2KlFsMnRNI3tU8mBrlvZQFUdK6qdvLi5t4gMU3+jd/ou+zyRUlQBCq\n\t3IJsuM4xdmL+lCoGtpHvQGKWPu/RKKFqeF1w6IJvEczragNQmvKKrGx/ZS7khe0o\n\t7D7wPa1LdeeLJjrBoMnAHyB/k89WaPvff/qY/dfSntxTL9UK92Mvl7K2yt5LATTz\n\tsfA/g/c8EdwrZkOoOpoSxtgqYqO0lRADelK04aob/u8GeVQCRx7NFBChZj9MUrpC\n\tCvdJqJqD1l8OvsLlVQx9rgFFqZERRjODnSYTEMGMpOLxgQ==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=oss.qualcomm.com; s=google; t=1776014281; x=1776619081;\n darn=vger.kernel.org;\n        h=in-reply-to:content-disposition:mime-version:references:message-id\n         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;\n        bh=awvj3JA9kyhP+O20XoYCNKRQhs00blktdD733kRwv78=;\n        b=fb7F1rTZcfGuI/a57UBM7nnMEUVn3tJHwIvgGQAsq0hgdoTmhU71enMOYCzfcxedHw\n         k2m1MZiw8sEoeZneM52sR96SmZ8Dgc/XDoSwQXheeZf9sQ6IntpBvKdkEI2J2xazh1pw\n         YmCgkjujqNIK4pfSwclQxZGzppYSwgOlqNukxxaCEeRvo64EiwTIqHsRWwKVjrJZMu4q\n         /7cEWCPJ9fS67n4lrKLXQ3e9K77QsxOnxJJUsg9auO0llNixHfXZgB+wKGEke/p7qvqc\n         TsYB3wQzZ1cDzomhejIpBk93XMU2KS7eoqPpDKD6W7Za559LntSZGvtL7kMgpBs9lxX3\n         xe5w=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20251104; t=1776014281; x=1776619081;\n        h=in-reply-to:content-disposition:mime-version:references:message-id\n         :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc\n         :subject:date:message-id:reply-to;\n        bh=awvj3JA9kyhP+O20XoYCNKRQhs00blktdD733kRwv78=;\n        b=gzVemoFUpXqNqFDjcNzpiWK/Rdz7sH0+z6TUDhZygnXocr7TOs5Pp58veESnTaSLwB\n         UOKdj0Ajx1wNkVOkjuITd8W4IcL4VZrYFcjrg/B+XFsIR+3859QHiSgTrLKxw0JjCWDZ\n         R7V4xt2oG4GQ4oW4wbqVXS+iUxvpP11MlC7Xa1aZSJe+d0STjbJ9wxxvFyy3UFK3gJJz\n         D9evcxDjT3frRVu3kEQHJv2q8nkY9ZRWL3EL4Al+48OiCytJEUsu8lxIceho+OFL3hY8\n         ruB2JXQpzcndgOVeISJC1g8NgSFc0JfSM3/8ZXugKvm1Y141M1YcVbvdDn+pG5rk2VvQ\n         kg4Q==","X-Forwarded-Encrypted":"i=1;\n AJvYcCXWHS3CuRwl4WlioezYJeDuYJa0NxEltQLwvgSJ5n7IPlRRBy1pvLJvy9rhwwNJ5WyElBRkrQ80pYWm@vger.kernel.org","X-Gm-Message-State":"AOJu0YyFMPaCTWTmGbcn+bAPheMowr8zsxbo+0KWAOD0LkWTNfmKpQcY\n\tvWplpvJDsJTUbfeZ19XXk90cI3sH9QZlELWreF+wm3Njgi4gCxi8I2zJTzdQ5azRX2/vYfZFgqJ\n\tXirWk0xQQ/RR8ikkEPkP444MKak7DFuqrhMVlmUFglxeDyHbR1bBEqa1jpb/IsoME","X-Gm-Gg":"AeBDieuQylUrSuxAlzQ59trIF8hmR6FoFIsHHL9lLu4D24/ukPIreBqx5wBcXLUh2yx\n\tIJwspfPjguT3+1gILL3lizoNKzVtBcqlwYMw+6uizFPKKuMVWzyZBUUXR7FGulgPGQx8ms/Q5D8\n\t195MjuWnL1BiQvwcW9vbA6+zj6akdpivgM5w254voZovfzcx6XCbi9AexXrOrp5QrgH+jkCltn7\n\tFBB6u03ZXSVzFI9jAzT29cjshg006mPjJLeD4vOhNbqbW7rIrXHSDU7TtkQU8ouQPBeub9ADOIi\n\tdLlgsLeOV/jjj157pTUokfIgSNB8sKlpOuIA4SZIsLJfvKwFGTb8M2uvVEa9rgRbm6IsmW3kmYa\n\tQooYyKTqXsMpQ1ExYCPSXBiIVBJLme0ZXTS3hv/BbtKT1LPzfZE/+0ZQpck760jjHFzgYev4qLO\n\tmlGGbYhmzuOgO/lalGQ2GVaFpkHju1HJ7YfDk=","X-Received":["by 2002:a05:622a:a707:b0:50d:a466:6d11 with SMTP id\n d75a77b69052e-50dd5b77e0cmr129285521cf.33.1776014281323;\n        Sun, 12 Apr 2026 10:18:01 -0700 (PDT)","by 2002:a05:622a:a707:b0:50d:a466:6d11 with SMTP id\n d75a77b69052e-50dd5b77e0cmr129285111cf.33.1776014280832;\n        Sun, 12 Apr 2026 10:18:00 -0700 (PDT)"],"Date":"Sun, 12 Apr 2026 20:17:57 +0300","From":"Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>","To":"Jie Gan <jie.gan@oss.qualcomm.com>","Cc":"Neil Armstrong <neil.armstrong@linaro.org>,\n        Jessica Zhang <jesszhan0024@gmail.com>,\n        David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,\n        Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,\n        Maxime Ripard <mripard@kernel.org>,\n        Thomas Zimmermann <tzimmermann@suse.de>,\n Rob Herring <robh@kernel.org>,\n        Krzysztof Kozlowski <krzk+dt@kernel.org>,\n        Conor Dooley <conor+dt@kernel.org>,\n        Cong Yang <yangcong5@huaqin.corp-partner.google.com>,\n        Ondrej Jirman <megi@xff.cz>,\n        Javier Martinez Canillas <javierm@redhat.com>,\n        Jagan Teki <jagan@edgeble.ai>, Liam Girdwood <lgirdwood@gmail.com>,\n        Mark Brown <broonie@kernel.org>, Linus Walleij <linusw@kernel.org>,\n        Bartosz Golaszewski <brgl@kernel.org>,\n dri-devel@lists.freedesktop.org,\n        devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,\n        linux-gpio@vger.kernel.org, Riccardo Mereu <r.mereu@arduino.cc>","Subject":"Re: [PATCH v2 21/21] gpio: add GPIO controller found on Waveshare\n DSI TOUCH panels","Message-ID":"<mb6qy4hlwqvhwon57nlfc2aaqtc55lbwj5fjclv6y54wyimuhr@5qks67lpakz4>","References":"<20260411-waveshare-dsi-touch-v2-0-75cdbeac5156@oss.qualcomm.com>\n <20260411-waveshare-dsi-touch-v2-21-75cdbeac5156@oss.qualcomm.com>\n <5d1dd70e-0300-4ca0-adb9-73f03cf4bf4d@oss.qualcomm.com>","Precedence":"bulk","X-Mailing-List":"linux-gpio@vger.kernel.org","List-Id":"<linux-gpio.vger.kernel.org>","List-Subscribe":"<mailto:linux-gpio+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-gpio+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<5d1dd70e-0300-4ca0-adb9-73f03cf4bf4d@oss.qualcomm.com>","X-Authority-Analysis":"v=2.4 cv=YfmNIQRf c=1 sm=1 tr=0 ts=69dbd3ca cx=c_pps\n a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=kj9zAlcOel0A:10\n a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22\n a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8\n a=uOKmLFOxzNBE1KF2lgkA:9 a=CjuIK1q_8ugA:10 a=uxP6HrT_eTzRwkO_Te1X:22","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDEyMDE2OSBTYWx0ZWRfX10FLiVBvn1d4\n c9f5t6r5iq1w4dxcEY4L++kX8lmk6SvDUvH/KLVoyvrrUQN1UvKSC7oRZM7BIduIEhDkVUIU1lj\n k0+/g/hC2YXGO4eO8M5xjtmNbiqexPi1G188SsgcpkNcNMd4lt//yt6WkB5awtN+C8+HZ36jIzY\n G5pQLxyqkETL0pSZt/tUbNozG9xcx9ij82wc0GYD2thSNVkLAd2+R8T2F+yjPBfxq/e/dvivb+2\n MlAz59VEIFdSPH4Ql/7XwTAw/L9SDnwPWIBQwOQ0ZPJOMXkdiE+EhHpgV9ld2MB47Qrg3MdkYHD\n xzRsjOMw9/+1rHDlsN/Ey2vfS52Ld5zPphtVYxCtZ0rCb+DYkPjm/VBPX3b3i9JvbkHCAUuGJql\n cnhKbzZqadqGc10aXPDXjGP7jlCa7XM5wbMP+VCFcpQcj3xZKBrt3n2+tWABbxEg59wjHdQXljv\n ZHlFh+MpMBU1WZGzbSw==","X-Proofpoint-ORIG-GUID":"T4A073iQ62N-puqazBGy6AMIgMyj0qae","X-Proofpoint-GUID":"T4A073iQ62N-puqazBGy6AMIgMyj0qae","X-Proofpoint-Virus-Version":"vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-12_04,2026-04-09_02,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n lowpriorityscore=0 impostorscore=0 adultscore=0 phishscore=0 malwarescore=0\n spamscore=0 suspectscore=0 clxscore=1015 priorityscore=1501 bulkscore=0\n classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0\n reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604120169"}}]