Skip to content

Commit 4436227

Browse files
superna9999dtor
authored andcommitted
Input: add core support for Goodix Berlin Touchscreen IC
Add initial support for the new Goodix "Berlin" touchscreen ICs. These touchscreen ICs support SPI, I2C and I3C interface, up to 10 finger touch, stylus and gestures events. 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. Support for advanced features like: - Firmware & config update - Stylus events - Gestures events - Previous revisions support (BerlinA or BerlinB) is not included in current version. The current support will work with currently flashed firmware and config, and bail out if firmware or config aren't flashed yet. [1] https://github.com/goodix/goodix_ts_berlin [2] https://git.codelinaro.org/clo/la/platform/vendor/opensource/touch-drivers Reviewed-by: Jeff LaBundy <jeff@labundy.com> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://lore.kernel.org/r/20240129-topic-goodix-berlin-upstream-initial-v15-2-6f7d096c0a0a@linaro.org Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
1 parent 9c81ef4 commit 4436227

File tree

4 files changed

+783
-0
lines changed

4 files changed

+783
-0
lines changed

drivers/input/touchscreen/Kconfig

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,9 @@ config TOUCHSCREEN_GOODIX
416416
To compile this driver as a module, choose M here: the
417417
module will be called goodix.
418418

419+
config TOUCHSCREEN_GOODIX_BERLIN_CORE
420+
tristate
421+
419422
config TOUCHSCREEN_HIDEEP
420423
tristate "HiDeep Touch IC"
421424
depends on I2C

drivers/input/touchscreen/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ obj-$(CONFIG_TOUCHSCREEN_EGALAX_SERIAL) += egalax_ts_serial.o
4747
obj-$(CONFIG_TOUCHSCREEN_EXC3000) += exc3000.o
4848
obj-$(CONFIG_TOUCHSCREEN_FUJITSU) += fujitsu_ts.o
4949
obj-$(CONFIG_TOUCHSCREEN_GOODIX) += goodix_ts.o
50+
obj-$(CONFIG_TOUCHSCREEN_GOODIX_BERLIN_CORE) += goodix_berlin_core.o
5051
obj-$(CONFIG_TOUCHSCREEN_HIDEEP) += hideep.o
5152
obj-$(CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX) += hynitron_cstxxx.o
5253
obj-$(CONFIG_TOUCHSCREEN_ILI210X) += ili210x.o
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/* SPDX-License-Identifier: GPL-2.0-or-later */
2+
/*
3+
* Goodix Touchscreen Driver
4+
* Copyright (C) 2020 - 2021 Goodix, Inc.
5+
* Copyright (C) 2023 Linaro Ltd.
6+
*
7+
* Based on goodix_berlin_berlin driver.
8+
*/
9+
10+
#ifndef __GOODIX_BERLIN_H_
11+
#define __GOODIX_BERLIN_H_
12+
13+
#include <linux/pm.h>
14+
15+
struct device;
16+
struct input_id;
17+
struct regmap;
18+
19+
int goodix_berlin_probe(struct device *dev, int irq, const struct input_id *id,
20+
struct regmap *regmap);
21+
22+
extern const struct dev_pm_ops goodix_berlin_pm_ops;
23+
24+
#endif

0 commit comments

Comments
 (0)