From: Jeff LaBundy <jeff@labundy.com>
To: Neil Armstrong <neil.armstrong@linaro.org>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Conor Dooley <conor+dt@kernel.org>,
Bastien Nocera <hadess@hadess.net>,
Hans de Goede <hdegoede@redhat.com>,
Henrik Rydberg <rydberg@bitmath.org>,
linux-input@vger.kernel.org, linux-arm-msm@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH RFC 3/4] input: touchscreen: add I2C support for Goodix Berlin Touchscreen IC
Date: Sun, 11 Jun 2023 22:09:03 -0500 [thread overview]
Message-ID: <ZIaMT0ALwAoasSvu@nixie71> (raw)
In-Reply-To: <20230606-topic-goodix-berlin-upstream-initial-v1-3-4a0741b8aefd@linaro.org>
Hi Neil,
Excellent work; just a few nits on this particular instance.
On Tue, Jun 06, 2023 at 04:31:58PM +0200, Neil Armstrong wrote:
> Add initial support for the new Goodix "Berlin" touchscreen ICs
> over the I2C interface.
>
> This initial driver is derived from the Goodix goodix_ts_berlin
> available at [1] and [2] and only supports the GT9916 IC
> present on the Qualcomm SM8550 MTP & QRD touch panel.
>
> The current implementation only supports BerlinD, aka GT9916.
>
> [1] https://github.com/goodix/goodix_ts_berlin
> [2] https://git.codelinaro.org/clo/la/platform/vendor/opensource/touch-drivers
>
> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
> ---
> drivers/input/touchscreen/Kconfig | 14 +++++
> drivers/input/touchscreen/Makefile | 1 +
> drivers/input/touchscreen/goodix_berlin_i2c.c | 76 +++++++++++++++++++++++++++
> 3 files changed, 91 insertions(+)
>
> diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
> index 1a6f6f6da991..da6d5d75c42d 100644
> --- a/drivers/input/touchscreen/Kconfig
> +++ b/drivers/input/touchscreen/Kconfig
> @@ -421,6 +421,20 @@ config TOUCHSCREEN_GOODIX_BERLIN_CORE
> depends on REGMAP
> tristate
>
> +config TOUCHSCREEN_GOODIX_BERLIN_I2C
> + tristate "Goodix Berlin I2C touchscreen"
> + depends on I2C
> + depends on REGMAP_I2C
As you already depend upon REGMAP, I think you can simply select REGMAP_I2C
here instead of depending upon it as well.
> + select TOUCHSCREEN_GOODIX_BERLIN_CORE
> + help
> + Say Y here if you have the a touchscreen connected to your
> + system using the Goodix Berlin IC connection via I2C.
This language was a bit of a tongue-twister; perhaps it is better to say
"...if you have a Goodix Berlin IC connected to your system via I2C."
> +
> + If unsure, say N.
> +
> + To compile this driver as a module, choose M here: the
> + module will be called goodix_berlin_i2c.
> +
> config TOUCHSCREEN_HIDEEP
> tristate "HiDeep Touch IC"
> depends on I2C
> diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
> index 29cdb042e104..921a2da0c2be 100644
> --- a/drivers/input/touchscreen/Makefile
> +++ b/drivers/input/touchscreen/Makefile
> @@ -48,6 +48,7 @@ obj-$(CONFIG_TOUCHSCREEN_EXC3000) += exc3000.o
> obj-$(CONFIG_TOUCHSCREEN_FUJITSU) += fujitsu_ts.o
> obj-$(CONFIG_TOUCHSCREEN_GOODIX) += goodix_ts.o
> obj-$(CONFIG_TOUCHSCREEN_GOODIX_BERLIN_CORE) += goodix_berlin_core.o
> +obj-$(CONFIG_TOUCHSCREEN_GOODIX_BERLIN_I2C) += goodix_berlin_i2c.o
> obj-$(CONFIG_TOUCHSCREEN_HIDEEP) += hideep.o
> obj-$(CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX) += hynitron_cstxxx.o
> obj-$(CONFIG_TOUCHSCREEN_ILI210X) += ili210x.o
> diff --git a/drivers/input/touchscreen/goodix_berlin_i2c.c b/drivers/input/touchscreen/goodix_berlin_i2c.c
> new file mode 100644
> index 000000000000..fc32b8077287
> --- /dev/null
> +++ b/drivers/input/touchscreen/goodix_berlin_i2c.c
> @@ -0,0 +1,76 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Goodix Berlin Touchscreen Driver
> + *
> + * Copyright (C) 2020 - 2021 Goodix, Inc.
> + * Copyright (C) 2023 Linaro Ltd.
> + *
> + * Based on goodix_ts_berlin driver.
> + */
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/i2c.h>
> +#include <linux/regmap.h>
> +#include <asm/unaligned.h>
This last include does not seem to provide anything.
> +
> +#include "goodix_berlin.h"
> +
> +#define I2C_MAX_TRANSFER_SIZE 256
> +
> +static const struct regmap_config goodix_berlin_i2c_regmap_conf = {
> + .reg_bits = 32,
> + .val_bits = 8,
> + .max_raw_read = I2C_MAX_TRANSFER_SIZE,
> + .max_raw_write = I2C_MAX_TRANSFER_SIZE,
> +};
> +
> +static const struct input_id goodix_berlin_i2c_input_id = {
> + .bustype = BUS_I2C,
> + .vendor = 0x0416,
> + .product = 0x1001,
> +};
> +
> +static int goodix_berlin_i2c_probe(struct i2c_client *client)
> +{
> + struct regmap *map;
'regmap' tends to be more common than simply 'map'.
> +
> + map = devm_regmap_init_i2c(client, &goodix_berlin_i2c_regmap_conf);
> + if (IS_ERR(map))
> + return PTR_ERR(map);
> +
> + return goodix_berlin_probe(&client->dev, client->irq,
> + &goodix_berlin_i2c_input_id, map);
> +}
> +
> +static void goodix_berlin_i2c_remove(struct i2c_client *client)
> +{
> + goodix_berlin_remove(&client->dev);
> +}
> +
> +static const struct i2c_device_id goodix_berlin_i2c_id[] = {
> + { "gt9916", 0 },
> + { }
> +};
> +
> +MODULE_DEVICE_TABLE(i2c, goodix_berlin_i2c_id);
> +
> +static const struct of_device_id goodix_berlin_i2c_of_match[] = {
> + { .compatible = "goodix,gt9916", },
> + { },
No need for a trailing comma following the sentinel.
> +};
> +
> +static struct i2c_driver goodix_berlin_i2c_driver = {
> + .driver = {
> + .name = "goodix-berlin-i2c",
> + .of_match_table = goodix_berlin_i2c_of_match,
> + .pm = pm_sleep_ptr(&goodix_berlin_pm_ops),
> + },
> + .probe = goodix_berlin_i2c_probe,
> + .remove = goodix_berlin_i2c_remove,
> + .id_table = goodix_berlin_i2c_id,
> +};
> +module_i2c_driver(goodix_berlin_i2c_driver);
> +
> +MODULE_LICENSE("GPL");
> +MODULE_DESCRIPTION("Goodix Berlin I2C Touchscreen driver");
> +MODULE_AUTHOR("Neil Armstrong <neil.armstrong@linaro.org>");
>
> --
> 2.34.1
>
Kind regards,
Jeff LaBundy
next prev parent reply other threads:[~2023-06-12 3:11 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-06 14:31 [PATCH RFC 0/4] input: touchscreen: add initial support for Goodix Berlin touchscreen IC Neil Armstrong
2023-06-06 14:31 ` [PATCH RFC 1/4] dt-bindings: input: document Goodix Berlin Touchscreen IC Neil Armstrong
2023-06-07 8:35 ` Krzysztof Kozlowski
2023-06-14 22:28 ` Rob Herring
2023-06-06 14:31 ` [PATCH RFC 2/4] input: touchscreen: add core support for " Neil Armstrong
2023-06-12 4:45 ` Jeff LaBundy
2023-06-12 8:37 ` Neil Armstrong
2023-06-12 16:59 ` Jeff LaBundy
2023-06-06 14:31 ` [PATCH RFC 3/4] input: touchscreen: add I2C " Neil Armstrong
2023-06-06 22:10 ` kernel test robot
2023-06-07 3:11 ` kernel test robot
2023-06-12 3:09 ` Jeff LaBundy [this message]
2023-06-06 14:31 ` [PATCH RFC 4/4] input: touchscreen: add SPI " Neil Armstrong
2023-06-12 3:31 ` Jeff LaBundy
2023-06-12 12:01 ` Neil Armstrong
2023-06-12 17:07 ` Jeff LaBundy
2023-06-15 8:20 ` Neil Armstrong
2023-06-06 15:31 ` [PATCH RFC 0/4] input: touchscreen: add initial support for Goodix Berlin touchscreen IC Hans de Goede
2023-06-06 18:12 ` Neil Armstrong
2023-06-06 18:44 ` Dmitry Torokhov
2023-06-06 18:55 ` Neil Armstrong
2023-06-06 19:02 ` Dmitry Torokhov
2023-06-06 18:55 ` Hans de Goede
2023-06-19 7:06 ` Pavel Machek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZIaMT0ALwAoasSvu@nixie71 \
--to=jeff@labundy.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.torokhov@gmail.com \
--cc=hadess@hadess.net \
--cc=hdegoede@redhat.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=robh+dt@kernel.org \
--cc=rydberg@bitmath.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.